Mercurial:恢复文件

Mar*_*wis 12 mercurial

我想恢复在某些提交中已删除的文件,并以不同的名称恢复它,以便它共享历史记录.在颠覆中,我会这样做

svn cp src@REV dest
Run Code Online (Sandbox Code Playgroud)

即使用挂钩修订.Mercurial中的等价物是什么?

Bor*_*lid 7

我认为Mercurial没有内置的方法来做到这一点.但我认为你可以通过以下方式获得同样的效果:

hg up -C REV # Update to revision containing a copy of the file
<modify the file in question>
hg commit  # Create second head based on old revision
hg merge # Merge two heads into one
# Note: make sure to choose to have the file exist
hg commit
hg mv MYFILE MYNEWNAME
Run Code Online (Sandbox Code Playgroud)

这将使文件保留其所有旧历史记录,因为最佳Mercurial可以跟踪它.


Chr*_*ler 7

不只是(如果你hg remove在REV + 1中"src"):

hg revert -rREV src
hg status
A src
hg rename src dest
hg commit -m"restored src and renamed it to dest"
Run Code Online (Sandbox Code Playgroud)

工作?

编辑:我刚测试它,似乎没问题.实际上hg addsrc 不需要" ",因为revert正在处理这个问题.但是,如果您只执行一次提交而不是两次(如上面的代码中所示),hg将发出警告:

src尚未提交,因此不会为dest存储复制数据.

希望它会有所帮助.