schacon / hg-git

mercurial to git bridge, pushed to directly from the hg-git plugin in Hg
GNU General Public License v2.0
620 stars 71 forks source link

hg-git gives: AttributeError: 'DiskObjectStore' object has no attribute 'tree_changes' #62

Closed gmodena closed 14 years ago

gmodena commented 14 years ago

When I try to clone a git repository via hg the process fails with the following error:

delirio:test gm$ hg clone git://github.com/schacon/hg-git.git destination directory: hg-git.git importing Hg objects into Git Counting objects: 1693, done. Compressing objects: 100% (1536/1536), done. Total 1693 (delta 369), reused 1429 (delta 118) importing Git objects into Hg at: 0/431 * unknown exception encountered, details follow * report bug details to http://mercurial.selenic.com/bts/ * or mercurial@selenic.com * Mercurial Distributed SCM (version 1.3.1) * Extensions loaded: hggit Traceback (most recent call last): File "/opt/local/bin/hg", line 27, in mercurial.dispatch.run() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 16, in run sys.exit(dispatch(sys.argv[1:])) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 27, in dispatch return _runcatch(u, args) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 43, in _runcatch return _dispatch(ui, args) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 449, in _dispatch return runcommand(lui, repo, cmd, fullargs, ui, options, d) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 317, in runcommand ret = _runcommand(ui, options, cmd, d) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 501, in _runcommand return checkargs() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 454, in checkargs return cmdfunc() File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/dispatch.py", line 448, in d = lambda: util.checksignature(func)(ui, _args, _cmdoptions) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/util.py", line 402, in check return func(_args, *_kwargs) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/commands.py", line 636, in clone update=not opts.get('noupdate')) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/hg.py", line 286, in clone dest_repo.clone(src_repo, heads=revs, stream=stream) File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/mercurial/localrepo.py", line 2177, in clone return self.pull(remote, heads) File "/tmp/hg-git/hggit/hgrepo.py", line 12, in pull git.fetch(remote.path, heads) File "/tmp/hg-git/hggit/git_handler.py", line 98, in fetch self.import_git_objects(remote_name, refs) File "/tmp/hg-git/hggit/git_handler.py", line 398, in import_git_objects self.import_git_commit(commit) File "/tmp/hg-git/hggit/git_handler.py", line 406, in import_git_commit files = self.get_files_changed(commit) File "/tmp/hg-git/hggit/git_handler.py", line 765, in get_files_changed changes = self.git.object_store.tree_changes(btree, tree) AttributeError: 'DiskObjectStore' object has no attribute 'tree_changes'

My configuration is:

python-2.6 dulwich 0.4.0 (installed via setuptools) mercurial 1.3.1

The error appears both on hg-git installed via setuptools or by cloning the git repository.

whiteinge commented 14 years ago

Seems related to the recent 0.2.x release. I got that same error when trying to pull changes into an existing repository created with the 0.1.0 release and also when trying to clone anew. Downgrading to 0.1.0 works. Configuration same as OP.

gmodena commented 14 years ago

Downgrading to 0.1.0 worked also for me.

abderrahim commented 14 years ago

oops, seems the new release depends on not yet released dulwich, sorry.

You can either downgrade to 0.1.0 or update dulwich to latest git

abderrahim commented 14 years ago

You can also use 0.2.0 which has all the bug fixes apart from the one causing problems.

grassbl8d commented 14 years ago

also encountered same error destination directory: iris.git importing Hg objects into Git Counting objects: 38, done. Compressing objects: 100% (25/25), done. Total 38 (delta 10), reused 0 (delta 0) importing Git objects into Hg at: 0/13 * unknown exception encountered, details follow * report bug details to http://mercurial.selenic.com/bts/ * or mercurial@selenic.com * Mercurial Distributed SCM (version 1.4.1) \ Extensions loaded: extdiff, bookmarks, hggit, filereview, convert, reb stedit, transplant, mq, record, graphlog Traceback (most recent call last): File "hg", line 36, in File "mercurial\dispatch.pyo", line 16, in run File "mercurial\dispatch.pyo", line 30, in dispatch File "mercurial\dispatch.pyo", line 46, in _runcatch File "mercurial\dispatch.pyo", line 449, in _dispatch File "mercurial\dispatch.pyo", line 319, in runcommand File "mercurial\dispatch.pyo", line 500, in _runcommand File "mercurial\dispatch.pyo", line 454, in checkargs File "mercurial\dispatch.pyo", line 448, in File "mercurial\util.pyo", line 386, in check File "mercurial\commands.pyo", line 649, in clone File "mercurial\hg.pyo", line 292, in clone File "mercurial\localrepo.pyo", line 2140, in clone File "C:/Program Files/TortoiseHg/hg-git\hggit\hgrepo.py", line 12, in git.fetch(remote.path, heads) File "C:/Program Files/TortoiseHg/hg-git\hggit\git_handler.py", line 10 etch self.import_git_objects(remote_name, refs) File "C:/Program Files/TortoiseHg/hg-git\hggit\git_handler.py", line 40 mport_git_objects self.import_git_commit(commit) File "C:/Program Files/TortoiseHg/hg-git\hggit\git_handler.py", line 40 mport_git_commit files = self.get_files_changed(commit) File "C:/Program Files/TortoiseHg/hg-git\hggit\git_handler.py", line 76 et_files_changed changes = self.git.object_store.tree_changes(btree, tree) AttributeError: 'DiskObjectStore' object has no attribute 'tree_changes'

abderrahim commented 14 years ago

it hasn't changed. what did you do? installed dulwich from git? it seems to be still using the old one. you may need to uninstall it. (or did you use 0.2.0?)

grassbl8d commented 14 years ago

i updated dulwich to the latest version. 0.4.1

problem seems to go away.

durin42 commented 14 years ago

Yeah, bos just had a similar problem and latest dulwich fixed it there too.

gmodena commented 14 years ago

Same here. After having installed dulwich 0.4.1 (manually) and updated to hg-git 0.2.1 the error seems to be solved.