Package: git-remote-hg
Version: 0.3-1
Severity: grave
Tags: patch
Justification: renders package unusable
When I pull from a mercurial origin I get the following error:
$ GIT_TRACE=1 git pull
16:56:41.648900 git.c:350 trace: built-in: git 'pull'
16:56:41.649394 run-command.c:336 trace: run_command: 'fetch'
'--update-head-ok'
16:56:41.649575 exec_cmd.c:120 trace: exec: 'git' 'fetch'
'--update-head-ok'
16:56:41.650293 git.c:350 trace: built-in: git 'fetch'
'--update-head-ok'
16:56:41.650947 run-command.c:336 trace: run_command: 'git-remote-hg'
'origin' 'ssh://hg@XXXXXXXXXXXXXXXXXX
16:56:41.722759 git.c:350 trace: built-in: git 'config' '--get'
'remote-hg.hg-git-compat'
16:56:41.724205 git.c:350 trace: built-in: git 'config' '--get'
'remote-hg.track-branches'
16:56:41.728526 git.c:350 trace: built-in: git 'config' '--get'
'remote-hg.insecure'
remote: X11 forwarding request failed on channel 0
searching for changes
no changes found
ERROR: 'module' object has no attribute 'write'
The problem is related to the new version of mercurial and it seems to be
solved by this patch:
https://github.com/felipec/git-remote-hg/commit/822c6e4b03d9e66df8261f323caded716e8d8b8d?diff=unified
-- System Information:
Debian Release: stretch/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1,
'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf
Kernel: Linux 4.6.4 (SMP w/8 CPU cores; PREEMPT)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages git-remote-hg depends on:
ii git 1:2.9.3-1
ii mercurial 3.9-1
ii python 2.7.11-2
git-remote-hg recommends no packages.
Versions of packages git-remote-hg suggests:
ii git-doc 1:2.9.3-1
-- no debconf information
diff --git a/git-remote-hg b/git-remote-hg
index 87dc8f3..1749d43 100755
--- a/git-remote-hg
+++ b/git-remote-hg
@@ -373,10 +373,23 @@ def updatebookmarks(repo, peer):
for k, v in remotemarks.iteritems():
localmarks[k] = hgbin(v)
- if hasattr(localmarks, 'write'):
- localmarks.write()
+ if check_version(3, 6):
+ lock = tr = None
+ try:
+ lock = repo.lock()
+ tr = repo.transaction('bookmark')
+ localmarks.recordchange(tr)
+ tr.close()
+ finally:
+ if tr is not None:
+ tr.release()
+ if lock is not None:
+ lock.release()
else:
- bookmarks.write(repo)
+ if hasattr(localmarks, 'write'):
+ localmarks.write()
+ else:
+ bookmarks.write(repo)
def get_repo(url, alias):
global peer