Sup*_*ric 8 version-control mercurial
我有一个目录结构,如:
project_root
data/
src/
.hg/
utils/
math/
graphics/
...
README.txt
LICENCE.txt
Run Code Online (Sandbox Code Playgroud)
从.hg /的位置可以看出,只有src /处于Hg控制之下.我想将存储库根目录从src /移动到其父目录project_root,因此我也可以跟踪data /,README.txt和LICENCE.txt.
一个hacky方法是将所有内容移动到目录而不是移动.hg:
有没有更好的办法?我不能成为第一个遇到这个问题的人,而上述解决方案似乎过于复杂.
你应该试试hg convert.您将把现有的Mercurial仓库"转换"为新的仓库.您可以指定转换规则,在您的情况下,原始仓库中的所有文件都将转到src新仓库中的目录.然后您可以手动将hg add其他文件复制到新的仓库.
这样做的好处是,它不会反映为历史记录中的单独更改.可能的缺点是它会导致您的变更集ID重新生成,现有的克隆将无法再从新的仓库中提取.
你的计划很好。它可能看起来很复杂,但应该需要不到 20 分钟(最坏的情况)并且只发生一次。
第一步,当您移动被跟踪的文件时,您应该使用hg rename(alias hg move) 来移动它们,因为 Mercurial 会记住移动前后每个文件的内容。这将有助于将移动之前的文件更改与移动之后的新文件合并。当重命名/复制不伴随对同一变更集中的内容进行更改时效果最佳。
我建议在继续之前克隆实际的存储库(或复制整个项目目录)。