Skip to content
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

Update to libgit2 0.21 #374

Merged
merged 15 commits into from
Jun 21, 2014
Merged

Update to libgit2 0.21 #374

merged 15 commits into from
Jun 21, 2014

Conversation

carlosmn
Copy link
Member

@carlosmn carlosmn commented Jun 8, 2014

libgit2 has tagged 0.21.0-rc1, so it's time to send this PR to update the bindings.

There's been quite a lot of changes to libgit2 and its API. I've tried to keep the Python wrapping the same where possible, as a lot of those changes are to do with strings, but e.g. git_merge has completely changed how it works to provide the user of the library with the bits they need instead of trying to pretend it was the git merge command.

We no longer need the max-path define, so we can get rid of that and the
pypy checking.
There is no more MergeResult type. Instead, the user can use
Repository.merge_analysis() to get an overview of their options and call
git_merge() when they mean to merge.

The git_merge() function now also performs a checkout.
We can now use a git_buf to extract the search path.
Reconcile the changes between the ffi changes upstream with the changes
to libgit2 in the dev branch.

Conflicts:
	src/config.c
	src/options.c
	src/refspec.c
	src/remote.c
These allow complex reads to come from the same version of the config.
Conflicts:
	pygit2/decl.h
	test/test_repository.py
Renaming a remote in pygit2 has been done via Remote.name= up to now,
but this is inherently unsafe, as it provides no way to pass up the
refspecs that libgit2 was unable to remap.

In fact, if there ever was such problem, we would have segfaulted.

libgit2 now provides a much more direct way of getting back the results,
so expose it as the return value of Remote.rename(). This also removes
the hint that a rename might be something that happens only to the
in-memory structure.
@jdavid jdavid merged commit bde58d9 into libgit2:master Jun 21, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants