【问题标题】:How do I skip subversion revisions with hgsvn pull?如何使用 h svn pull 跳过颠覆修订?
【发布时间】:2011-03-14 01:19:16
【问题描述】:

我正在尝试使用 Mercurial 作为 Subversion 的前端,并且对保持所有分支等完好无损非常感兴趣,以便我可以看到常见的更改等。

但是,我所有的 subversion 存储库都为 mercurial 创建了相当大的问题(不幸的是,1.8 和 TortoiseHg 2.0,ppa 似乎已经删除了旧版本......)。这些问题五花八门,让人难以一一列举(或弄清楚)。

如何跳过 hg clonehg pull 抱怨的 svn 修订版?还是我只需要递归地获得越来越少的修订,直到获得成功的克隆?

另外,我尝试通过从 svn 导出补丁并将其应用到我的工作目录来解决此问题;发生完全相同的问题(但至少现在我有一些东西要看......)

我遇到的问题(但不是专门针对问题的主题...)

现有文件覆盖尝试:

hg init实现,设置svn url和hg pull

pulling from svn+http://subversion/src/...
[r5061] StephenK: Updated properties
/home/stephenk/hgsubversion/hgsubversion/wrappers.py:337: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
  ui.status('%s\n' % e.message)
This Subversion server is older than 1.4.0, and cannot satisfy replay requests.
In light of that, I'll fall back and do diffs, but it won't do as good a job. You should really upgrade your server.
[r5061] StephenK: Updated properties
file Synchronisation/stephenk.properties already exists
1 out of 1 hunks FAILED -- saving rejects to file Synchronisation/stephenk.properties.rej

一般 Hunk 问题:

hg clone实现

[r82] Louis: 
patching file src/main/.../Configuration.java
Hunk #1 FAILED at 10
Hunk #2 FAILED at 27
Hunk #3 FAILED at 81
3 out of 3 hunks FAILED -- saving rejects to file src/main/.../Configuration.java.rej

常见错误文字:

** unknown exception encountered, please report by visiting
**  http://mercurial.selenic.com/wiki/BugTracker
** Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) [GCC 4.4.3]
** Mercurial Distributed SCM (version 1.8)
** Extensions loaded: hgsubversion
Traceback (most recent call last):
  File "/usr/bin/hg", line 38, in <module>
    mercurial.dispatch.run()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 16, in run
    sys.exit(dispatch(sys.argv[1:]))
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 36, in dispatch
    return _runcatch(u, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 58, in _runcatch
    return _dispatch(ui, args)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 601, in _dispatch
    cmdpats, cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 406, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 655, in _runcommand
    return checkargs()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 609, in checkargs
    return cmdfunc()
  File "/usr/lib/pymodules/python2.6/mercurial/dispatch.py", line 598, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 433, in check
    return func(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 133, in wrap
    util.checksignature(origfn), *args, **kwargs)
  File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 433, in check
    return func(*args, **kwargs)
  File "/home/stephenk/hgsubversion/hgsubversion/wrappers.py", line 457, in clone
    orig(ui, source, dest, **opts)
  File "/usr/lib/pymodules/python2.6/mercurial/util.py", line 433, in check
    return func(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/mercurial/commands.py", line 825, in clone
    branch=opts.get('branch'))
  File "/usr/lib/pymodules/python2.6/mercurial/extensions.py", line 178, in wrap
    return wrapper(origfn, *args, **kwargs)
  File "/home/stephenk/hgsubversion/hgsubversion/wrappers.py", line 448, in hgclonewrapper
    data['srcrepo'], data['dstrepo'] = orig(ui, origsource, dest, **opts)
  File "/usr/lib/pymodules/python2.6/mercurial/hg.py", line 335, in clone
    dest_repo.clone(src_repo, heads=revs, stream=stream)
  File "/usr/lib/pymodules/python2.6/mercurial/localrepo.py", line 2014, in clone
    return self.pull(remote, heads)
  File "/home/stephenk/hgsubversion/hgsubversion/svnrepo.py", line 48, in wrapper
    return fn(self, *args, **opts)
  File "/home/stephenk/hgsubversion/hgsubversion/svnrepo.py", line 63, in pull
    return wrappers.pull(self, remote, heads, force)
  File "/home/stephenk/hgsubversion/hgsubversion/wrappers.py", line 325, in pull
    firstrun)
  File "/home/stephenk/hgsubversion/hgsubversion/stupid.py", line 592, in convert_rev
    ui, svn, meta, b, branches[b], r, parentctx)
  File "/home/stephenk/hgsubversion/hgsubversion/stupid.py", line 159, in diff_branchrev
    {}, strip=0)
  File "/usr/lib/pymodules/python2.6/mercurial/patch.py", line 1108, in applydiff
    eolmode=eolmode)
  File "/usr/lib/pymodules/python2.6/mercurial/patch.py", line 1135, in _applydiff
    rejects += closefile()
  File "/usr/lib/pymodules/python2.6/mercurial/patch.py", line 1122, in closefile
    current_file.write_rej()
  File "/usr/lib/pymodules/python2.6/mercurial/patch.py", line 519, in write_rej
    fp = self.opener(fname, 'w')
TypeError: 'NoneType' object is not callable

我在 ubuntu 上,真的很想有一个 ppa 来为我管理它,并且对这种互操作性感到沮丧。我在想我可能得试试 hg+git+svn 双桥之类的东西

【问题讨论】:

  • 您能否更具体地说明您遇到的问题类型?
  • 我已经添加了到目前为止我遇到的两个问题......如果你能简洁地回答它们(我已经“找到”修复,但没有一个容易遵循或保证工作...... .) 然后让我知道,我会提出另一个问题...
  • 看起来这可能是我们的 svn (1.3.2!) 存储库的问题:bitbucket.org/durin42/hgsubversion/issue/279/…。我们有望在本月底更新到 1.6...

标签: svn mercurial hgsubversion


【解决方案1】:

考虑将服务器升级到 1.4.x 或更高版本 - 事情应该会更好...

看起来(从堆栈跟踪)您在 diff+patch 代码中发现了一些错误,我们用于解决旧 svn 版本中缺乏重放的问题,但是如果没有测试就不可能知道问题出在哪里我们可以玩的 repo。

【讨论】:

  • 旧的 svn 服务器是问题所在;带回放的 SVN 1.6 很好。
【解决方案2】:

...今天它起作用了...也许我同时从 svn 执行两个 hg pull 操作?我很确定一个人会失败,但这是我目前能做的最好的事情......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    相关资源
    最近更新 更多