将主目录放置在源代码控制(hg)下

11

我之前只把我的代码放入了源代码控制系统中,但后来我决定把存放在我的.vim文件夹中的一些东西和其他文件一起放到版本库里(当然并不是全部都要放进去,只有各种配置文件、src目录和可能的其它少数文件)。

我已经成功地设置好了版本库,并将其推送到了可以从其他计算机访问的服务器上,但是我无法将其克隆到其他计算机上。当我尝试进行克隆时,因为家目录不为空而失败。这里有没有办法实现我的需求呢?

3个回答

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命令时就不会看到一大堆文件,而只会看到那些被修改且已经纳入版本控制的文件。

但是,当我在另一个Mercurial代码库中工作时,我希望能够看到未加入版本控制的文件,因此我将以下内容添加到我的~/.hgrc文件中:

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

~/.hgignore_global 包含一些用于常见临时文件的过滤器:

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

syntax: regexp
^\.pc/

2
另一种选择是执行 'hg init' 和 'hg pull' 而不是克隆。 - Ry4an Brase
Ry4an,你是正确的。这可能更合适;没有必要创建一个充满文件的文件夹,然后再用 rm -rf 删除它。谢谢! - Jorge Gajon

1
假设你有proj1proj2proj1是一个mercurial仓库,你想要克隆到proj2,但是proj2已经有文件了。
试试这个方法:
hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip

您可以省略最后一个命令的 -r tip 选项 - update 命令默认采用 tip 版本。 - Oben Sonne

0
在已经存在的其他目录中,您可以使用hg init初始化,hg add添加您想要的内容,hg commit提交更改,从中央仓库hg pull拉取并处理合并结果。

3
你试过这个吗?只有在强制拉取的情况下才能起作用。就个人而言,我认为“复制.hg目录”是一个更加“干净”的答案。 - Mikezx6r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接