]> git.proxmox.com Git - libgit2.git/log
libgit2.git
10 years agoMake the build CMake 2.6 compatible
Marcin Sawicki [Mon, 28 Apr 2014 14:24:36 +0000 (15:24 +0100)]
Make the build CMake 2.6 compatible

10 years agoMerge pull request #2301 from libgit2/cmn/pack-objects-memory
Vicent Marti [Sun, 27 Apr 2014 10:57:53 +0000 (03:57 -0700)]
Merge pull request #2301 from libgit2/cmn/pack-objects-memory

Keep the deflate buffer from ballooning up

10 years agopack-objects: always write out the status in write_one()
Carlos Martín Nieto [Sat, 26 Apr 2014 16:15:39 +0000 (18:15 +0200)]
pack-objects: always write out the status in write_one()

Make sure we set the output parameter to a value.

10 years agozstream: grow based on used memory rather than allocated
Carlos Martín Nieto [Sat, 26 Apr 2014 16:04:43 +0000 (18:04 +0200)]
zstream: grow based on used memory rather than allocated

When deflating data, we might need to grow the buffer. Currently we
add a guess on top of the currently-allocated buffer size.

When we re-use the buffer, it already has some memory allocated; adding
to that means that we always grow the buffer regardless of how much we
need to use.

Instead, increase on top of the currently-used size. This still leaves
us with the allocated size of the largest object we compress, but it's a
minor pain compared to unbounded growth.

This fixes #2285.

10 years agorefdb: fix typo and wording
Carlos Martín Nieto [Sat, 26 Apr 2014 12:29:18 +0000 (14:29 +0200)]
refdb: fix typo and wording

10 years agoMerge pull request #2299 from mekishizufu/fix_leaks
Vicent Marti [Fri, 25 Apr 2014 14:08:41 +0000 (07:08 -0700)]
Merge pull request #2299 from mekishizufu/fix_leaks

Plug some leaks

10 years agoReset tests: Use sandboxed index
Jiri Pospisil [Fri, 25 Apr 2014 13:49:58 +0000 (15:49 +0200)]
Reset tests: Use sandboxed index

10 years agoFilter: Make sure to release local on error
Jiri Pospisil [Fri, 25 Apr 2014 13:49:26 +0000 (15:49 +0200)]
Filter: Make sure to release local on error

10 years agoMerge pull request #2284 from jacquesg/push-progress-callback
Vicent Marti [Fri, 25 Apr 2014 09:10:19 +0000 (02:10 -0700)]
Merge pull request #2284 from jacquesg/push-progress-callback

Fire progress and update tips callbacks also for pushes.

10 years agoMerge pull request #2297 from libgit2/rb/status-with-precomposed-changes
Vicent Marti [Fri, 25 Apr 2014 09:07:42 +0000 (02:07 -0700)]
Merge pull request #2297 from libgit2/rb/status-with-precomposed-changes

Improve test coverage of status with different core.precomposeunicode settings

10 years agoMerge pull request #2241 from libgit2/rb/stash-skip-submodules
Vicent Marti [Fri, 25 Apr 2014 09:04:12 +0000 (02:04 -0700)]
Merge pull request #2241 from libgit2/rb/stash-skip-submodules

Improve stash and checkout for ignored + untracked items

10 years agoMerge pull request #2294 from ethomson/merge_checkout_strategy
Russell Belfer [Thu, 24 Apr 2014 23:20:08 +0000 (16:20 -0700)]
Merge pull request #2294 from ethomson/merge_checkout_strategy

Merge checkout strategy

10 years agoImprove docs for status rename detection limits
Russell Belfer [Thu, 24 Apr 2014 22:40:50 +0000 (15:40 -0700)]
Improve docs for status rename detection limits

and make tests empty on platforms without iconv support.

10 years agoTest toggling core.precomposeunicode yields rename
Russell Belfer [Thu, 24 Apr 2014 22:25:01 +0000 (15:25 -0700)]
Test toggling core.precomposeunicode yields rename

There is an interesting difference with core Git here, though.
Because libgit2 will do rename detection with the working directory,
in the last case where the HEAD and the working directory both
have the decomposed data and the index has the composed data, we
generate a single status record with two renames whereas Git will
generate one rename (head to index) and one untracked file.

10 years agoTest decomposed unicode renames work as expected
Russell Belfer [Thu, 24 Apr 2014 21:46:59 +0000 (14:46 -0700)]
Test decomposed unicode renames work as expected

10 years agoHandle explicitly ignored dir slightly differently
Russell Belfer [Thu, 24 Apr 2014 18:59:50 +0000 (11:59 -0700)]
Handle explicitly ignored dir slightly differently

When considering status of untracked directories, if we find an
explicitly ignored item, even if it is a directory, treat the
parent as an IGNORED item.  It was accidentally being treated as
an EMPTY item because we were not looking into the ignored subdir.

10 years agoMerge pull request #2295 from libgit2/cmn/fetchhead-quote
Vicent Marti [Thu, 24 Apr 2014 12:24:46 +0000 (05:24 -0700)]
Merge pull request #2295 from libgit2/cmn/fetchhead-quote

fetchhead: deal with quotes in branch names

10 years agofetchhead: deal with quotes in branch names
Carlos Martín Nieto [Thu, 24 Apr 2014 12:08:29 +0000 (14:08 +0200)]
fetchhead: deal with quotes in branch names

The current FETCH_HEAD parsing code assumes that a quote must end the
branch name. Git however allows for quotes as part of a branch name,
which causes us to consider the FETCH_HEAD file as invalid.

Instead of searching for a single quote char, search for a quote char
followed by SP, which is not a valid part of a ref name.

10 years agomerge: checkout default shouldn't clobber given
Edward Thomson [Wed, 23 Apr 2014 23:40:21 +0000 (19:40 -0400)]
merge: checkout default shouldn't clobber given

10 years agomerge: default checkout strategy for should be SAFE
Edward Thomson [Wed, 23 Apr 2014 23:26:58 +0000 (19:26 -0400)]
merge: default checkout strategy for should be SAFE

10 years agoTreat ignored, empty, and untracked dirs different
Russell Belfer [Wed, 23 Apr 2014 23:28:45 +0000 (16:28 -0700)]
Treat ignored, empty, and untracked dirs different

In the iterator, distinguish between ignores and empty directories
so that diff and status can ignore empty directories, but checkout
and stash can treat them as untracked items.

10 years agoMerge pull request #2291 from ethomson/patch_binary
Vicent Marti [Wed, 23 Apr 2014 16:27:15 +0000 (09:27 -0700)]
Merge pull request #2291 from ethomson/patch_binary

patch: emit deflated binary patches (optionally)

10 years agoMerge pull request #2283 from phkelley/win32_fs
Vicent Marti [Wed, 23 Apr 2014 14:13:49 +0000 (07:13 -0700)]
Merge pull request #2283 from phkelley/win32_fs

Win32: UTF-8 <-> WCHAR conversion overhaul

10 years agoReact to feedback for UTF-8 <-> WCHAR and reparse work
Philip Kelley [Tue, 22 Apr 2014 14:21:19 +0000 (10:21 -0400)]
React to feedback for UTF-8 <-> WCHAR and reparse work

10 years agoMerge pull request #2289 from libgit2/rb/note-git-diff-index-behavior
Vicent Marti [Wed, 23 Apr 2014 10:21:05 +0000 (03:21 -0700)]
Merge pull request #2289 from libgit2/rb/note-git-diff-index-behavior

Some doc and examples/diff.c changes

10 years agoMake checkout match diff for untracked/ignored dir
Russell Belfer [Wed, 23 Apr 2014 04:51:54 +0000 (21:51 -0700)]
Make checkout match diff for untracked/ignored dir

When diff finds an untracked directory, it emulates Git behavior
by looking inside the directory to see if there are any untracked
items inside it. If there are only ignored items inside the dir,
then diff considers it ignored, even if there is no direct ignore
rule for it.

Checkout was not copying this behavior - when it found an untracked
directory, it just treated it as untracked.  Unfortunately, when
combined with GIT_CHECKOUT_REMOVE_UNTRACKED, this made is seem that
checkout (and stash, which uses checkout) was removing ignored
items when you had only asked it to remove untracked ones.

This commit moves the logic for advancing past an untracked dir
while scanning for non-ignored items into an iterator helper fn,
and uses that for both diff and checkout.

10 years agopatch: emit binary patches (optionally)
Edward Thomson [Tue, 22 Apr 2014 18:58:33 +0000 (14:58 -0400)]
patch: emit binary patches (optionally)

10 years agoFailing test for stashing a buried ignored file
Russell Belfer [Tue, 22 Apr 2014 22:23:39 +0000 (15:23 -0700)]
Failing test for stashing a buried ignored file

10 years agoMake stash and checkout ignore contained repos
Russell Belfer [Wed, 2 Apr 2014 19:07:27 +0000 (12:07 -0700)]
Make stash and checkout ignore contained repos

To emulate git, stash should not remove untracked git repositories
inside the parent repo, and checkout's REMOVE_UNTRACKED should
also skip over these items.

`git stash` actually prints a warning message for these items.
That should be possible with a checkout notify callback if you
wanted to, although it would require a bit of extra logic as things
are at the moment.

10 years agoReplace math fns with simpler integer math
Russell Belfer [Tue, 22 Apr 2014 19:59:31 +0000 (12:59 -0700)]
Replace math fns with simpler integer math

10 years agoUse git_diff_get_stats in example/diff + refactor
Russell Belfer [Tue, 22 Apr 2014 19:33:27 +0000 (12:33 -0700)]
Use git_diff_get_stats in example/diff + refactor

This takes the `--stat` and related example options in the example
diff.c program and converts them to use the `git_diff_get_stats`
API which nicely formats stats for you.

I went to add bar-graph scaling to the stats formatter and noticed
that the `git_diff_stats` structure was holding on to all of the
`git_patch` objects.  Unfortunately, each of these objects keeps
the full text of the diff in memory, so this is very expensive.  I
ended up modifying `git_diff_stats` to keep just the data that it
needs to keep and allowed it to release the patches.  Then, I added
width scaling to the output on top of that.

In making the diff example program match 'git diff' output, I ended
up removing an newline from the sumamry output which I then had to
compensate for in the email formatting to match the expectations.

Lastly, I went through and refactored the tests to use a couple of
helper functions and reduce the overall amount of code there.

10 years agoSome doc and examples/diff.c changes
Russell Belfer [Mon, 21 Apr 2014 23:08:05 +0000 (16:08 -0700)]
Some doc and examples/diff.c changes

I was playing with "git diff-index" and wanted to be able to
emulate that behavior a little more closely with the diff example.

Also, I wanted to play with running `git_diff_tree_to_workdir`
directly even though core Git doesn't exactly have the equivalent,
so I added a command line option for that and tweaked some other
things in the example code.

This changes a minor output thing in that the "raw" print helper
function will no longer add ellipses (...) if the OID is not
actually abbreviated.

10 years agoMerge pull request #2282 from libgit2/cmn/remote-easier-bind
Vicent Marti [Tue, 22 Apr 2014 13:07:18 +0000 (15:07 +0200)]
Merge pull request #2282 from libgit2/cmn/remote-easier-bind

A few niceties for binding authors

10 years agotransports: allow the creds callback to say it doesn't exist
Carlos Martín Nieto [Sat, 19 Apr 2014 13:52:58 +0000 (15:52 +0200)]
transports: allow the creds callback to say it doesn't exist

Allow the credentials callback to return GIT_PASSTHROUGH to make the
transports code behave as though none was set.

This should make it easier for bindings to behave closer to the C code
when there is no credentials callback set at their level.

10 years agoremote: provide read access to the callback structure
Carlos Martín Nieto [Sat, 19 Apr 2014 13:34:12 +0000 (15:34 +0200)]
remote: provide read access to the callback structure

This should make it easier for bindings to dynamically override their
own callbacks.

10 years agoMerge pull request #2287 from libgit2/rb/moar-coverity-fixes
Vicent Marti [Tue, 22 Apr 2014 09:04:35 +0000 (11:04 +0200)]
Merge pull request #2287 from libgit2/rb/moar-coverity-fixes

Fix some issues from the last Coverity scan

10 years agoMerge pull request #2286 from libgit2/rb/fix-reset-staged-delete
Vicent Marti [Tue, 22 Apr 2014 09:03:42 +0000 (11:03 +0200)]
Merge pull request #2286 from libgit2/rb/fix-reset-staged-delete

Fix reset for staged deletes

10 years agoHandle win32 reparse points properly
Edward Thomson [Tue, 22 Apr 2014 03:32:31 +0000 (23:32 -0400)]
Handle win32 reparse points properly

10 years agoFix some coverity-found issues
Russell Belfer [Mon, 21 Apr 2014 18:55:57 +0000 (11:55 -0700)]
Fix some coverity-found issues

10 years agoFix reset for staged deletes
Russell Belfer [Mon, 21 Apr 2014 18:54:54 +0000 (11:54 -0700)]
Fix reset for staged deletes

10 years agoVerify update_tips callbacks in push test cases
Jacques Germishuys [Mon, 21 Apr 2014 15:49:38 +0000 (17:49 +0200)]
Verify update_tips callbacks in push test cases

10 years agoMerge pull request #2275 from jacquesg/apple-warning
Russell Belfer [Mon, 21 Apr 2014 16:50:43 +0000 (09:50 -0700)]
Merge pull request #2275 from jacquesg/apple-warning

Check for compiler flag support instead of checking for a platform

10 years agoFire update_tips callback also for pushes.
Jacques Germishuys [Mon, 21 Apr 2014 15:02:05 +0000 (17:02 +0200)]
Fire update_tips callback also for pushes.

10 years agoattrcache: fix use-after-free
Carlos Martín Nieto [Mon, 21 Apr 2014 14:38:52 +0000 (16:38 +0200)]
attrcache: fix use-after-free

Reported by coverity.

10 years agoCorrect argument order of git__calloc()
Jacques Germishuys [Mon, 21 Apr 2014 13:25:19 +0000 (15:25 +0200)]
Correct argument order of git__calloc()

10 years agoIt is safe to free() a NULL pointer
Jacques Germishuys [Mon, 21 Apr 2014 13:25:02 +0000 (15:25 +0200)]
It is safe to free() a NULL pointer

10 years agosysdir: free the path if we cannot find the file
Carlos Martín Nieto [Mon, 21 Apr 2014 13:48:05 +0000 (15:48 +0200)]
sysdir: free the path if we cannot find the file

Returning an error cleared the buf, but this operation does not free the
memory associated with it. Use git_buf_free() instead.

10 years agoDon't redefine the same callback types, their signatures may change
Jacques Germishuys [Mon, 21 Apr 2014 09:23:29 +0000 (11:23 +0200)]
Don't redefine the same callback types, their signatures may change

10 years agoRename progress callback to sideband_progress
Jacques Germishuys [Mon, 21 Apr 2014 08:55:37 +0000 (10:55 +0200)]
Rename progress callback to sideband_progress

10 years agoCheck the return codes of remote callbacks.
Jacques Germishuys [Sun, 20 Apr 2014 20:06:05 +0000 (22:06 +0200)]
Check the return codes of remote callbacks.

The user may have requested that the operation be cancelled.

10 years agoFire progress callbacks also for pushes.
Jacques Germishuys [Sun, 20 Apr 2014 17:19:13 +0000 (19:19 +0200)]
Fire progress callbacks also for pushes.

It's not very useful to only know that a pre-receive hook has declined
a push, you probably want to know why.

10 years agoWin32: UTF-8 <-> WCHAR conversion overhaul
Philip Kelley [Sat, 19 Apr 2014 22:05:31 +0000 (18:05 -0400)]
Win32: UTF-8 <-> WCHAR conversion overhaul

10 years agoIntroduce AddCFlagIfSupported CMake macro
Jacques Germishuys [Sat, 19 Apr 2014 21:07:50 +0000 (23:07 +0200)]
Introduce AddCFlagIfSupported CMake macro

10 years agoMerge pull request #2273 from jacquesg/ssh-interactive
Vicent Marti [Sat, 19 Apr 2014 16:59:09 +0000 (18:59 +0200)]
Merge pull request #2273 from jacquesg/ssh-interactive

Add support for SSH keyboard-interactive authentication

10 years agoMerge pull request #2279 from libgit2/rb/moar-eegnöre-fîxés
Vicent Marti [Sat, 19 Apr 2014 11:05:32 +0000 (13:05 +0200)]
Merge pull request #2279 from libgit2/rb/moar-eegnöre-fîxés

Fix several ignore and attribute file behavior bugs

10 years agoMinor fixes
Russell Belfer [Fri, 18 Apr 2014 22:45:59 +0000 (15:45 -0700)]
Minor fixes

Only apply LEADING_DIR pattern munging to patterns in ignore and
attribute files, not to pathspecs used to select files to operate
on.  Also, allow internal macro definitions to be evaluated before
loading all external ones (important so that external ones can
make use of internal `binary` definition).

10 years agoFix ignore difference from git with trailing /*
Russell Belfer [Fri, 18 Apr 2014 21:42:40 +0000 (14:42 -0700)]
Fix ignore difference from git with trailing /*

Ignore patterns that ended with a trailing '/*' were still needing
to match against another actual '/' character in the full path.
This is not the same behavior as core Git.

Instead, we strip a trailing '/*' off of any patterns that were
matching and just take it to imply the FNM_LEADING_DIR behavior.

10 years agoPreload attribute files that may contain macros
Russell Belfer [Fri, 18 Apr 2014 21:29:58 +0000 (14:29 -0700)]
Preload attribute files that may contain macros

There was a latent bug where files that use macro definitions
could be parsed before the macro definitions were loaded.  Because
of attribute file caching, preloading files that are going to be
used doesn't add a significant amount of overhead, so let's always
preload any files that could contain macros before we assemble the
actual vector of files to scan for attributes.

10 years agoOnly zero sensitive information on destruction (and memory actually allocated by us)
Jacques Germishuys [Fri, 18 Apr 2014 18:05:28 +0000 (20:05 +0200)]
Only zero sensitive information on destruction (and memory actually allocated by us)

10 years agoCleanup tests with helper functions
Russell Belfer [Fri, 18 Apr 2014 17:58:01 +0000 (10:58 -0700)]
Cleanup tests with helper functions

10 years agoPop ignore only if whole relative path matches
Russell Belfer [Fri, 18 Apr 2014 17:32:35 +0000 (10:32 -0700)]
Pop ignore only if whole relative path matches

When traversing the directory structure, the iterator pushes and
pops ignore files using a vector.  Some directories don't have
ignore files, so it uses a path comparison to decide when it is
right to actually pop the last ignore file.  This was only
comparing directory suffixes, though, so a subdirectory with the
same name as a parent could result in the parent's .gitignore
being popped off the list ignores too early.  This changes the
logic to compare the entire relative path of the ignore file.

10 years agoOnly disable deprecation warnings on Apple for OpenSSL
Jacques Germishuys [Fri, 18 Apr 2014 17:13:18 +0000 (19:13 +0200)]
Only disable deprecation warnings on Apple for OpenSSL

10 years agoUse CHECK_C_COMPILER_FLAG to determine if the compiler supports a flag
Jacques Germishuys [Fri, 18 Apr 2014 16:32:06 +0000 (18:32 +0200)]
Use CHECK_C_COMPILER_FLAG to determine if the compiler supports a flag

This simplifies platform/compiler dependent checks where we optionally
enable features or disable warnings.

10 years agoFix inconsistent use of lower-case and upper-case names for macros
Jacques Germishuys [Fri, 18 Apr 2014 16:58:57 +0000 (18:58 +0200)]
Fix inconsistent use of lower-case and upper-case names for macros

10 years agoMerge pull request #2213 from ethomson/safecrlf
Russell Belfer [Fri, 18 Apr 2014 16:26:38 +0000 (09:26 -0700)]
Merge pull request #2213 from ethomson/safecrlf

Introduce core.safecrlf handling

10 years agoReplace void * with proper callback types
Jacques Germishuys [Fri, 18 Apr 2014 15:57:39 +0000 (17:57 +0200)]
Replace void * with proper callback types

10 years agoMake git_cred_ssh_custom_new() naming more consistent
Jacques Germishuys [Thu, 17 Apr 2014 22:49:07 +0000 (00:49 +0200)]
Make git_cred_ssh_custom_new() naming more consistent

10 years agoIntroduce git_cred_ssh_interactive_new()
Jacques Germishuys [Thu, 17 Apr 2014 21:03:44 +0000 (23:03 +0200)]
Introduce git_cred_ssh_interactive_new()

This allows for keyboard-interactive based SSH authentication

10 years agoMerge pull request #2274 from libgit2/cmn/ssh-expect-username
Vicent Marti [Fri, 18 Apr 2014 15:47:36 +0000 (17:47 +0200)]
Merge pull request #2274 from libgit2/cmn/ssh-expect-username

cred: tighten username rules

10 years agocred: tighten username rules
Carlos Martín Nieto [Fri, 18 Apr 2014 15:08:10 +0000 (17:08 +0200)]
cred: tighten username rules

The ssh-specific credentials allow the username to be missing. The idea
being that the ssh transport will then use the username provided in the
url, if it's available. There are two main issues with this.

The credential callback already knows what username was provided by the
url and needs to figure out whether it wants to ask the user for it or
it can reuse it, so passing NULL as the username means the credential
callback is suspicious.

The username provided in the url is not in fact used by the
transport. The only time it even considers it is for the user/pass
credential, which asserts the existence of a username in its
constructor. For the ssh-specific ones, it passes in the username stored
in the credential, which is NULL. The libssh2 macro we use runs strlen()
against this value (which is no different from what we would be doing
ourselves), so we then crash.

As the documentation doesn't suggest to leave out the username, assert
the need for a username in the code, which removes this buggy behavior
and removes implicit state.

git_cred_has_username() becomes a blacklist of credential types that do
not have a username. The only one at the moment is the 'default' one,
which is meant to call up some Microsoft magic.

10 years agoMerge pull request #2108 from libgit2/rb/threadsafe-index-iterator
Vicent Marti [Fri, 18 Apr 2014 10:33:19 +0000 (12:33 +0200)]
Merge pull request #2108 from libgit2/rb/threadsafe-index-iterator

Make index iterator thread safe

10 years agocherry-pick: terminate the commit id string
Carlos Martín Nieto [Thu, 17 Apr 2014 22:34:04 +0000 (00:34 +0200)]
cherry-pick: terminate the commit id string

We treat this as a NUL-terminated string, so make sure that we add the
terminator.

10 years agoSome memory leak fixes
Russell Belfer [Thu, 17 Apr 2014 21:35:29 +0000 (14:35 -0700)]
Some memory leak fixes

10 years agoFix broken logic for attr cache invalidation
Russell Belfer [Thu, 17 Apr 2014 18:53:13 +0000 (11:53 -0700)]
Fix broken logic for attr cache invalidation

The checks to see if files were out of date in the attibute cache
was wrong because the cache-breaker data wasn't getting stored
correctly.  Additionally, when the cache-breaker triggered, the
old file data was being leaked.

10 years agoLock attribute file while reparsing data
Russell Belfer [Mon, 14 Apr 2014 19:31:17 +0000 (12:31 -0700)]
Lock attribute file while reparsing data

I don't love this approach, but achieving thread-safety for
attribute and ignore data while reloading files would require a
larger rewrite in order to avoid this.  If an attribute or ignore
file is out of date, this holds a lock on the file while we are
reloading the data so that another thread won't try to reload the
data at the same time.

10 years agoFix race checking for existing index items
Russell Belfer [Mon, 14 Apr 2014 19:29:27 +0000 (12:29 -0700)]
Fix race checking for existing index items

In the threading tests, I was still seeing a race condition where
the same item could end up being inserted multiple times into the
index.  Preserving the sorted-ness of the index outside of the
`index_insert` call fixes the issue.

10 years agoFix tests with new attr cache code
Russell Belfer [Fri, 11 Apr 2014 19:12:47 +0000 (12:12 -0700)]
Fix tests with new attr cache code

10 years agoAttribute file cache refactor
Russell Belfer [Fri, 11 Apr 2014 05:31:01 +0000 (22:31 -0700)]
Attribute file cache refactor

This is a big refactoring of the attribute file cache to be a bit
simpler which in turn makes it easier to enforce a lock around any
updates to the cache so that it can be used in a threaded env.
Tons of changes to the attributes and ignores code.

10 years agoMinor tree cache speedups
Russell Belfer [Sat, 15 Mar 2014 05:01:30 +0000 (22:01 -0700)]
Minor tree cache speedups

While I was looking at the conflict cleanup code, I looked over at
the tree cache code, since we clear the tree cache for each entry
that gets removed and there is some redundancy there.  I made some
small tweaks to avoid extra calls to strchr and strlen in a few
circumstances.

10 years agoFix leak in git_index_conflict_cleanup
Russell Belfer [Sat, 15 Mar 2014 04:59:26 +0000 (21:59 -0700)]
Fix leak in git_index_conflict_cleanup

I introduced a leak into conflict cleanup by removing items from
inside the git_vector_remove_matching call.  This simplifies the
code to just use one common way for the two conflict cleanup APIs.

When an index has an active snapshot, removing an item can cause
an error (inserting into the deferred deletion vector), so I made
the git_index_conflict_cleanup API return an error code.  I felt
like this wasn't so bad since it is just like the other APIs.

I fixed up a couple of comments while I was changing the header.

10 years agoFix leak when using push and pop with ignores
Russell Belfer [Fri, 14 Mar 2014 23:45:46 +0000 (16:45 -0700)]
Fix leak when using push and pop with ignores

The iterator pushes and pops ignores incrementally onto a list as
it traverses the directory structure so that it doesn't have to
constantly recheck which ignore files apply.  With the new ref
counting, it wasn't decrementing the refcount on the ignores that
it removed from the vector.

10 years agoFix refcount issues with mutex protected ignores
Russell Belfer [Fri, 14 Mar 2014 22:37:42 +0000 (15:37 -0700)]
Fix refcount issues with mutex protected ignores

Some ignore files were not being freed from the cache.

10 years agoFix threading tests when threads disabled
Russell Belfer [Fri, 14 Mar 2014 21:51:04 +0000 (14:51 -0700)]
Fix threading tests when threads disabled

10 years agoClean up index snapshot function naming
Russell Belfer [Fri, 14 Mar 2014 20:53:15 +0000 (13:53 -0700)]
Clean up index snapshot function naming

Clear up some of the various "find" functions and the snapshot
API naming to be things I like more.

10 years agoIndex locking and entry allocation changes
Russell Belfer [Fri, 14 Mar 2014 20:20:51 +0000 (13:20 -0700)]
Index locking and entry allocation changes

This makes the lock management on the index a little bit broader,
having a number of routines hold the lock across looking up the
item to be modified and actually making the modification.  Still
not true thread safety, but more pure index modifications are now
safe which allows the simple cases (such as starting up a diff
while index modifications are underway) safe enough to get the
snapshot without hitting allocation problems.

As part of this, I simplified the allocation of index entries to
use a flex array and just put the path at the end of the index
entry.  This makes every entry self-contained and makes it a
little easier to feel sure that pointers to strings aren't
being accidentally copied and freed while other references are
still being held.

10 years agoAdd diff threading tests and attr file cache locks
Russell Belfer [Tue, 11 Feb 2014 22:45:37 +0000 (14:45 -0800)]
Add diff threading tests and attr file cache locks

This adds a basic test of doing simultaneous diffs on multiple
threads and adds basic locking for the attr file cache because
that was the immediate problem that arose from these tests.

10 years agoDecouple index iterator sort from index
Russell Belfer [Mon, 10 Feb 2014 21:20:08 +0000 (13:20 -0800)]
Decouple index iterator sort from index

This makes the index iterator honor the GIT_ITERATOR_IGNORE_CASE
and GIT_ITERATOR_DONT_IGNORE_CASE flags without modifying the
index data itself.  To take advantage of this, I had to export a
number of the internal index entry comparison functions.  I also
wrote some new tests to exercise the capability.

10 years agoAdd mutex around index entries changes
Russell Belfer [Sun, 9 Feb 2014 00:42:26 +0000 (16:42 -0800)]
Add mutex around index entries changes

This surrounds any function that mutates the entries vector with
a mutex so it can be safely snapshotted.

10 years agoAdd index snapshot and use it for iterator
Russell Belfer [Sat, 8 Feb 2014 00:48:27 +0000 (16:48 -0800)]
Add index snapshot and use it for iterator

10 years agoAdd public diff print helpers
Russell Belfer [Fri, 7 Feb 2014 22:17:19 +0000 (14:17 -0800)]
Add public diff print helpers

The usefulness of these helpers came up for me while debugging
some of the iterator changes that I was making, so since they
have also been requested (albeit indirectly) I thought I'd include
them.

10 years agoSome index internals refactoring
Russell Belfer [Fri, 7 Feb 2014 22:10:35 +0000 (14:10 -0800)]
Some index internals refactoring

Again, laying groundwork for some index iterator changes, this
contains a bunch of code refactorings for index internals that
should make it easier down the line to add locking around index
modifications.  Also this removes the redundant prefix_position
function and fixes some potential memory leaks.

10 years agoSome vector utility tweaks
Russell Belfer [Fri, 7 Feb 2014 19:20:36 +0000 (11:20 -0800)]
Some vector utility tweaks

This is just laying some groundwork for internal index changes
that I'm working on.

10 years agoMerge pull request #2261 from jacquesg/format-patch
Vicent Marti [Wed, 16 Apr 2014 17:09:35 +0000 (19:09 +0200)]
Merge pull request #2261 from jacquesg/format-patch

Support for format-patch

10 years agoMerge pull request #2270 from csware/fix_git_branch_t_enum
Vicent Marti [Wed, 16 Apr 2014 16:51:38 +0000 (18:51 +0200)]
Merge pull request #2270 from csware/fix_git_branch_t_enum

Add GIT_BRANCH_LOCAL_AND_REMOTE to git_branch_t enum

10 years agoAdd GIT_BRANCH_ALL to git_branch_t enum
Sven Strickroth [Wed, 16 Apr 2014 14:59:43 +0000 (16:59 +0200)]
Add GIT_BRANCH_ALL to git_branch_t enum

git_branch_t is an enum so requesting GIT_BRANCH_LOCAL | GIT_BRANCH_REMOTE is not possible as it is not a member of the enum (at least VS2013 C++ complains about it).

This fixes a regression introduced in commit a667ca8298193b3103c1dbdcb1f6c527e6e99eb2 (PR #1946).

Signed-off-by: Sven Strickroth <email@cs-ware.de>
10 years agoMerge pull request #2269 from libgit2/rb/fix-leading-slash-ignores
Vicent Marti [Wed, 16 Apr 2014 08:51:25 +0000 (10:51 +0200)]
Merge pull request #2269 from libgit2/rb/fix-leading-slash-ignores

Fix core.excludesfile named .gitignore

10 years agoMerge pull request #2235 from jacquesg/cherry-pick
Vicent Marti [Tue, 15 Apr 2014 18:26:23 +0000 (20:26 +0200)]
Merge pull request #2235 from jacquesg/cherry-pick

Add cherry pick support

10 years agoAdded a test case for formatting a binary patch e-mail
Jacques Germishuys [Mon, 14 Apr 2014 15:12:56 +0000 (17:12 +0200)]
Added a test case for formatting a binary patch e-mail

10 years agoSanitize git_diff_format_email_options' summary parameter
Jacques Germishuys [Fri, 11 Apr 2014 20:57:15 +0000 (22:57 +0200)]
Sanitize git_diff_format_email_options' summary parameter

It will form part of the subject line and should thus be one line.

10 years agoIntroduce git_diff_format_email and git_diff_commit_as_email
Jacques Germishuys [Fri, 11 Apr 2014 17:15:15 +0000 (19:15 +0200)]
Introduce git_diff_format_email and git_diff_commit_as_email