Commit Graph

6331 Commits

Author SHA1 Message Date
Russell Belfer
b47349b8dc Port tests from PR 1683
This ports over some of the tests from
    https://github.com/libgit2/libgit2/pull/1683
by @yorah and @ethomson
2013-09-17 09:31:45 -07:00
Russell Belfer
0e32635fcf Move binary check to CRLF filter itself
Checkout should not reject binary files from filters, as a filter
may actually wish to operate on binary files.  The CRLF filter should
reject binary files itself if it wishes to.  Moreover, the CRLF
filter requires this logic so that users can emulate the checkout
data in their odb -> workdir filtering.

Conflicts:
	src/checkout.c
	src/crlf.c
2013-09-17 09:31:45 -07:00
Russell Belfer
a9f51e430f Merge git_buf and git_buffer
This makes the git_buf struct that was used internally into an
externally available structure and eliminates the git_buffer.

As part of that, some of the special cases that arose with the
externally used git_buffer were blended into the git_buf, such as
being careful about git_buf objects that may have a NULL ptr and
allowing for bufs with a valid ptr and size but zero asize as a
way of referring to externally owned data.
2013-09-17 09:31:45 -07:00
Russell Belfer
4b11f25a4f Add ident filter
This adds the ident filter (that knows how to replace $Id$) and
tweaks the filter APIs and code so that git_filter_source objects
actually have the updated OID of the object being filtered when
it is a known value.
2013-09-17 09:31:45 -07:00
Russell Belfer
40cb40fab9 Add functions to manipulate filter lists
Extend the git2/sys/filter API with functions to look up a filter
and add it manually to a filter list.  This requires some trickery
because the regular attribute lookups and checks are bypassed when
this happens, but in the right hands, it will allow a user to have
granular control over applying filters.
2013-09-17 09:31:45 -07:00
Russell Belfer
0646634e2f Update filter registry code
This updates the git filter registry to be a little cleaner and
plugs some memory leaks.
2013-09-17 09:31:45 -07:00
Russell Belfer
a3aa5f4d5d Add simple global shutdown hooks
Increasingly there are a number of components that want to do some
cleanup at global shutdown time (at least if there are not going
to be memory leaks).  This creates a very simple system of shutdown
hooks that will be invoked by git_threads_shutdown.  Right now, the
maximum number of hooks is hardcoded, but since adding a hook is
not a public API, it should be fine and I thought it was better to
start off with really simple code.
2013-09-17 09:31:45 -07:00
Russell Belfer
e7d0ced219 Fix longstanding valgrind warning
There was a possible circumstance that could result in reading
past the end of a buffer.  This check fixes that.
2013-09-17 09:31:44 -07:00
Russell Belfer
29e92d385e Hook up filter initialize callback
I knew I forgot something
2013-09-17 09:31:44 -07:00
Russell Belfer
2a7d224f99 Extend public filter api with filter lists
This moves the git_filter_list into the public API so that users
can create, apply, and dispose of filter lists.  This allows more
granular application of filters to user data outside of libgit2
internals.

This also converts all the internal usage of filters to the public
APIs along with a few small tweaks to make it easier to use the
public git_buffer stuff alongside the internal git_buf.
2013-09-17 09:31:44 -07:00
Russell Belfer
974774c7b0 Add attributes to filters and fix registry
The filter registry as implemented was too primitive to actually
work once multiple filters were coming into play.  This expands
the implementation of the registry to handle multiple prioritized
filters correctly.

Additionally, this adds an "attributes" field to a filter that
makes it really really easy to implement filters that are based
on one or more attribute values.  The lookup and even simple value
checking can all happen automatically without custom filter code.

Lastly, with the registry improvements, this fills out the filter
lifecycle callbacks, with initialize and shutdown callbacks that
will be called before the filter is first used and after it is
last invoked.  This allows for system-wide initialization and
cleanup by the filter.
2013-09-17 09:31:44 -07:00
Russell Belfer
570ba25cb0 Make git_filter_source opaque 2013-09-17 09:30:06 -07:00
Russell Belfer
85d5481206 Create public filter object and use it
This creates include/sys/filter.h with a basic definition of a
git_filter and then converts the internal code to use it.  There
are related internal objects (git_filter_list) that we will want
to publish at some point, but this is a first step.
2013-09-17 09:30:06 -07:00
Russell Belfer
0cf77103b2 Start of filter API + git_blob_filtered_content
This begins the process of exposing git_filter objects to the
public API.  This includes:

* new public type and API for `git_buffer` through which an
  allocated buffer can be passed to the user
* new API `git_blob_filtered_content`
* make the git_filter type and GIT_FILTER_TO_... constants public
2013-09-17 09:30:06 -07:00
Linquize
a025907e0d Can load default template directory 2013-09-18 00:09:09 +08:00
Linquize
b99b10f285 Can git_libgit2_opts() with GIT_OPT_GET_TEMPLATE_PATH and GIT_OPT_SET_TEMPLATE_PATH 2013-09-18 00:00:41 +08:00
Linquize
7e8934bba2 Can guess win32 git template dir 2013-09-17 23:29:02 +08:00
Linquize
f84bc38853 Refactor git_win32__find_system_dirs() to extract "etc\\" as subpath parameter 2013-09-17 23:28:16 +08:00
Vicent Martí
4581f9d8ab Merge pull request #1833 from libgit2/cmn/config-include
Support config includes
2013-09-17 08:09:57 -07:00
Vicent Martí
92457cad41 Merge pull request #1857 from linquize/find-git-path-win32
Fix failure in win32 git path guessing
2013-09-17 08:00:44 -07:00
Linquize
89095fbddc Fix failure in win32_find_git_in_registry() when UAC is turned on
Demand read only access to registry key instead of full access.
This might happen in Windows Vista and later.
2013-09-17 22:57:30 +08:00
Linquize
ffbd337aef Fix failure in win32_find_git_in_registry()
The buffer size 0 was definitely not enough so it failed
2013-09-17 22:57:06 +08:00
Vicent Martí
efc9e6700f Merge pull request #1856 from libgit2/cmn/no-orphans
No such thing as an orphan branch
2013-09-17 03:45:35 -07:00
Vicent Martí
38fba8371e Merge pull request #1851 from tiennou/libssh2-errors
Provide libssh2 error message
2013-09-17 03:40:50 -07:00
Carlos Martín Nieto
605da51a2c No such thing as an orphan branch
Unfortunately git-core uses the term "unborn branch" and "orphan
branch" interchangeably. However, "orphan" is only really there for
the checkout command, which has the `--orphan` option so it doesn't
actually create the branch.

Branches never have parents, so the distinction of a branch with no
parents is odd to begin with. Crucially, the error messages deal with
unborn branches, so let's use that.
2013-09-17 09:50:30 +02:00
Ben Straub
4c7fdb4d3d Add blame example 2013-09-16 16:27:21 -07:00
Ben Straub
ceab4e2606 Port blame from git.git 2013-09-16 16:23:50 -07:00
Ben Straub
549931679a Merge branch 'development' into blame_rebased
Conflicts:
	include/git2.h
2013-09-16 16:12:31 -07:00
Etienne Samson
eec4dcc34b Whitespace. 2013-09-16 23:07:22 +02:00
Etienne Samson
b622aabec0 Add a wrapper to provide the libssh2 error message 2013-09-16 23:07:19 +02:00
Vicent Marti
c62b5ca590 clone: Anal as fuck 2013-09-16 22:23:05 +02:00
Ben Straub
8821c9aa5b Merge pull request #1850 from linquize/git-clone-init-options
git_clone supports init_options
2013-09-15 17:50:03 -07:00
Linquize
f2df503bab git_clone supports optional init_options 2013-09-16 08:02:36 +08:00
Russell Belfer
e580afd863 Add tests for git_tree_walk
This tests the fixes for issues from #1849
2013-09-13 14:33:26 -07:00
Russell Belfer
236945a524 Merge pull request #1849 from whavinga/treewalker
Treewalker
2013-09-13 14:31:26 -07:00
wilke
d7fc2eb29b Fix memory leak in git_tree_walk on error or when stopping the walk from the supplied callback 2013-09-13 21:36:39 +02:00
wilke
4e01e3029b Prevent git_tree_walk 'skip entry' callback return code from leaking through as the return value of git_tree_walk 2013-09-13 21:21:33 +02:00
Vicent Martí
25803c632d Merge pull request #1848 from libgit2/ntk/fix/cl_assert_equal_sz
Fix cl_assert_equal_sz error message formating
2013-09-12 06:42:06 -07:00
nulltoken
6f2003612c clar: Move cl_assert_equal_sz() definition to clar.h 2013-09-12 13:54:33 +02:00
nulltoken
273ddc54f5 clar: Fix clar__assert_equal error message formating 2013-09-12 13:54:22 +02:00
Vicent Martí
a6ee166111 Merge pull request #1839 from isaac/ssh-repository-invalid
SSH: Clone fails with errors: ERROR: Repository invalid & Early EOF
2013-09-11 16:46:39 -07:00
Ben Straub
7301cd6007 Merge pull request #1846 from libgit2/ntk/fix/format
errors: Fix format of some error messages
2013-09-11 13:14:42 -07:00
nulltoken
8cf8052534 errors: Fix format of some error messages 2013-09-11 20:13:59 +02:00
Russell Belfer
6c38e60a00 Merge pull request #1838 from libgit2/cmn/first-parent
revwalk: allow simplifying by first-parent
2013-09-10 16:55:58 -07:00
Russell Belfer
68642bce4b Merge pull request #1841 from libgit2/ntk/fix/loose_ambiguous
Make odb_loose return EAMBIGUOUS when required
2013-09-10 16:54:37 -07:00
nulltoken
209f9b67c4 odb: Teach loose backend to return EAMBIGUOUS 2013-09-10 22:36:13 +02:00
nulltoken
d0cd6c427a path: Make direach() return EUSER on callback error 2013-09-10 22:36:10 +02:00
Carlos Martín Nieto
15f7b9b8d9 revwalk: allow simplifying by first-parent
When enabled, only the first parent of each commit will be queued,
enabling a simple way of using first-parent simplification.
2013-09-09 20:31:14 +02:00
Russell Belfer
38859f2937 Merge pull request #1843 from uh-sem-blee/development
fixing headers with bad values for objective-c
2013-09-09 11:11:39 -07:00
Russell Belfer
0c52b204c5 Make work if built with threading enabled 2013-09-09 11:07:17 -07:00