我有一个单人单文件夹 Mercurial 存储库。目录结构很简单:
P104
lecture_notes
files under version control live here
一段时间后,我意识到我想要在存储库中有两个目录,就像这样
P104
lecture_notes
files under version control live here (.hg is here)
homework
more files under version control
现在,如果我只是尝试将文件添加到存储库,则会失败:
br@ymir:~/P104/lecture_notes$ ll ..
total 16
drwxr-xr-x 4 br br 4096 2012-02-02 18:05 ./
drwxr-xr-x 4 br br 4096 2012-02-01 20:46 ../
drwxr-xr-x 2 br br 4096 2012-02-02 17:44 homework/
drwxr-xr-x 4 br br 4096 2012-02-02 18:06 lecture_notes/
br@ymir:~/P104/lecture_notes$ hg add ../homework/hw1_P104.tex
abort: ../homework/hw1_P104.tex not under root
我的第一个想法是在目录结构中克隆上一层存储库,将文件添加到克隆中,然后删除原始存储库。但即使克隆也失败了:
br@ymir:~/P104/2011/lecture_notes$ hg clone . ..
abort: destination '..' is not empty
所以问题是,除了在其他地方创建一个干净的存储库并手动复制文件之外,是否有一种类似 Mercurial 的方法可以做到这一点?
我喜欢 VonC 的解决方案,您无需移动.hg
文件夹。这是一个简单的解决方案。这是一个替代方案,您可以在其中do移动它,因此必须重命名更少的文件夹:
-
移动.hg
文件夹最多~/P104
$ mv ~/P104/lecture_notes/.hg ~/P104
从 Mercurial 的角度来看,您已将所有顶级文件移至lecture_notes
目录。也会突然出现新的未跟踪文件homework
folder.
-
让 Mercurial 找出重命名:
$ hg addremove
这将正确检测到以前是顶级文件的文件现在位于lecture_notes
目录。未跟踪(和未忽略)的文件homework
是刚刚添加的。
-
保存更改:
$ hg commit
总体“技巧”是工作副本中的文件是相对于.hg
目录。所以通过移动.hg
目录在文件系统层次结构中向上移动,我们有效地将工作副本文件在工作副本内的层次结构中向下移动。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)