J. David Ibáñez
27585e5344
Fixing TreeEntry lifetime issues
...
Now a TreeEntry can be owned by a Tree or a TreeBuilder, this should
handle the lifetime issues reported by Han-Wen Nienhuys.
Discussion in issue #56
2012-03-17 17:55:41 +01:00
Carlos Martín Nieto
139034f66f
Support short OIDs
...
Intoduce and use py_str_to_git_oid_expand() to get a full OID from a
short one the user may have passed.
Repository_contains() has learnt to do it by itself as expanding an
OID means asking the repository's ODB for the object anyway.
The return values have been made consistent with other functions and
py_str_to_git_oid() now returns an int and marks errors with a
negative value.
2012-03-15 05:33:13 +01:00
Bryan O'Sullivan
d35944cc7d
Decode messages leniently if encoding is not known
...
This avoids throwing of a UnicodeDecodeError on some really old commits.
We also add undecoded attribute accessors, to get at the raw bytes.
2012-03-13 16:21:42 -07:00
J. David Ibáñez
a0810694ed
Merge remote branch 'carlos/treebuilder'
2012-03-12 22:30:30 +01:00
J. David Ibáñez
a6a36ad803
Now TreeEntry points back to the repo
...
Instead of pointing back to the tree.
2012-03-11 22:50:55 +01:00
J. David Ibáñez
f11533a65a
Revert "(issue #56 ) Remove TreeEntry.to_object"
...
This reverts commit 4cdb1a83b430fa27e2b0800ce17751631b036a78.
2012-03-11 22:40:37 +01:00
Carlos Martín Nieto
242f3c2ffa
TreeBuilder: allow the source to be a Tree
...
If the user passes a tree, use it as the source for the
TreeBuilder. On the way, make sure we free the tree we looked up, and
fix a test to make sure the TreeBuilder starts empty.
2012-03-09 12:57:22 +01:00
Carlos Martín Nieto
3e73d3a2b8
Add remove() and clear() to TreeBuilder
2012-03-09 11:41:17 +01:00
Carlos Martín Nieto
eb522b0caa
Make TreeBuilder grow out of the repository
...
A TreeBuilder is a lot more useful (and easy to use) when it belongs
to a repository.
2012-03-09 11:41:17 +01:00
J. David Ibáñez
8380c625c4
Check for error after call to py_str_to_c_str
...
Fixes segfaults in 'Repository.create_commit' and 'Signature(...)'
Error reported by Han-Wen Nienhuys in the mailing list.
2012-03-03 17:37:33 +01:00
J. David Ibáñez
c6ebc98930
Revert "Commit.parents now returns a list of oids"
...
This reverts commit 1fb34e7b96000d29c4633b66fabc0699ac74ce15.
2012-02-28 13:02:37 +01:00
J. David Ibáñez
1fb34e7b96
Commit.parents now returns a list of oids
...
Instead of returning the commit objects.
2012-02-27 00:25:57 +01:00
J. David Ibáñez
4b0f759cc0
Tag.target now returns the oid (not the object)
2012-02-27 00:13:43 +01:00
J. David Ibáñez
8b84f90a81
(issue #56 ) Fix TreeBuilder deallocation
...
Also, add a comment to the TODO file about a memory management issue
found throught pygit2.
2012-02-26 19:57:33 +01:00
J. David Ibáñez
4cdb1a83b4
(issue #56 ) Remove TreeEntry.to_object
...
This is one way to enable implementing 'TreeBuilder.get'. It also makes
pygit2 a little lower-level. And makes TreeEntry consistent with IndexEntry,
which lacks such a function.
2012-02-26 19:41:17 +01:00
Amit Bakshi
7ad8f0a8f0
Add discover_repository.
...
pygit2.discover_repository(path, across_fs = False,
ceiling_paths = None)
Add support for git_discover_repository which
searches the given path for the git repository.
2012-02-25 17:33:59 -08:00
Carlos Martín Nieto
8b71a8045b
Allow a 'source' arg to TreeBuilder()
2012-02-21 12:36:51 +01:00
Carlos Martín Nieto
2044699a53
Add TreeBuilder_write
2012-02-21 12:36:51 +01:00
Carlos Martín Nieto
5d327c7205
Add TreeBuilder_insert
2012-02-21 12:36:51 +01:00
Carlos Martín Nieto
d43577a464
Create the TreeBuilder type
2012-02-21 12:36:38 +01:00
J. David Ibáñez
b143c0ccde
Fix compilation warnings
2012-02-19 09:20:58 +01:00
Yonggang Luo
5da739270a
Arrange Tree and Index definition.
2012-02-18 17:10:08 +08:00
Yonggang Luo
5ece88300a
Repository_create_tag return error when necessary.
2012-02-18 16:28:35 +08:00
J. David Ibáñez
3bf5b4c794
status: new method 'Repository.status_file'
...
Exposes libgit2 function 'git_status_file'.
2012-02-10 19:38:25 +01:00
Carlos Martín Nieto
bc7db4ba8a
errors: don't segfault if the library didn't set an error
...
git_lasterror() can return NULL. Passing that to the error formatting
functions leads to a segmentation fault.
Add a wrapper with a generic "no more information" string for the
cases when the library didn't set one.
2012-02-03 18:33:48 +01:00
J. David Ibáñez
39bb5de7c5
Fixing compilation with MSVC (issue #53 )
2012-01-25 19:04:16 +01:00
J. David Ibáñez
9d8d2ace64
index: implement Index.read_tree
2012-01-02 23:11:30 +01:00
J. David Ibáñez
550c966111
Rename Index.create_tree to Index.write_tree
...
Like Git command "git write-tree"
2012-01-02 20:10:28 +01:00
J. David Ibáñez
35ed84cf44
Update to latest changes in libgit2
...
Now Repository.index also works on bare repositories. Unit tests pass
again.
And fix a memory leak (add a call to git_index_free).
2012-01-02 19:42:49 +01:00
J. David Ibáñez
4a33c7f806
refs: implement reference reload
2011-12-25 10:46:38 +01:00
J. David Ibáñez
73a4a3a649
refs: resolving a direct ref returns the same object
...
When resolving a direct reference the same Python object is returned,
with the refcount incremented by one. The reference is reloaded.
2011-12-24 17:04:24 +01:00
J. David Ibáñez
584a8b1473
refs: implement reference dealloc
2011-12-20 22:19:15 +01:00
J. David Ibáñez
5986688197
refs: fix segfault when using a deleted reference
...
Before this patch the code below produced a segfault:
>>> reference.delete()
>>> reference.name
Now an exception is raised.
2011-12-19 23:40:27 +01:00
J. David Ibáñez
01cb80b4c8
errors: pass through git_lasterror in several places
...
And clean up related code a little bit.
2011-12-06 23:36:20 +01:00
J. David Ibáñez
2dee35d1be
Update to latest changes in libgit2
2011-12-04 23:38:15 +01:00
J. David Ibáñez
3073a7c3da
Return bytes for paths (and encodings) on Python 2
2011-11-28 23:33:16 +01:00
J. David Ibáñez
ee9429217b
Start using inline functions
...
Actually, the Py_LOCAL_INLINE macro only works with Python 3.2, we
should fix this.
2011-11-26 23:57:22 +01:00
J. David Ibáñez
a50c886cbb
signature: add bytes accessors for name/email
...
Now Signature.email returns unicode. The name and email are available as
byte strings through the Signature._name and Signature._email accessors
respectively. Signature._encoding returns the encoding used in the
signature.
2011-11-25 00:08:39 +01:00
J. David Ibáñez
eafcef38f6
Do not pretend Python 2.5 is supported
2011-11-24 22:26:29 +01:00
J. David Ibáñez
9064b8e038
Introduce the Signature object
2011-11-23 23:48:41 +01:00
J. David Ibáñez
63ab0f3b26
Minor coding style fixes
2011-11-23 23:13:19 +01:00
J. David Ibáñez
cb00e7a6b9
Break reference cycle with repositoy/index
2011-11-22 00:23:54 +01:00
J. David Ibáñez
46ab810636
Use PyObject_New/PyObject_Del
2011-11-20 12:43:28 +01:00
J. David Ibáñez
38f1884b29
tp_alloc already sets no memory error
2011-11-19 19:04:31 +01:00
J. David Ibáñez
fb1ca247f8
Commit.tree, check for no memory error
2011-11-19 17:43:52 +01:00
J. David Ibáñez
ce41de9417
Repository.create_commit, make encoding optional
2011-11-19 09:37:45 +01:00
J. David Ibáñez
1eb0c6a9f0
Fix memory leak in 'Repository.create_tag'
...
Free the signature.
2011-11-15 23:18:04 +01:00
J. David Ibáñez
3851f725f9
Fix memory leak in 'Repository.create_commit'
...
Free the signatures.
2011-11-15 00:45:20 +01:00
J. David Ibáñez
8d4c8415da
Use file system encoding to decode/encode paths
...
Instead of UTF-8. This is done for better interoperability with Git.
2011-11-13 12:47:08 +01:00
J. David Ibáñez
4f5298d6b7
Repository.create_commit supports message encoding
...
Now the 'Repository.create_commit' method expects one more argument,
the message encoding. If 'None', it defaults to UTF-8.
2011-11-12 20:13:28 +01:00