-
-
Notifications
You must be signed in to change notification settings - Fork 387
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
pass reference to add_worktree #814
Comments
further more we get a segfault on doing this on a bare repo ... >>> import pygit2
>>> repo = pygit2.init_repository('./bare_repo', True)
>>> repo.list_worktrees()
[]
>>> tree =repo.TreeBuilder().write()
>>> commit_id = repo.create_commit('refs/heads/master',
repo.default_signature, repo.default_signature, "first commit", tree, [])
>>> repo.branches.create('develop', repo[commit_id])
>>> repo.list_worktrees()
[]
>>> repo.listall_branches()
['develop', 'master'] in bash on the repo $ cd bare_repo
$ git branch
develop
* master
$ git worktree add ../versions/develop develop
Preparing ../versions/bare/develop (identifier develop)
HEAD is now at 4532215 first commit
$ git worktree list
/..../bare_repo (bare)
/..../../versions/develop 4532215 [develop] back in python >>> repo.list_worktrees()
['develop']
>>> repo.lookup_worktree('develop')
Segmentation fault (core dumped) Any idea why? |
We just wrap For the segfault, will check later. |
Reproduced, I can tell you the segfault happens in the call to |
This is how to prepare the repo without using pygit2: $ git init --bare bare
$ git --git-dir=bare update-ref refs/heads/develop `echo first | git --git-dir=bare commit-tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904`
$ git --git-dir=bare worktree add versions/develop develop
$ python -c "import pygit2; pygit2.Repository('bare').lookup_worktree('develop')"
Segmentation fault (core dumped) It should be simple to write a C program that shows the segfault, without pygit2 involved. |
Update:
|
The bug has been fixed in libgit2 0.27.7 So only the feature remains to do, @Richard-Mathie PR? |
ill have a look |
Done with PR #889 |
Add test target. 0.28.0 (2019-03-19) ------------------------- - Upgrade to libgit2 0.28 `#878 <https://github.com/libgit2/pygit2/issues/878>`_ - Add binary wheels for Linux `#793 <https://github.com/libgit2/pygit2/issues/793>`_ `#869 <https://github.com/libgit2/pygit2/pull/869>`_ `#874 <https://github.com/libgit2/pygit2/pull/874>`_ `#875 <https://github.com/libgit2/pygit2/pull/875>`_ `#883 <https://github.com/libgit2/pygit2/pull/883>`_ - New ``pygit2.Mailmap``, see documentation `#804 <https://github.com/libgit2/pygit2/pull/804>`_ - New ``Repository.apply(...)`` wraps ``git_apply(..)`` `#841 <https://github.com/libgit2/pygit2/issues/841>`_ `#843 <https://github.com/libgit2/pygit2/pull/843>`_ - Now ``Repository.merge_analysis(...)`` accepts an optional reference parameter `#888 <https://github.com/libgit2/pygit2/pull/888>`_ `#891 <https://github.com/libgit2/pygit2/pull/891>`_ - Now ``Repository.add_worktree(...)`` accepts an optional reference parameter `#814 <https://github.com/libgit2/pygit2/issues/814>`_ `#889 <https://github.com/libgit2/pygit2/pull/889>`_ - Now it's possible to set SSL certificate locations `#876 <https://github.com/libgit2/pygit2/issues/876>`_ `#879 <https://github.com/libgit2/pygit2/pull/879>`_ `#884 <https://github.com/libgit2/pygit2/pull/884>`_ `#886 <https://github.com/libgit2/pygit2/pull/886>`_ - Test and documentation improvements `#873 <https://github.com/libgit2/pygit2/pull/873>`_ `#887 <https://github.com/libgit2/pygit2/pull/887>`_ Breaking changes: - Now ``worktree.path`` returns the path to the worktree directory, not to the `.git` file within `#803 <https://github.com/libgit2/pygit2/issues/803>`_ - Remove undocumented ``worktree.git_path`` `#803 <https://github.com/libgit2/pygit2/issues/803>`_ 0.27.4 (2019-01-19) ------------------------- - New ``pygit2.LIBGIT2_VER`` tuple `#845 <https://github.com/libgit2/pygit2/issues/845>`_ `#848 <https://github.com/libgit2/pygit2/pull/848>`_ - New objects now support (in)equality comparison and hash `#852 <https://github.com/libgit2/pygit2/issues/852>`_ `#853 <https://github.com/libgit2/pygit2/pull/853>`_ - New references now support (in)equality comparison `#860 <https://github.com/libgit2/pygit2/issues/860>`_ `#862 <https://github.com/libgit2/pygit2/pull/862>`_ - New ``paths`` optional argument in ``Repository.checkout()`` `#858 <https://github.com/libgit2/pygit2/issues/858>`_ `#859 <https://github.com/libgit2/pygit2/pull/859>`_ - Fix speed and windows package regression `#849 <https://github.com/libgit2/pygit2/issues/849>`_ `#857 <https://github.com/libgit2/pygit2/issues/857>`_ `#851 <https://github.com/libgit2/pygit2/pull/851>`_ - Fix deprecation warning `#850 <https://github.com/libgit2/pygit2/pull/850>`_ - Documentation fixes `#855 <https://github.com/libgit2/pygit2/pull/855>`_ - Add Python classifiers to setup.py `#861 <https://github.com/libgit2/pygit2/pull/861>`_ - Speeding up tests in Travis `#854 <https://github.com/libgit2/pygit2/pull/854>`_ Breaking changes: - Remove deprecated `Reference.get_object()`, use `Reference.peel()` instead 0.27.3 (2018-12-15) ------------------------- - Move to pytest, drop support for Python 3.3 and cffi 0.x `#824 <https://github.com/libgit2/pygit2/issues/824>`_ `#826 <https://github.com/libgit2/pygit2/pull/826>`_ `#833 <https://github.com/libgit2/pygit2/pull/833>`_ `#834 <https://github.com/libgit2/pygit2/pull/834>`_ - New support comparing signatures for (in)equality - New ``Submodule.head_id`` `#817 <https://github.com/libgit2/pygit2/pull/817>`_ - New ``Remote.prune(...)`` `#825 <https://github.com/libgit2/pygit2/pull/825>`_ - New ``pygit2.reference_is_valid_name(...)`` `#827 <https://github.com/libgit2/pygit2/pull/827>`_ - New ``AlreadyExistsError`` and ``InvalidSpecError`` `#828 <https://github.com/libgit2/pygit2/issues/828>`_ `#829 <https://github.com/libgit2/pygit2/pull/829>`_ - New ``Reference.raw_name``, ``Reference.raw_shorthand``, ``Tag.raw_name``, ``Tag.raw_message`` and ``DiffFile.raw_path`` `#840 <https://github.com/libgit2/pygit2/pull/840>`_ - Fix decode error in commit messages and signatures `#839 <https://github.com/libgit2/pygit2/issues/839>`_ - Fix, raise error in ``Repository.descendant_of(...)`` if commit doesn't exist `#822 <https://github.com/libgit2/pygit2/issues/822>`_ `#842 <https://github.com/libgit2/pygit2/pull/842>`_ - Documentation fixes `#821 <https://github.com/libgit2/pygit2/pull/821>`_ Breaking changes: - Remove undocumented ``Tag._message``, replaced by ``Tag.raw_message``
This PR updates [pygit2](https://pypi.org/project/pygit2) from **0.27.4** to **0.28.0**. <details> <summary>Changelog</summary> ### 0.28.0 ``` ------------------------- - Upgrade to libgit2 0.28 `878 <https://github.com/libgit2/pygit2/issues/878>`_ - Add binary wheels for Linux `793 <https://github.com/libgit2/pygit2/issues/793>`_ `869 <https://github.com/libgit2/pygit2/pull/869>`_ `874 <https://github.com/libgit2/pygit2/pull/874>`_ `875 <https://github.com/libgit2/pygit2/pull/875>`_ `883 <https://github.com/libgit2/pygit2/pull/883>`_ - New ``pygit2.Mailmap``, see documentation `804 <https://github.com/libgit2/pygit2/pull/804>`_ - New ``Repository.apply(...)`` wraps ``git_apply(..)`` `841 <https://github.com/libgit2/pygit2/issues/841>`_ `843 <https://github.com/libgit2/pygit2/pull/843>`_ - Now ``Repository.merge_analysis(...)`` accepts an optional reference parameter `888 <https://github.com/libgit2/pygit2/pull/888>`_ `891 <https://github.com/libgit2/pygit2/pull/891>`_ - Now ``Repository.add_worktree(...)`` accepts an optional reference parameter `814 <https://github.com/libgit2/pygit2/issues/814>`_ `889 <https://github.com/libgit2/pygit2/pull/889>`_ - Now it's possible to set SSL certificate locations `876 <https://github.com/libgit2/pygit2/issues/876>`_ `879 <https://github.com/libgit2/pygit2/pull/879>`_ `884 <https://github.com/libgit2/pygit2/pull/884>`_ `886 <https://github.com/libgit2/pygit2/pull/886>`_ - Test and documentation improvements `873 <https://github.com/libgit2/pygit2/pull/873>`_ `887 <https://github.com/libgit2/pygit2/pull/887>`_ Breaking changes: - Now ``worktree.path`` returns the path to the worktree directory, not to the `.git` file within `803 <https://github.com/libgit2/pygit2/issues/803>`_ - Remove undocumented ``worktree.git_path`` `803 <https://github.com/libgit2/pygit2/issues/803>`_ ``` </details> <details> <summary>Links</summary> - PyPI: https://pypi.org/project/pygit2 - Changelog: https://pyup.io/changelogs/pygit2/ - Repo: http://github.com/libgit2/pygit2 </details>
repo.add_worktree
only has arguments of name and path so it is currently not possible to create a work tree on a specific reference (existing branches, tags ect) and it just creates a new branchname
my current workaround is to move the reference after the fact but this will still create the unwanted branch, and may leave files in the directory.
The text was updated successfully, but these errors were encountered: