0

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

4

2 回答 2

2

.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-20T19:05:41.480 回答
1

愚蠢而明显的方式

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

略有不同的版本:忽略除PATH/TO/configdirs 之外的所有内容(理论上可以使用Mercurial 中的Negative Lookahead,Git 中也存在不同名称的相同技术,AFAICR),在调试阶段hg-isignored 扩展( BitBucket 上的源代码)将非常有用 -对于 Mercurial 的正则表达式

更nice'n'easy方式

%REPO-ROOT使用at each创建存储库$HOME/module/submodule/config并忽略任何内容 (?)。将超级存储库中的所有小型存储库与 Git 的子模块|子树、Mercurial 的子存储库链接,或者仅在本地存储库中使用多个远程和分支(实时存储库的聚合)


最后说明

忘记 RCS(还有 CVS、Monotone、Bazaar、ClearCase、Rational Team Concert),不要买头痛

于 2015-10-20T19:15:27.770 回答