Commit Graph

5535 Commits

Author SHA1 Message Date
Vicent Marti
406dd556e2 bitvec: Simplify the bit vector code 2013-07-10 21:05:47 +02:00
Russell Belfer
2b672d5b64 Add git_pathspec_match_diff API
This adds an additional pathspec API that will match a pathspec
against a diff object.  This is convenient if you want to handle
renames (so you need the whole diff and can't use the pathspec
constraint built into the diff API) but still want to tell if the
diff had any files that matched the pathspec.

When the pathspec is matched against a diff, instead of keeping
a list of filenames that matched, instead the API keeps the list
of git_diff_deltas that matched and they can be retrieved via a
new API git_pathspec_match_list_diff_entry.

There are a couple of other minor API extensions here that were
mostly for the sake of convenience and to reduce dependencies
on knowing the internal data structure between files inside the
library.
2013-07-10 20:50:33 +02:00
Russell Belfer
6fc5a58197 Basic bit vector
This is a simple bit vector object that is not resizable after
the initial allocation but can be of arbitrary size.  It will
keep the bti vector entirely on the stack for vectors 64 bits
or less, and will allocate the vector on the heap for larger
sizes.  The API is uniform regardless of storage location.

This is very basic right now and all the APIs are inline functions,
but it is useful for storing an array of boolean values.
2013-07-10 20:50:33 +02:00
Russell Belfer
3e96ecf219 Improve include/git2/pathspec.h docs 2013-07-10 20:50:33 +02:00
Russell Belfer
9abc78ae61 Convert commit->parent_ids to git_array_t
This converts the array of parent SHAs from a git_vector where
each SHA has to be separately allocated to a git_array_t where
all the SHAs can be kept in one block.  Since the two collections
have almost identical APIs, there isn't much involved in making
the change.  I did add an API to git_array_t so that it could be
allocated at a precise initial size.
2013-07-10 20:50:32 +02:00
Russell Belfer
bc6f0839eb Add a bunch more features to log example 2013-07-10 20:50:32 +02:00
Russell Belfer
a8b5f116bc Fix example/log.c pathspec handling of merges
This fixes the way the example log program decides if a merge
commit should be shown when a pathspec is given.  Also makes it
easier to use the pathspec API to just check "does a tree match
anything in the pathspec" without allocating a match list.
2013-07-10 20:50:32 +02:00
Russell Belfer
733c4f3aca more examples/log.c bug fixing 2013-07-10 20:50:32 +02:00
Russell Belfer
5a169711fa fix bug with order args and no revision 2013-07-10 20:50:32 +02:00
Russell Belfer
2b3bd8ecd8 Fix example/log.c minor diffs with git log 2013-07-10 20:50:32 +02:00
Russell Belfer
f44c4fa108 Add basic commit formatting to log output 2013-07-10 20:50:32 +02:00
Russell Belfer
f094f9052f Add raw header access to commit API 2013-07-10 20:50:32 +02:00
Russell Belfer
8ba0ff6972 rev-parse example 2013-07-10 20:50:32 +02:00
Russell Belfer
d0628e2fee More progress on log example 2013-07-10 20:50:32 +02:00
Russell Belfer
0d44d3dc84 Extending log example code
This adds more command line processing to the example version of
log.  In particular, this adds the funky command line processing
that allows an arbitrary series of revisions followed by an
arbitrary number of paths and/or glob patterns.

The actual logging part still isn't implemented.
2013-07-10 20:50:32 +02:00
Russell Belfer
d2ce27dd49 Add public API for pathspec matching
This adds a new public API for compiling pathspecs and matching
them against the working directory, the index, or a tree from the
repository.  This also reworks the pathspec internals to allow the
sharing of code between the existing internal usage of pathspec
matching and the new external API.

While this is working and the new API is ready for discussion, I
think there is still an incorrect behavior in which patterns are
always matched against the full path of an entry without taking
the subdirectories into account (so "s*" will match "subdir/file"
even though it wouldn't with core Git).  Further enhancements are
coming, but this was a good place to take a functional snapshot.
2013-07-10 20:50:31 +02:00
Russell Belfer
d39fff3648 Basic framework for log command 2013-07-10 20:50:31 +02:00
Vicent Martí
bf3ee3cf31 Merge pull request #1705 from arrbee/avoid-index-double-free
Try harder not to double free index entries
2013-07-10 10:58:58 -07:00
Vicent Martí
bf730611da Merge pull request #1717 from libgit2/arrbee/pr-1706-merged-and-cleaned
PR 1706 plus error reporting cleanups
2013-07-10 10:58:26 -07:00
Russell Belfer
33c8c6f0b8 trivial whitespace fixup 2013-07-10 10:48:32 -07:00
Russell Belfer
c2de6b1adf Bring SSH error reporting up to base standards
The SSH error checking and reporting could still be further
improved by using the libssh2 native methods to get error info,
but at least this ensures that all error codes are checked and
translated into libgit2 error messages.
2013-07-10 10:21:24 -07:00
Russell Belfer
68bc49a158 Merge branch 'ssh-cred-fix' of tiennou/libgit2
Conflicts:
	src/transports/ssh.c
2013-07-10 09:20:46 -07:00
Etienne Samson
08bf80fa2b Tab indent. 2013-07-10 09:42:28 +02:00
Etienne Samson
367c1903e9 Add some missing error messages. 2013-07-10 09:33:14 +02:00
Vicent Martí
b8cd7aa9f6 Merge pull request #1704 from arrbee/kill-status-index-then-workdir
Remove GIT_STATUS_SHOW_INDEX_THEN_WORKDIR option
2013-07-09 17:20:55 -07:00
Vicent Martí
77fa06f3d9 Merge pull request #1695 from arrbee/fix-1695
API should not be ifdeffed
2013-07-09 17:20:36 -07:00
Vicent Martí
550cd2d776 Merge pull request #1716 from arrbee/fix-config-get-multivar
Fix git_config_get_multivar with interleaved missing entries
2013-07-09 16:54:34 -07:00
Russell Belfer
e4fda954d6 A little git_config_get_multivar code cleanup 2013-07-09 16:46:18 -07:00
Russell Belfer
7b5c0d1846 Add more tests for git_config_get_multivar
The old tests didn't try failing lookups or lookups across
multiple config files with some having the pattern and some
not having it.
2013-07-09 16:45:23 -07:00
J. David Ibáñez
07fba63e9e Fix return value in git_config_get_multivar
If there is not an error, the return value was always the return value
of the last call to file->get_multivar

With this commit GIT_ENOTFOUND is only returned if all the calls to
filge-get_multivar return GIT_ENOTFOUND.
2013-07-09 16:23:46 -07:00
Russell Belfer
290e147985 Add GIT_CAP_SSH if library was built with SSH
This also adds a test that actually calls git_libgit2_capabilities
and git_libgit2_version.
2013-07-09 16:17:41 -07:00
Russell Belfer
a4456929a8 Make credential clearing consistent
This makes all of the credential objects use the same pattern to
clear the contents and call git__memzero when done.  Much of this
information is probably not sensitive, but it also seems better
to just clear consistently.
2013-07-09 16:16:24 -07:00
Russell Belfer
03d9b930ee Indent with tabs 2013-07-09 14:45:58 -07:00
Russell Belfer
3eae9467e5 Merge pull request #1710 from arrbee/fix-1710
Null byte in hunk header
2013-07-09 14:24:57 -07:00
Russell Belfer
5813bc2194 Lots of SSH credential stuff can be left on
Much of the SSH credential creation API can be left enabled even
on platforms with no SSH support.  We really just have to give an
error when you attempt to open the SSH connection.
2013-07-09 12:01:16 -07:00
Russell Belfer
a3c062dbf8 Make SSH APIs present even without SSH support
The SSH APIs will just return an error code and state that the
library was built without SSH support if they are called in
that case.
2013-07-09 09:58:33 -07:00
Vicent Martí
42d1a1e502 Merge pull request #1715 from tiennou/const-signature
Make the git_signature `const` in the stash API.
2013-07-09 06:46:50 -07:00
Etienne Samson
2274993be5 Make the git_signature const in the stash API. 2013-07-09 12:52:25 +02:00
Russell Belfer
a5f9b5f8d8 Diff hunk context off by one on long lines
The diff hunk context string that is returned to xdiff need not
be NUL terminated because the xdiff code just copies the number of
bytes that you report directly into the output.  There was an off
by one in the diff driver code when the header context was longer
than the output buffer size, the output buffer length included
the NUL byte which was copied into the hunk header.

Fixes #1710
2013-07-05 16:59:38 -07:00
Russell Belfer
82cb8e236a Merge pull request #1692 from arrbee/fix-1692
Segmentation fault on git_clone
2013-07-05 10:52:24 -07:00
Etienne Samson
f6bd086335 Fix a probable leak. 2013-07-03 22:10:05 +02:00
Etienne Samson
219f318c05 Fix a crash if git_remote_set_cred_acquire_cb wasn't called before connecting.
Fixes #1700.
2013-07-03 22:10:05 +02:00
Russell Belfer
2a16914c35 Remove GIT_STATUS_SHOW_INDEX_THEN_WORKDIR option
This option serves no benefit now that the git_status_list API
is available.  It was of questionable value before and now it
would just be a bad idea to use it rather than the indexed API.
2013-07-03 12:20:34 -07:00
Russell Belfer
4ae29053d5 Merge pull request #1701 from yorah/fix/gh-1698
Fix segfault in git_status_foreach_ext()
2013-07-03 11:45:10 -07:00
Russell Belfer
178aa39cc2 Be more thread aware with some index updates
The index isn't really thread safe for the most part, but we can
easily be more careful and avoid double frees and the like, which
are serious problems (as opposed to a lookup which might return
the incorrect value but if the index in being updated, that is
much harder to avoid).
2013-07-03 11:42:43 -07:00
yorah
9b6075b25f Fix segfault in git_status_foreach_ext()
Add tests for the `GIT_STATUS_SHOW_XXX` flags.
2013-07-03 17:22:12 +02:00
Vicent Martí
6bb7bff274 Merge pull request #1696 from AndrejMitrovic/FixTypo
[trivial] Fix small typo in docs for git_repository_message.
2013-07-02 14:43:44 -07:00
Andrej Mitrovic
f8ccd6c935 Fix small typo in docs for git_repository_message. 2013-07-02 20:23:54 +02:00
Ben Straub
7c559c2528 Merge pull request #1694 from AndrejMitrovic/FixupDocEnums
[trivial] Fix docs to use proper enum names
2013-07-01 12:42:08 -07:00
Russell Belfer
55ededfd39 Make refspec_transform paranoid about arguments 2013-07-01 10:21:14 -07:00