Как пропустить ревизию Subversion с помощью hgsvn pull? - PullRequest
1 голос
/ 14 марта 2011

Я пытаюсь использовать Mercurial в качестве внешнего интерфейса для Subversion, и очень заинтересован в том, чтобы все ветки и т. Д. Оставались неповрежденными, чтобы я мог видеть общие изменения и т. Д.

Тем не менее, все мои репозитории subversion создают довольно большие проблемы для Mercurial (1.8 с TortoiseHg 2.0, к сожалению, ppa, похоже, удалил старые ревизии ...). Проблемы разнообразны и вызывают слишком много раздражения, чтобы перечислять (или выяснять).

Как мне пропустить версию SVN, на которую жалуется hg clone или hg pull? Или мне просто нужно рекурсивно получать все меньше и меньше ревизий, пока я не получу успешный клон?

Также я попытался обойти это, экспортировав патч из 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 или что-то в этом роде

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

Рассмотрите возможность обновления сервера до версии 1.4.x или более поздней - все должно работать намного лучше, чем ...

Выглядит (из трассировки стека), что вы нашли некоторые ошибки в патче diff +код, который мы используем, чтобы обойти отсутствие воспроизведения в старых версиях SVN, но невозможно понять, в чем проблема, без тестового репо, с которым мы можем играть.

0 голосов
/ 15 марта 2011

... и сегодня это работает ... Возможно, я делал две hg pull операции из svn одновременно?Я почти уверен, что один из них провалится, но это лучшее, что я могу сделать сейчас ...

...