|
cbf742ac
|
2011-06-26T19:40:02
|
|
Use (s)size_t
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
c4d0fa85
|
2011-06-16T01:54:19
|
|
Implement and use git_pkt_send_request
This makes it easier to send a requqest for an URL. It assumes there
is a socket where the string should go out to.
Make git_pkt_gen_proto accept a command parameter, which defaults to
git-upload-pack
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
7632e249
|
2011-06-13T23:01:12
|
|
Correctly handle network input
Add a parameter to git_pkt_parse_line to tell it how much data you
have in your buffer. If the buffer is too short, it returns an error
saying so. Adapt the git transport to use this and fix the offset
calculation.
Add the GIT_ESHORTBUFFER error code.
|
|
be9fe679
|
2011-06-08T23:38:22
|
|
Implement and use git_pkt_free
A git_pkt object can be one of several structs. Add this function for
convenience and clarity.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
ecb6ca0e
|
2011-06-08T13:09:47
|
|
Implement the git TCP transport up to ls-remote
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
6a9597c5
|
2011-06-08T19:11:38
|
|
Add function to generate a request
Add git_pkt_gen_proto to crete a request from an url.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
8b9e8de5
|
2011-06-08T10:51:32
|
|
pkt-line: read capabilities
Try to read the server capabilities and add them to the git_pkt_ref
struct.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
b31803f3
|
2011-05-28T11:59:10
|
|
pkt-line: parse other-ref lines
Add support for parsing other-ref lines.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
f7fc68df
|
2011-05-27T12:50:07
|
|
Lay the foundations for pkt-line parsing
This are the types I intend to use for pkt-line parsing and (later)
creation. git_pkt serves as a base pointer type and once you know what
type it is you can use the real one (command, tip list, etc.)
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
d6258deb
|
2011-06-25T15:10:09
|
|
Implement ls-remote on local drive
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
92cb6aa9
|
2011-06-23T15:41:29
|
|
Add git_refspec_transform
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
63f91e1c
|
2011-06-22T16:52:30
|
|
Add git.git's fnmatch, which is really GNU's and the git__fnmatch wrapper
If the strings match, git__fnmatch returns GIT_SUCCESS and
GIT_ENOMATCH on failure to match.
MSVC fixes: Added a test for _MSC_VER and (in that case) defined
HAVE_STRING_H to 1 so it doesn't try to include <strings.h> which
doesn't exist in the MSVC world. Moved the function declarations to
use the modern inline ones so MSVC doesn't have a fit. Added casts
everywhere so MSVC doesn't crap its pants.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
f8f3feb0
|
2011-06-21T02:13:51
|
|
Add a to-do list for remotes
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
8f866dae
|
2011-05-16T22:07:08
|
|
Lay down the fundations for the network code
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
2dc31040
|
2011-06-20T18:58:57
|
|
Abstract the refspec query and parse
Move them to their own functions to avoid duplication and to make it
easier to ignore missing configuration.
Not finding 'fetch' is considered fatal, though this might not be
correct behaviour (push-only remotes?)
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
9c82357b
|
2011-06-17T18:13:14
|
|
Add a remotes API
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
|
|
2c0ec236
|
2011-06-23T13:36:09
|
|
added defines for Haiku in types.h
|
|
37172582
|
2011-06-18T21:14:55
|
|
libgit2 v0.13.0 "Watermelon Wheat"
On this rascalicious minor release of libgit2:
- We've dropped support for Waf. All the build process is now managed
through CMake for all platforms.
- We've removed the custom backends from the repository. You can now
find a collection of Custom backends on their own repo, under the
libgit2 org. Including MySQL and Memcache backends, courtesy of the
beardful Brian Lopez.
- We are rocking a new documentation system, Docurium, courtesy of the
insightful Scott Chacon. Check out the details for each single method
in our external API and the way they've evolved through the history
of the library:
http://libgit2.github.com/libgit2/
This will certainly come in handy if you are developing bindings for
the library.
- You can now check the linked version of the library from your
application or bindings, using `git_libgit2_version`.
- We have a gazillion new features, courtesy of our invaluable
collaborators, including:
* Support for Config files!
* Support for prefix-only reads on the ODB
* Repository discovery
* Support for the Unmerged Entries index extension
* Better Windows support
* 30.000 bug fixes (actual number may be lower)
Thanks as always to everyone who makes this project possible.
Here's the full list of all external API changes:
- git_index_open_bare
- git_index_open_inrepo
- git_odb_backend_sqlite
- git_oid_mkraw
- git_oid_mkstr
- git_reference_listcb
- git_repository_workdir
= git_index_get
= git_repository_path
= git_tree_entry_byindex
+ git_blob_lookup_prefix
+ git_commit_lookup_prefix
+ git_config_add_file
+ git_config_add_file_ondisk
+ git_config_file__ondisk
+ git_config_find_global
+ git_config_foreach
+ git_config_free
+ git_config_get_bool
+ git_config_get_int
+ git_config_get_long
+ git_config_get_string
+ git_config_new
+ git_config_open_global
+ git_config_open_ondisk
+ git_config_set_bool
+ git_config_set_int
+ git_config_set_long
+ git_config_set_string
+ git_index_entry_stage
+ git_index_entrycount_unmerged
+ git_index_get_unmerged_byindex
+ git_index_get_unmerged_bypath
+ git_index_open
+ git_object_lookup_prefix
+ git_odb_read_prefix
+ git_oid_fromraw
+ git_oid_fromstr
+ git_oid_ncmp
+ git_reference_foreach
+ git_repository_config
+ git_repository_discover
+ git_repository_is_bare
+ git_tag_lookup_prefix
+ git_tree_entry_type
+ git_tree_lookup_prefix
|
|
984ed6b6
|
2011-06-19T12:48:16
|
|
odb: Add GIT_EPASSTHROUGH
Allows a custom user backend to passthrough one of the callbacks. Used
for e.g. caching backends.
|
|
bfd5e3e2
|
2011-06-18T15:07:41
|
|
config: Fix API docs
|
|
19cb6857
|
2011-06-18T01:50:48
|
|
config: Bring back `git_config_open_global`
Scott commands, I obey.
|
|
07ff8817
|
2011-06-18T00:39:39
|
|
config: Cleanup external API
Do not mess with environment variables anymore. The new external API has
more helper methods, and everything is explicit.
|
|
b22d1479
|
2011-06-16T17:46:06
|
|
Add git_repository_config API
This function puts the global and repository configurations in one
git_config object and gives it to the user.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
d144c569
|
2011-06-16T03:02:46
|
|
Update documentation
Fix all the missmatched arguments in the docs
|
|
f1d01851
|
2011-06-16T02:48:48
|
|
oid: Uniformize ncmp methods
Drop redundant methods. The ncmp method is now public
|
|
fa48608e
|
2011-06-16T02:36:21
|
|
oid: Rename methods
Yeah. Finally. Fuck the old names, this ain't POSIX
and they don't make any sense at all.
|
|
43521d06
|
2011-06-16T02:27:43
|
|
refs: Rename git_referece_listcb to _foreach
Same name as `git_config_foreach`
|
|
536955f9
|
2011-06-16T02:21:33
|
|
Add method to get the compiled version of the lib
|
|
ef9a6f4c
|
2011-06-15T13:47:41
|
|
Merge pull request #261 from Romain-Geissler/discovery-path-v2
Fix: GIT_PATH_PATH_SEPARATOR is now a semi-colon under Windows.
|
|
0657e46d
|
2011-06-15T12:36:08
|
|
Fix: GIT_PATH_PATH_SEPARATOR is now a semi-colon under Windows.
GIT_PATH_LIST_SEPARATOR and GIT_PATH_MAX are made public so
that it's can be used by a client.
|
|
737406b7
|
2011-06-14T09:31:19
|
|
fix gid_ misspelling
|
|
b0233216
|
2011-06-12T11:40:14
|
|
Remove custom backends
All the custom backend code will be moved to a separate project,
together with the new MySQL backend.
|
|
e3f56a2b
|
2011-06-08T08:11:26
|
|
Merge pull request #216 from glesserd/development
git_tag_create{,_o,_frombuffer} correction and improvement
|
|
a2a305fc
|
2011-06-07T15:39:40
|
|
config: explain the cfg and file relationship better
It's not clear how git_config and git_config_file relate to one
another. Be more explicit about their relationship in the function
documentation.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
ce78f39e
|
2011-06-07T14:18:22
|
|
config: update the git_config_add_file documentation
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
ee4912bf
|
2011-06-07T11:15:23
|
|
Revert "common: Include stat.h in include/git2/common.h instead of src/common.h"
This reverts commit df1c98ab6d6171ed63729195bd190b54b67fe530.
As 8a27b6b reverts the exposition of struct stat to the external API, we
do not need - indeed, do not want - struct stat to be in the outer
include layer.
|
|
b74c867a
|
2011-06-07T11:11:09
|
|
blob: Stat path inside git_blob_create_fromfile
00582bc introduced a change that required the caller of
git_blob_create_fromfile() to pass a struct stat with the stat
information for the file. Several developers pointed out that this would
make life hard for the bindings developers as struct stat isn't widely
supported by other languages.
Make git_blob_create_fromfile() stat the path itself, eliminating the
need for the file to be stat'ed by the caller. This makes
index_init_entry() more costly as the file will be stat'ed twice but
makes life easier for everyone else.
|
|
cbf4f9f4
|
2011-05-25T16:31:14
|
|
common: Include stat.h in include/git2/common.h instead of src/common.h
00582bcb introduced a change to git_blob_create_fromfile() that required
the caller to pass a stat struct. This means that we need to include
stat.h higher in the hierarchy of includes.
|
|
4d7905c5
|
2011-05-25T16:04:29
|
|
blob: Require stat information for git_blob_create_fromfile()
In order to be able to write symlinks with git_blob_create_fromfile(),
we need to check whether the file to be written is a symbolic link or
not. Since the calling function of git_blob_create_fromfile() is likely to have
stated the file before calling, we make it pass the stat.
The reason for this is that writing symbolic link blobs is significantly
different from writing ordinary files - we do not want to open the link
destination but instead want to write the link itself, regardless of
whether it exists or not.
Previously, index_init_entry() used to error out if the file to be added
was a symlink that pointed to a nonexistent file. Fix this behaviour to
add the file regardless of whether it exists. This mimics git.git's
behaviour.
|
|
340fc0d4
|
2011-06-07T03:39:19
|
|
threads: Cleanup TLS declarations
This time for good.
|
|
9d77d83a
|
2011-06-07T03:38:09
|
|
Revert "threads: Fix TLS declarations"
This commit uploaded an old broken test. Oops!
|
|
1097dacd
|
2011-06-06T18:33:38
|
|
Merge pull request #240 from Romain-Geissler/tree-object-type
Tree: Added a function that returns the type of a tree entry.
|
|
9b1692eb
|
2011-06-06T18:31:21
|
|
Merge pull request #239 from pegonma/oid_prefix
Search objects of different types given OID prefix
|
|
1b0d92b1
|
2011-06-06T18:28:11
|
|
Merge pull request #238 from pegonma/git_oid_ncmp
Better name for git_oid_match
|
|
00c31dd2
|
2011-06-06T18:26:50
|
|
Merge pull request #234 from Romain-Geissler/entry-count-API-uniformisation
[Tree | Index] API uniformisation
|
|
64fe8c62
|
2011-06-07T03:22:32
|
|
threads: Fix TLS declarations
Cleanup the thread-utils file. Do not define TLS if libgit2 is not
threadsafe.
|
|
ff9a4c13
|
2011-06-06T17:14:30
|
|
Tree: Added a function that returns the type of a tree entry.
|
|
c09093cc
|
2011-06-06T10:55:36
|
|
Renamed git_oid_match to git_oid_ncmp.
As suggested by carlosmn, git_oid_ncmp would probably
be a better name than git_oid_match, for it does the same
as git_oid_cmp but only up to a certain amount of hex digits.
|
|
790c6c95
|
2011-06-06T11:55:48
|
|
Added methods to search objects of different types
given an OID prefix.
|
|
f11e0797
|
2011-06-05T21:19:03
|
|
Index: API uniformisation: Use unsigned int for all index number.
Feature Added: Search an unmerged entry by path (git_index_get_unmerged
renamed to git_index_get_unmerged_bypath) or by index (git_index_get_unmerged_byindex).
|
|
e5c80097
|
2011-06-05T21:18:05
|
|
Tree: API uniformasation: Use unsigned int for all index number.
|
|
602ee38b
|
2011-06-04T20:44:14
|
|
repository: Export all internal paths
|
|
f4c925c5
|
2011-06-04T16:09:19
|
|
Change a dirty indentation
|
|
793545ef
|
2011-06-03T17:41:53
|
|
Merge pull request #227 from Romain-Geissler/discovery-path-v2
Discovery path v2
|
|
fd0574e5
|
2011-06-04T01:01:20
|
|
Repository: Added the git_repository_discover function that finds by itself the git directory that manage a given directory path.
|
|
3a42e0a3
|
2011-06-03T21:38:55
|
|
index: Add `git_index_entry_stage` method
As suggested by Romain-Geissler
|
|
d0323a5f
|
2011-06-01T21:25:56
|
|
short-oid: Cleanup
|
|
da03c9f3
|
2011-05-29T11:45:34
|
|
Changed return value of git_oid_match to be consistent with the other compare methods (0 means oids match). Added method to compare prefixes of hex formatted oids.
|
|
ac2b94ad
|
2011-05-28T21:24:25
|
|
Added a GIT_OID_MINPREFIXLEN constant to define the minimum length allowed for oid prefixes (set to 4, like in git). Consequently updated some object lookup methods and their documentation.
|
|
dd453c4d
|
2011-05-27T22:46:41
|
|
Added git.git sha1 lookup method to replace simple binary search in pack backend.
Implemented find_unique_short_oid for pack backend, based on git sha1 lookup method;
finding an object given its full oid is just a particular case of searching
the unique object matching an oid prefix (short oid).
Added git_odb_read_unique_short_oid, which iterates over all the backends to
find and read the unique object matching the given oid prefix.
Added a git_object_lookup_short_oid method to find the unique object in
the repository matching a given oid prefix : it generalizes git_object_lookup
which now does nothing but calls git_object_lookup_short_oid.
|
|
53c0bd81
|
2011-05-27T22:37:10
|
|
Added error for ambiguous oid prefixes. Added methods to compare the first nth hexadecimal characters (i.e. packets of 4 bits) of OIDs.
|
|
ecd6fdf1
|
2011-05-27T18:49:09
|
|
Added a read_unique_short_oid method to backends, to make it possible to find objects from sha1 prefixes in the future. Default implementations throw GIT_ENOTIMPLEMENTED for strict prefixes (i.e. length < GIT_OID_HEXSZ).
|
|
50b7334e
|
2011-06-01T09:58:21
|
|
Merge pull request #206 from nulltoken/topic/is-bare
Add git_repository_is_bare() accessor
|
|
f7e59c4d
|
2011-06-01T18:34:21
|
|
index: Change the memory management for repo indexes
The `git_repository_index` call now returns a brand new index that must
be manually free'd.
|
|
ef5ffed3
|
2011-06-01T18:23:36
|
|
object: Update documentation
|
|
23123151
|
2011-05-30T09:03:55
|
|
Set the oid when a tag already exists.
When a tag already exists, it can be useful to directly have the oid
of the existed tag, just after trying to add it.
|
|
fa9bcd81
|
2011-05-24T21:48:07
|
|
Add git_repository_is_bare() accessor
|
|
b0b527e0
|
2011-05-20T03:20:12
|
|
config: Cleanup & renaming of the external API
"git_config_backend" have been renamed to "git_config_file", which
implements a generic interface to access a configuration file -- be it
either on disk, from a DB or whatever mumbojumbo.
I think this makes more sense.
|
|
274f2c21
|
2011-05-19T14:18:57
|
|
Merge pull request #193 from carlosmn/config
A couple of config improvements
|
|
f4e2aca2
|
2011-05-19T20:38:17
|
|
index: Fix issues in the unmerged entries API
|
|
050e8877
|
2011-05-17T15:31:05
|
|
Merge branch 'development' into unmerged
|
|
f44cbec4
|
2011-05-17T14:59:23
|
|
Add documentation for git_config_add_backend
|
|
32234541
|
2011-05-17T14:18:42
|
|
Implement git_config_open_global
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
128d3731
|
2011-05-17T15:05:41
|
|
config_file: Fix compilation
|
|
94711cad
|
2011-05-17T12:12:59
|
|
Merge upstream/development
|
|
f87d9beb
|
2011-05-15T23:46:39
|
|
Change error codes from DEFINEs to an enum
|
|
f31bd03f
|
2011-05-13T04:15:46
|
|
Include "common.h" in "errors.h"
|
|
40774549
|
2011-05-11T00:42:43
|
|
libgit2 v0.12.0 "absolutely no reason"
Hey, welcome to yet another minor libgit2 release. Sorry for the delay from
the last one. As you'll see the changelog is quite extensive -- hopefully from
now on we'll stick to more frequent minor releases.
Together with the usual bugfixes, here's a list of the new key features:
* Distfiles
This version comes with proper distfiles as requested in #131. These are
available in the Downloads section of the GitHub project.
* Error handling
A new error handling API has been implemented that allows the library to
return detailed error messages together with the generic error codes. We
hope this will be a great when wrapping and integrating the library
New external method to get the last detailed error message:
+ git_lasterror(void)
The old `git_strerror` still exists, but will be deprecated in the future
as soon as every method in the library returns a valid error message.
The task of writing error messages for every method is quite daunting.
We appreciate pull requests with more error messages. Check the new error
handling documentation in the following commit:
https://github.com/libgit2/libgit2/commit/fa59f18d0ddbbb98d45e33934fb0efc3e2bf1557
* Redis backend
We now have a Redis backend courtesy of Dmitry Kovega. Just like the
SQLite backend, this allows the library to store Git objects in a Redis
key-value store.
The backend requires the `hiredis` library. Use `--with-redis` when
building libgit2 to enable building the backend if `hiredis` is available.
* Commits
New methods to access tree and parent data as a raw OID value
instead of forcing a repository lookup
+ git_commit_tree_oid(git_commit *commit)
+ git_commit_parent_oid(git_commit *commit, unsigned int n)
* Index
The `git_index_add` method has been split into 4 different calls
which allow for appending and replacing in-memory entries and on-disk
files to the index.
+ git_index_add(git_index *index, const char *path, int stage)
+ git_index_add2(git_index *index, const git_index_entry *source_entry)
+ git_index_append(git_index *index, const char *path, int stage)
+ git_index_append2(git_index *index, const git_index_entry *source_entry)
Index entries can now also be efficiently removed from the index:
+ git_index_remove(git_index *index, int position)
* References
Methods to force the creation and renaming of references, even if those already
exist on the repository.
+ git_reference_create_symbolic_f(git_reference **ref_out, git_repository *repo,
const char *name, const char *target)
+ git_reference_create_oid_f(git_reference **ref_out, git_repository *repo,
const char *name, const git_oid *id)
+ git_reference_rename_f(git_reference *ref, const char *new_name)
* Repository
New auxiliary methods with repository information
+ git_repository_is_empty(git_repository *repo)
+ git_repository_path(git_repository *repo)
+ git_repository_workdir(git_repository *repo)
* Signatures
New method to create a signature with the current date/time
+ git_signature_now(const char *name, const char *email)
* Tags
Several wrappers to automate tag creation.
+ git_tag_create_frombuffer(git_oid *oid, git_repository *repo,
const char *buffer)
+ git_tag_create_f(git_oid *oid, git_repository *repo,
const char *tag_name, const git_oid *target,
git_otype target_type, const git_signature *tagger,
const char *message);
+ git_tag_create_fo(git_oid *oid, git_repository *repo,
const char *tag_name, const git_object *target,
const git_signature *tagger, const char *message)
New functionality to delete and list tags in a repository without
having to resort to the `references` API.
+ git_tag_delete(git_repository *repo, const char *tag_name)
+ git_tag_list(git_strarray *tag_names, git_repository *repo)
* Trees
All instances of `git_tree_entry` are now returned and handled
as constant, to remind the user that these opaque types are not
supposed to be manually free'd.
The `git_tree_entry_2object` method now takes a `git_repository`
argument which defines in which repository the resolved object
should be looked up. (It is expected to be the same repository
that contains the parent `git_tree` for the entry).
+ git_tree_entry_2object(git_object **object_out, git_repository *repo,
const git_tree_entry *entry)
New opaque type `git_treebuilder` with functionality to create and
write trees on memory
+ git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
+ git_treebuilder_clear(git_treebuilder *bld)
+ git_treebuilder_free(git_treebuilder *bld)
+ git_treebuilder_get(git_treebuilder *bld, const char *filename)
+ git_treebuilder_insert(git_tree_entry **entry_out, git_treebuilder *bld,
const char *filename, const git_oid *id, unsigned int attributes)
+ git_treebuilder_remove(git_treebuilder *bld, const char *filename)
+ git_treebuilder_filter(git_treebuilder *bld,
int (*filter)(const git_tree_entry *, void *), void *payload)
+ git_treebuilder_write(git_oid *oid, git_repository *repo, git_treebuilder *bld)
New method to write an index file as a tree to the ODB.
+ git_tree_create_fromindex(git_oid *oid, git_index *index)
Thanks to the usual guility parties that make this this happen, to
all the new contributors who are starting to submit pull requests, and
to the bindings developers who have to keep up with our shit.
Feedback and questions welcome on libgit2@librelist.org
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
6810bf28
|
2011-05-11T00:40:07
|
|
Move all error-related defines to `git2/errors.h`
|
|
f4a936b5
|
2011-05-11T00:35:05
|
|
Bring back `git_strerror`
We cannot totally deprecate this until the new error handling mechanisms
are all in place.
|
|
c0335005
|
2011-05-06T12:42:47
|
|
Move config to a backend structure
Configuration options can come from different sources. Currently,
there is only support for reading them from a flat file, but it might
make sense to read it from a database at some point.
Move the parsing code into src/config_file.c and create an include
file include/git2/config_backend.h to allow for other backends to be
developed.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
ab86f159
|
2011-05-09T23:39:32
|
|
Fix issue #79 - git_lasterror() isn't appearing in git2.dll in windows.
The GIT_EXPORT macro is used to declare a function to be externally
accessible to other libraries. This commit uses GIT_EXPORT to declare
the git_lasterror() function as externally exported. I verified with
depends.exe that the function is available to external callers (i.e.
in the exports table of the PE file).
|
|
5711ca93
|
2011-05-09T21:58:26
|
|
Merge branch 'error-handling' into development
|
|
fa59f18d
|
2011-05-09T20:54:04
|
|
Change error handling mechanism once again
Ok, this is the real deal. Hopefully. Here's how it's going to work:
- One main method, called `git__throw`, that sets the error
code and error message when an error happens.
This method must be called in every single place where an error
code was being returned previously, setting an error message
instead.
Example, instead of:
return GIT_EOBJCORRUPTED;
Use:
return git__throw(GIT_EOBJCORRUPTED,
"The object is missing a finalizing line feed");
And instead of:
[...] {
error = GIT_EOBJCORRUPTED;
goto cleanup;
}
Use:
[...] {
error = git__throw(GIT_EOBJCORRUPTED, "What an error!");
goto cleanup;
}
The **only** exception to this are the allocation methods, which
return NULL on failure but already set the message manually.
/* only place where an error code can be returned directly,
because the error message has already been set by the wrapper */
if (foo == NULL)
return GIT_ENOMEM;
- One secondary method, called `git__rethrow`, which can be used to
fine-grain an error message and build an error stack.
Example, instead of:
if ((error = foobar(baz)) < GIT_SUCCESS)
return error;
You can now do:
if ((error = foobar(baz)) < GIT_SUCCESS)
return git__rethrow(error, "Failed to do a major operation");
The return of the `git_lasterror` method will be a string in the
shape of:
"Failed to do a major operation. (Failed to do an internal
operation)"
E.g.
"Failed to open the index. (Not enough permissions to access
'/path/to/index')."
NOTE: do not abuse this method. Try to write all `git__throw`
messages in a descriptive manner, to avoid having to rethrow them to
clarify their meaning.
This method should only be used in the places where the original
error message set by a subroutine is not specific enough.
It is encouraged to continue using this style as much possible to
enforce error propagation:
if ((error = foobar(baz)) < GIT_SUCCESS)
return error; /* `foobar` has set an error message, and
we are just propagating it */
The error handling revamp will take place in two phases:
- Phase 1: Replace all pieces of code that return direct error codes
with calls to `git__throw`. This can be done semi-automatically
using `ack` to locate all the error codes that must be replaced.
- Phase 2: Add some `git__rethrow` calls in those cases where the
original error messages are not specific enough.
Phase 1 is the main goal. A minor libgit2 release will be shipped once
Phase 1 is ready, and the work will start on gradually improving the
error handling mechanism by refining specific error messages.
OTHER NOTES:
- When writing error messages, please refrain from using weasel
words. They add verbosity to the message without giving any real
information. (<3 Emeric)
E.g.
"The reference file appears to be missing a carriage return"
Nope.
"The reference file is missing a carriage return"
Yes.
- When calling `git__throw`, please try to use more generic error
codes so we can eventually reduce the list of error codes to
something more reasonable. Feel free to add new, more generic error
codes if these are going to replace several of the old ones.
E.g.
return GIT_EREFCORRUPTED;
Can be turned into:
return git__throw(GIT_EOBJCORRUPTED,
"The reference is corrupted");
|
|
5eb0fab8
|
2011-05-05T01:49:27
|
|
errors: Update external API with new `git_lasterror`
|
|
02f9e637
|
2011-05-05T01:12:17
|
|
errors: Add error handling function
|
|
ca8d2dfc
|
2011-05-05T16:22:06
|
|
Merge remote-tracking branch 'upstream/development' into config
|
|
773bc20d
|
2011-05-03T22:22:42
|
|
Fix misspelling of git_index_append2 (was git_index_apppend2).
|
|
1648fbd3
|
2011-05-02T01:12:53
|
|
Re-apply missing patches
|
|
f7a5058a
|
2011-04-24T00:31:43
|
|
index: Refactor add/replace methods
Removed the optional `replace` argument, we now have 4 add methods:
`git_index_add`: add or update from path
`git_index_add2`: add or update from struct
`git_index_append`: add without replacing from path
`git_index_append2`: add without replacing from struct
Yes, this breaks the bindings.
|
|
f16c0a9d
|
2011-04-23T14:08:17
|
|
Merged pull request #140 from jpfender/insert-replace.
index: Allow user to toggle whether to replace an index entry
|
|
5adb48e4
|
2011-04-21T21:21:44
|
|
LIBGIT2_VER_MINOR now matches LIBGIT2_VERSION (0.11.0)
LIBGIT2_VER_MINOR was left at 10 instead of 11.
|
|
4c0b6a6d
|
2011-04-21T10:54:54
|
|
index: Add API for unmerged entries
New external functions:
- git_index_unmerged_entrycount: Counts the unmerged entries in
the index
- git_index_get_unmerged: Gets an unmerged entry from the index
by name
New internal functions:
- read_unmerged: Wrapper for read_unmerged_internal
- read_unmerged_internal: Reads unmerged entries from the index
if the index has the INDEX_EXT_UNMERGED_SIG set
- unmerged_srch: Search function for unmerged vector
- unmerged_cmp: Compare function for unmerged vector
New data structures:
- git_index now contains a git_vector unmerged that stores
unmerged entries
- git_index_entry_unmerged: Representation of an unmerged file
entry. It represents all three versions of the file at the
same time, with one name, three modes and three OIDs
|
|
729b6f49
|
2011-04-21T10:40:54
|
|
index: Allow user to toggle whether to replace an index entry
When in the middle of a merge, the index needs to contain several files
with the same name. git_index_insert() used to prevent this by not adding a new entry if an entry with the same name already existed.
|
|
e69ac243
|
2011-04-19T16:38:52
|
|
config: export git_config_[sg]et_long
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|
|
def3fef1
|
2011-04-12T15:52:34
|
|
Add `git_tag_list`
Lists all the tag references in a repository using a custom callback.
Includes unit tests courtesy of Emeric Fermas <3
|
|
55c197cd
|
2011-04-11T17:41:21
|
|
Merge upstream/development
|
|
1eb0f68e
|
2011-04-11T12:38:50
|
|
merge branch development
|
|
8416c9ad
|
2011-04-09T15:31:12
|
|
Rename `git_signature_new_now`
The new name is more cool.
|
|
9e9e6ae1
|
2011-04-05T16:15:54
|
|
Add API git_signature_new_now
Most tags will have a timestamp of whenever the code is running and
dealing with time and timezones is error-prone. Optimize for this case
by adding a function which causes the signature to be created with a
current timestamp.
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
|