我可能找错了这个工具,但是我有一个系统,它在多个服务器上配置如下:$HOME/module/submodule/{bin,config,log,tmp}。我想把源代码管理添加到所有的config目录,而不是其他目录(特别是log!)。我猜我可以将git指向$HOME,并使用.gitignore来排除我不感兴趣的所有东西,但新模块可以不时地添加,这意味着许多我想立即排除的东西。有什么想法吗?我是不是漏掉了什么明显的东西?顺便说一句,我没有和git结婚,我会接受任何满足我需求的系统。一个中央变更存储库会很好,但不是必需的;我只是想要一种回滚错误的方法,并添加一些变更跟踪。
发布于 2015-10-21 03:05:41
.gitignore是一种非常强大的方法。
如果您希望将来也排除所有内容,并且不自动添加目录或文件,但已存在一些目录,则可以使用*模式和!前缀。
它遵循一个放在根目录中的.gitignore的示例:
# exclude files in the root dir
/*
# exclude dirs in the root for
/**/
# include back the dirs below mentioned
!/bin/
!/config/
!/tmp/请注意。对不起,我不在我的笔记本电脑上,我不能尝试它,所以我正在写我的头脑中的例子。有关详细信息,请查看文档。
发布于 2015-10-21 03:15:28
哑巴和显而易见的方式
在$HOME上使用%REPO-ROOT创建存储库(如您所想),在存储库中添加任何内容之前,忽略(语法依赖于VCS),手动仅将需要的文件添加到存储库中
略有不同的版本:忽略除PATH/TO/config目录之外的所有目录(理论上可以在Mercurial中使用Negative Lookahead,在Git中也存在不同名称的相同技术,AFAICR),在调试阶段hg-isignored extension (BitBucket上的source)将非常有用-对于Mercurial的正则表达式
更好更简单的方式
在每个$HOME/module/submodule/config上使用%REPO-ROOT创建存储库,并且不忽略任何内容(?)。将超级存储库中的所有小存储库与Git的子模块|子树、Mercurial的子存储库链接,或者只使用本地存储库中的多个远程和分支(实时存储库的聚合)
结束语
忘记RCS (还有CVS、Monotone、Bazaar、ClearCase、Rational Team Concert),不要买头痛的东西
https://stackoverflow.com/questions/33241423
复制相似问题