Mercurial奇怪的hg init问题

时间:2011-01-09 21:53:59

标签: mercurial

Mercurial中的新功能。我注意到我的hg init无法正常工作。让我解释一下:

当我给这个命令hg clone https://www.mercurial-scm.org/repo/hello my-hello时,my_hello文件夹是用所有(2)文件创建的。然后我从my_hello中删除.hg文件夹。然后我用hg init初始化这个文件夹。它被初始化了。

但是在初始化之后,当我用hg clone my_hello new_my_hello克隆文件夹时,它只是在new_my_hello文件夹中创建.hg文件夹,而不是它应该的其他文件。

并且所有尝试我都遇到了这个问题。请帮忙。

我正在使用Windows 7 64位。我的Mercurial也是64位。

2 个答案:

答案 0 :(得分:4)

简短回答:未跟踪的文件不包含在克隆中。

如果您先删除.hg元数据目录并重新初始化新目录,它将不再跟踪任何文件;默认情况下,init上没有添加任何文件。因此,当您克隆它时,您将获得一个空存储库的克隆。像这样:

$ hg clone https://www.mercurial-scm.org/repo/hello my-hello
requesting all changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd my-hello
$ ls
Makefile  hello.c
$ hg st --all
C Makefile
C hello.c

上面是没有修改文件的repo的完全正常副本。

$ rm -rf .hg
$ hg st --all
abort: There is no Mercurial repository here (.hg not found)!

现在再也没有回购。

$ hg init
$ hg st --all
? Makefile
? hello.c

现在有一个,但它不再跟踪文件,因此是“?”。

$ hg clone . ../new-my-hello
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ../new-my-hello
$ hg st --all
$ ls

克隆不包含未跟踪的文件,因此不会克隆“my-hello”中的两个“?-files”。

答案 1 :(得分:3)

您可以通过运行已经完成的hg init来创建存储库。但是,您尚未开始跟踪任何文件。为此,您必须明确告诉hg使用hg add file1 file2 ...跟踪哪些文件。或者,您可以通过调用hg addremove添加所有文件。在此之后,您需要通过hg commit将这些文件添加到存储库中。

在原始仓库中执行此操作后,在new_my_hello中,您可以通过调用hg pull从my_hello中提取这些更改,并且为了获取这些文件的最新版本,请使用{ {1}}。

所有这一切,我确信删除现有的.hg文件夹不会有任何好处。

学习hg工作流程的一个非常有用的资源,可以更好地解释为什么你没有得到你认为你得到的是http://hginit.com