2015-10-20 43 views
0

我可能正在寻找这方面的错误工具,但我有一个系统配置如下:$ HOME/module/submodule/{bin,config,log,tmp},在多台服务器上。我想将源代码控制添加到所有的配置目录中,而不是其他的(特别是日志!)。我猜测我可以将git指向$ HOME并使用.gitignore来排除我不感兴趣的所有内容,但是新模块可能会不时添加,这意味着我想立即排除很多内容。有任何想法吗?我错过了明显的东西吗?顺便说一句,我没有结婚,我会接受任何满足我需求的系统。一个中央变更库会很好,但不是必需的;我只想要一种方法来回滚错误,并添加一些更改跟踪。如何仅将版本跟踪器用于某些子目录?

+0

Git没有工作,汞看起来不太可能(但还没有真正测试过)。我可能需要咬紧牙关,并为所有子模块目录添加.git /和.gitignore。不如我想要的漂亮...... – samwyse

回答

2

.gitignore是一个非常强大的方法来做到这一点。

如果您希望将来也排除所有内容,并且没有自动添加目录或文件,但已经有几个目录,则可以使用*格式和!前缀。

它遵循.gitignore的例子就摆在你的根目录下:

# exclude files in the root dir 
/* 
# exclude dirs in the root for 
/**/ 
# include back the dirs below mentioned 
!/bin/ 
!/config/ 
!/tmp/ 

注意。对不起,但我不在我的笔记本电脑上,我无法尝试它,所以我正在写这个例子。查看文档的任何细节。

+0

不幸的是,“如果排除该文件的父目录,则不可能重新包含文件。”所以/ ** /不包括配置,后面的行将不会返回。显然,也不会对整个路径进行硬编码,例如我试过的!/ module1/subdir1/config/* 。 – samwyse

+0

对不起,如果我迟到了,我刚刚尝试了答案中提出的解决方案,它完美地工作。你尝试过吗?可能是因为你的* .gitignore *文件有问题吗?事实是,您要包含的文件的父目录不会被排除,因为您通过以'!'开头的行重新包含它们,所以您的评论没有多大意义。 – skypjack

1

阿呆和明显的方式

$HOME创建%REPO-ROOT库(你认为),所有文件在回购加什么之前(语法VCS依赖)忽略,用手只添加需要的文件回购

略有不同的版本:忽略除PATH/TO/config目录以外的所有目录(理论上可以在Mercurial中使用Negative Lookahead,同样的技术在不同的名称下也存在于Git中,AFAICR)o ñ调试阶段hg-isignored extensionsource上到位桶),将是非常有用的 - 对Mercurial的正则表达式

更多nice'n'easy方式

在每个$HOME/module/submodule/config创建%REPO-ROOT库和忽略什么(?)。 Link在超回购所有小型回购与Git的子模块|子树,Mercurial的subrepos或者只是使用多个遥控器和分支机构在本地回购(LIVE储存库的集合)


最后说明

忘掉RCS(也是CVS,Monotone,Bazaar,ClearCase,Rational Team Concert),不要买头疼

相关问题