首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >破碎的Mercurial Repo

破碎的Mercurial Repo
EN

Stack Overflow用户
提问于 2013-07-19 23:35:41
回答 1查看 176关注 0票数 0

我在我的根目录上执行了一个revursive sed,当我尝试提交hg,或者使用hg执行除hg --help之外的任何操作时,我得到了堆栈跟踪。当我执行sed时,我错误地认为.hg目录是写保护的。

存储库位于我的机器的本地。

有没有办法恢复我的changelog或提交评论?我在.hg目录中找到一个名为00changelog.i的文件,但它是一个无法执行的二进制文件。

sed命令:

代码语言:javascript
复制
find . -type f -exec sed -i.bak "s/sim-config.h/config.h/g" {} \;
find . -type f -exec sed -i.bak "s/av-config.h/config.h/g" {} \;

堆栈跟踪:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/bin/hg", line 27, in <module>
    mercurial.dispatch.run()
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 30, in dispatch
    return _runcatch(u, args)
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 50, in _runcatch
    return _dispatch(ui, args)
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 470, in _dispatch
    return runcommand(lui, repo, cmd, fullargs, ui, options, d)
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 340, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 521, in _runcommand
    return checkargs()
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 475, in checkargs
return cmdfunc()
  File "/usr/lib/python2.6/site-packages/mercurial/dispatch.py", line 469, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/python2.6/site-packages/mercurial/util.py", line 401, in check
    return func(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/mercurial/commands.py", line 712, in commit
    node = cmdutil.commit(ui, repo, commitfunc, pats, opts)
  File "/usr/lib/python2.6/site-packages/mercurial/cmdutil.py", line 1151, in commit
    return commitfunc(ui, repo, message, match(repo, pats, opts), opts)
  File "/usr/lib/python2.6/site-packages/mercurial/commands.py", line 710, in commitfunc
    editor=e, extra=extra)
  File "/usr/lib/python2.6/site-packages/mercurial/localrepo.py", line 787, in commit
    changes = self.status(match=match, clean=force)
  File "/usr/lib/python2.6/site-packages/mercurial/localrepo.py", line 1015, in status
    listclean, listunknown)
  File "/usr/lib/python2.6/site-packages/mercurial/dirstate.py", line 614, in status
    dmap = self._map
  File "/usr/lib/python2.6/site-packages/mercurial/util.py", line 156, in __get__
    result = self.func(obj)
  File "/usr/lib/python2.6/site-packages/mercurial/dirstate.py", line 58, in _map
    self._read()
  File "/usr/lib/python2.6/site-packages/mercurial/dirstate.py", line 228, in _read
    p = parsers.parse_dirstate(self._map, self._copymap, st)
EN

回答 1

Stack Overflow用户

发布于 2013-07-20 00:15:27

如果您没有可以替换.hg克隆的上游源,这可能取决于文件的混乱程度。然而,正如你注意到的,Mercurial在内部以二进制格式存储文件,这将使手动修复变得更加困难。

您可能没有使用sed -i.bak进行就地备份(这将使恢复变得容易)。

你可以这样做:

代码语言:javascript
复制
find .hg -mmin -60 -print

查看哪些文件在过去(比方说) 60分钟内被修改。也许修改的内容不多,您可以找到一些方法来逆转sed命令对该文件的影响(但如果您运行/foo/d之类的程序,这是不可能的)。

将来,在http://bitbucket.org/上注册一个免费帐户可能是值得的,它将为您提供免费的私人存储库托管和一个很好的备份位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17750040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档