ev-*_*-br 6 version-control mercurial directory-structure
我有一个单人单文件夹mercurial存储库.目录结构很简单:
P104
lecture_notes
files under version control live here
Run Code Online (Sandbox Code Playgroud)
过了一会儿,我意识到我想在存储库中有两个目录,就像这样
P104
lecture_notes
files under version control live here (.hg is here)
homework
more files under version control
Run Code Online (Sandbox Code Playgroud)
现在,如果我只是尝试将文件添加到存储库,它将失败:
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
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是在目录结构中将repo克隆一级,将文件添加到克隆,并删除原始repo.但即使是克隆也失败了:
br@ymir:~/P104/2011/lecture_notes$ hg clone . ..
abort: destination '..' is not empty
Run Code Online (Sandbox Code Playgroud)
所以问题是,除了在其他地方创建一个干净的存储库并手动复制文件之外,是否还有Mercurial-ish方法?
我喜欢VonC的解决方案,你不移动.hg
文件夹.这是一个直接的解决方案.在这里你另一种做移动它,所以必须重命名较少的文件夹:
将.hg
文件夹向上移动到~/P104
$ mv ~/P104/lecture_notes/.hg ~/P104
Run Code Online (Sandbox Code Playgroud)
从Mercurial的角度来看,您将把所有顶级文件移动到一个lecture_notes
目录中.文件homework
夹中还会突然出现新的未跟踪文件.
让Mercurial找出重命名:
$ hg addremove
Run Code Online (Sandbox Code Playgroud)
这将正确检测到之前存在于顶级文件中的lecture_notes
文件.homework
刚刚添加了未跟踪(和未被忽略)的文件.
保存更改:
$ hg commit
Run Code Online (Sandbox Code Playgroud)整体"技巧"是工作副本中的文件相对于.hg
目录是可见的.因此,通过.hg
在文件系统层次结构中向上移动目录,我们可以有效地将工作副本文件向下移动到工作副本内的层次结构中.
如果您的 Mercurial 存储库的根目录位于 下~/P104/lecture_notes
,我宁愿:
lecture_notes
为P104lecture_notes
homework
及其文件hg add
一切这个想法是将.hg
存储库保留在原来的位置(~/P104/lecture_notes
重命名为~/P104/P104
)并重新组织该重命名的目录中的文件。
无需克隆。
归档时间: |
|
查看次数: |
3817 次 |
最近记录: |