将主目录置于源代码管理下(hg)

时间:2011-02-04 17:39:56

标签: mercurial home-directory

有一段时间我只在源代码控制下使用了我的代码,但是我觉得将我的东西放在我的.vim文件夹中以及其他东西放在回购中会很酷。 (我显然不会将所有内容存储在我的仓库中,只包含各种配置文件,我的src目录,以及其他一些内容)

我能够设置一个repo,然后将其推送到我的服务器,我可以从其他计算机访问它,但我无法将其克隆到我的其他计算机上。当我尝试克隆它时失败,因为主目录不为空。有没有办法在这里做我想要的?

3 个答案:

答案 0 :(得分:8)

由于我的计算机之间的版本化文件是相同的,我所做的是:

~$ hg clone ssh://myserver/hg/dotfiles mydotfiles
~$ mv mydotfiles/.hg .
~$ rm -rf mydotfiles

就是这样,现在您的主文件夹处于版本控制之下,但当然如果您的点文件在计算机之间不相同,则必须对其进行一些操作。

由于我只想对某些文件进行版本而不是我的主文件夹下的所有文件,我在~/.hgignore

中有这个简单的规则
# This .hgignore is for the dotfiles repository only,
# the rest of my HG repositories use the file
# .hgignore_global as referenced by [ui]'s ignore setting.

syntax:glob
*

这样,当我执行hg status并且只看到我在版本控制下已经修改过的那些文件时,我没有得到文件的海洋。

但是因为我想在另一个hg存储库中工作时看到未版本控制的文件,我在~/.hgrc文件中有这个

[ui]
ignore=/home/gajon/.hgignore_global

~/.hgignore_global包含一些常见瞬态文件的过滤器:

syntax: glob
*.pyc
*~
.*.swp
.svn*
*.svn*
*.fasl

syntax: regexp
^\.pc/

答案 1 :(得分:1)

假设你有 proj1 proj2 proj1 是您想要克隆到 proj2 的mercurial repo,但 proj2 已经包含文件。

试试这个:

hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip

答案 2 :(得分:0)

在已存在的其他目录中,您可以hg inithg add您想要的内容,hg commit来自中央仓库的hg pull,并处理结果合并。