如何仅为某些子目录使用版本跟踪器?

时间:2015-10-20 16:02:57

标签: git version-control mercurial rcs

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

2 个答案:

答案 0 :(得分:2)

.gitignore是一种非常强大的方法。

如果您希望将来也排除所有内容并且没有自动添加目录或文件,但已经存在一些目录,则可以使用$StopExisting = New-ScheduledTaskSettingsSet $StopExisting.CimInstanceProperties['MultipleInstances'].Value=3 模式和*前缀。

它是一个放在根目录中的!的例子:

.gitignore

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

答案 1 :(得分:1)

愚蠢明显的方式

%REPO-ROOT创建$HOME存储库(如您所愿),在添加任何内容之前忽略所有文件(语法依赖于VCS)在repo中,手动添加所需文件到repo

略有不同的版本:忽略除PATH/TO/config dirs之外的所有版本(理论上可能在Mercurial中使用Negative Lookahead,在Git中也存在不同名称的相同技术,AFAICR),在调试阶段{{3 (BitBucket上的hg-isignored extension)非常有用 - 对于Mercurial的正则表达式

更好的'n'easy方式

在每个%REPO-ROOT创建一个$HOME/module/submodule/config的存储库,忽略任何内容(?)。链接超级仓库中的所有小回购与Git的子模块|子树,Mercurial的子版本或只在本地仓库中使用多个远程和分支(LIVE-repositories的聚合)

最后的注释

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