有一段时间,我只是将我的代码置于源代码控制之下,但我认为将我的东西放在我的 .vim 文件夹中以及其他东西中的 repo 中会很酷。(我显然不会将所有内容存储在我的 repo 中,只是各种配置文件、我的 src 目录,也许还有其他一些东西)
我能够很好地设置一个 repo,然后将它推送到我的服务器,在那里我可以从我的其他计算机访问它,但我无法将它克隆到我的其他计算机。当我尝试克隆它时,它失败了,因为主目录不是空的。有没有办法在这里做我想做的事?
有一段时间,我只是将我的代码置于源代码控制之下,但我认为将我的东西放在我的 .vim 文件夹中以及其他东西中的 repo 中会很酷。(我显然不会将所有内容存储在我的 repo 中,只是各种配置文件、我的 src 目录,也许还有其他一些东西)
我能够很好地设置一个 repo,然后将它推送到我的服务器,在那里我可以从我的其他计算机访问它,但我无法将它克隆到我的其他计算机。当我尝试克隆它时,它失败了,因为主目录不是空的。有没有办法在这里做我想做的事?
由于我的计算机之间的版本控制文件是相同的,我所做的是:
~$ 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/
假设您有proj1和proj2。proj1是您要克隆到proj2的 mercurial 存储库,但proj2中已经有文件。
尝试这个:
hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip
在已经存在的其他目录中,您可以从hg init
中央hg add
存储库中获取所需的内容,并处理生成的合并。hg commit
hg pull