我决定重命名我家/爱好Python包中的一些目录(docto docs,testto tests,utilto utils),因为现在我已经考虑了更多,我觉得新名称更合适.我现在的一般想法是,如果容器以其内容命名,则其名称应为复数名词.
现在我已经为下一步做好准备,我hg commit想知道如何告诉Mercurial这些目录名称的变化.我是RCS软件的新手,并且只使用Mercurial几个月.当我运行hg status它时,显示这些目录中的所有文件都被删除并添加,所以我担心如果我只是这样做,hg addremove我将丢失这些目录中文件的所有更改历史记录,或者至少更改历史记录将变得支离破碎,无法追踪.我遇到过这个hg rename命令,但是文档只讨论它对单个文件的使用,而不是目录.
在进一步阅读Bryan O'Sullivan的"权威指南"后,似乎rename可以引用目录.
所以这就是我决定尝试的:
hg rename --after doc docs
hg rename --after test tests
hg rename --after util utils
hg status
hg addremove
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我这是否是在Mercurial中重命名目录的可接受和首选方法,如果没有,我该怎么做.
Nia*_* C. 39
由于您已经重命名了目录,因此这是完全正常的.(如果你让Mercurial为你重命名它们,它会为你节省一个手动步骤:hg rename doc docs等等,而不是自己动手,然后让Mercurial了解它).
如果您没有任何其他文件可以办理登机手续,则这hg addremove是多余的.查看输出,hg stat您应该只看到以'R'开头的行(for doc/*,test/*and util/*)和'A'(for docs/*等)
最后,不要忘记提交更改.
编辑:忘了说...用于hg log --follow跟踪重命名的变化.
小智 16
Mercurial没有目录概念; 它将所有内容(文件和目录)视为文件.另外,我通常不会手动重命名文件或目录; 我只是用
hg重命名旧名新名称
我建议你也这样做.
Mercurial提供重命名跟踪功能,这意味着mercurial可以跟踪已重命名的文件的完整历史记录.如果手动重命名,则不可能.
但是,由于您已手动重命名它们,因此需要使用--follow参数hg log以跟踪历史记录中的文件更改.
就我个人而言hg rename,它应该是首选的方法.