我之前只把我的代码放入了源代码控制系统中,但后来我决定把存放在我的.vim文件夹中的一些东西和其他文件一起放到版本库里(当然并不是全部都要放进去,只有各种配置文件、src目录和可能的其它少数文件)。
我已经成功地设置好了版本库,并将其推送到了可以从其他计算机访问的服务器上,但是我无法将其克隆到其他计算机上。当我尝试进行克隆时,因为家目录不为空而失败。这里有没有办法实现我的需求呢?
我之前只把我的代码放入了源代码控制系统中,但后来我决定把存放在我的.vim文件夹中的一些东西和其他文件一起放到版本库里(当然并不是全部都要放进去,只有各种配置文件、src目录和可能的其它少数文件)。
我已经成功地设置好了版本库,并将其推送到了可以从其他计算机访问的服务器上,但是我无法将其克隆到其他计算机上。当我尝试进行克隆时,因为家目录不为空而失败。这里有没有办法实现我的需求呢?
由于我电脑之间的版本文件相同,所以我所做的是:
~$ 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
命令时就不会看到一大堆文件,而只会看到那些被修改且已经纳入版本控制的文件。
但是,当我在另一个Mercurial代码库中工作时,我希望能够看到未加入版本控制的文件,因此我将以下内容添加到我的~/.hgrc
文件中:
[ui]
ignore=/home/gajon/.hgignore_global
而 ~/.hgignore_global
包含一些用于常见临时文件的过滤器:
syntax: glob
*.pyc
*~
.*.swp
.svn*
*.svn*
*.fasl
syntax: regexp
^\.pc/
hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip
-r tip
选项 - update 命令默认采用 tip 版本。 - Oben Sonnehg init
初始化,hg add
添加您想要的内容,hg commit
提交更改,从中央仓库hg pull
拉取并处理合并结果。
rm -rf
删除它。谢谢! - Jorge Gajon