|
a409acef
|
2014-04-24T11:59:50
|
|
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.
|
|
219c89d1
|
2014-04-23T16:28:45
|
|
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.
|
|
37da3685
|
2014-04-22T21:51:54
|
|
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.
|
|
3c1aa4c1
|
2014-04-22T15:23:39
|
|
Failing test for stashing a buried ignored file
|
|
24d17de2
|
2014-04-02T12:07:27
|
|
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.
|
|
a32d684f
|
2014-04-22T15:07:18
|
|
Merge pull request #2282 from libgit2/cmn/remote-easier-bind
A few niceties for binding authors
|
|
bc0a6198
|
2014-04-19T15:52:58
|
|
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.
|
|
2efd7df6
|
2014-04-19T15:34:12
|
|
remote: provide read access to the callback structure
This should make it easier for bindings to dynamically override their
own callbacks.
|
|
dac95e4a
|
2014-04-22T11:04:35
|
|
Merge pull request #2287 from libgit2/rb/moar-coverity-fixes
Fix some issues from the last Coverity scan
|
|
2e609e29
|
2014-04-22T11:03:42
|
|
Merge pull request #2286 from libgit2/rb/fix-reset-staged-delete
Fix reset for staged deletes
|
|
17ef678c
|
2014-04-21T11:55:57
|
|
Fix some coverity-found issues
|
|
bd101a7e
|
2014-04-21T11:54:54
|
|
Fix reset for staged deletes
|
|
28750a7d
|
2014-04-21T09:50:43
|
|
Merge pull request #2275 from jacquesg/apple-warning
Check for compiler flag support instead of checking for a platform
|
|
78399310
|
2014-04-21T16:38:52
|
|
attrcache: fix use-after-free
Reported by coverity.
|
|
a15d3537
|
2014-04-21T15:48:05
|
|
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.
|
|
5c8d5eac
|
2014-04-19T23:07:50
|
|
Introduce AddCFlagIfSupported CMake macro
|
|
bfc50f83
|
2014-04-19T18:59:09
|
|
Merge pull request #2273 from jacquesg/ssh-interactive
Add support for SSH keyboard-interactive authentication
|
|
7b0f8ba9
|
2014-04-19T13:05:32
|
|
Merge pull request #2279 from libgit2/rb/moar-eegnöre-fîxés
Fix several ignore and attribute file behavior bugs
|
|
ac16bd0a
|
2014-04-18T15:45:59
|
|
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).
|
|
916fcbd6
|
2014-04-18T14:42:40
|
|
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.
|
|
e3a2a04c
|
2014-04-18T14:29:58
|
|
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.
|
|
a622ff17
|
2014-04-18T20:05:28
|
|
Only zero sensitive information on destruction (and memory actually allocated by us)
|
|
50e46d60
|
2014-04-18T10:58:01
|
|
Cleanup tests with helper functions
|
|
6a0956e5
|
2014-04-18T10:32:35
|
|
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.
|
|
364ef528
|
2014-04-18T19:13:18
|
|
Only disable deprecation warnings on Apple for OpenSSL
|
|
c6cd3f8b
|
2014-04-18T18:32:06
|
|
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.
|
|
48ce93e0
|
2014-04-18T18:58:57
|
|
Fix inconsistent use of lower-case and upper-case names for macros
|
|
386777fd
|
2014-04-18T09:26:38
|
|
Merge pull request #2213 from ethomson/safecrlf
Introduce core.safecrlf handling
|
|
043112dc
|
2014-04-18T17:57:39
|
|
Replace void * with proper callback types
|
|
8ec0a552
|
2014-04-18T00:49:07
|
|
Make git_cred_ssh_custom_new() naming more consistent
|
|
478408c0
|
2014-04-17T23:03:44
|
|
Introduce git_cred_ssh_interactive_new()
This allows for keyboard-interactive based SSH authentication
|
|
3c69bebc
|
2014-04-18T17:47:36
|
|
Merge pull request #2274 from libgit2/cmn/ssh-expect-username
cred: tighten username rules
|
|
bd270b70
|
2014-04-18T17:08:10
|
|
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.
|
|
28fd7206
|
2014-04-18T12:33:19
|
|
Merge pull request #2108 from libgit2/rb/threadsafe-index-iterator
Make index iterator thread safe
|
|
2bed3553
|
2014-04-18T00:34:04
|
|
cherry-pick: terminate the commit id string
We treat this as a NUL-terminated string, so make sure that we add the
terminator.
|
|
83038272
|
2014-04-17T14:35:29
|
|
Some memory leak fixes
|
|
823c0e9c
|
2014-04-17T11:53:13
|
|
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.
|
|
e6e8530a
|
2014-04-14T12:31:17
|
|
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.
|
|
ea642d61
|
2014-04-14T12:29:27
|
|
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.
|
|
2e9d813b
|
2014-04-11T12:12:47
|
|
Fix tests with new attr cache code
|
|
7d490872
|
2014-04-10T22:31:01
|
|
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.
|
|
1fa17b5c
|
2014-03-14T22:01:30
|
|
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.
|
|
aba6b5ed
|
2014-03-14T21:59:26
|
|
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.
|
|
cef170ab
|
2014-03-14T16:45:46
|
|
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.
|
|
b8777615
|
2014-03-14T15:37:42
|
|
Fix refcount issues with mutex protected ignores
Some ignore files were not being freed from the cache.
|
|
3816debc
|
2014-03-14T14:51:04
|
|
Fix threading tests when threads disabled
|
|
52bb0476
|
2014-03-14T13:53:15
|
|
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.
|
|
8a2834d3
|
2014-03-14T13:20:51
|
|
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.
|
|
40ed4990
|
2014-02-11T14:45:37
|
|
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.
|
|
3b4c401a
|
2014-02-10T13:20:08
|
|
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.
|
|
dac16048
|
2014-02-08T16:42:26
|
|
Add mutex around index entries changes
This surrounds any function that mutates the entries vector with
a mutex so it can be safely snapshotted.
|
|
54edbb98
|
2014-02-07T16:48:27
|
|
Add index snapshot and use it for iterator
|
|
27e54bcf
|
2014-02-07T14:17:19
|
|
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.
|
|
3dbee456
|
2014-02-07T14:10:35
|
|
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.
|
|
c67fd4c9
|
2014-02-07T11:20:36
|
|
Some vector utility tweaks
This is just laying some groundwork for internal index changes
that I'm working on.
|
|
c5cacc4e
|
2014-04-16T19:09:35
|
|
Merge pull request #2261 from jacquesg/format-patch
Support for format-patch
|
|
3b2d14a7
|
2014-04-16T18:51:38
|
|
Merge pull request #2270 from csware/fix_git_branch_t_enum
Add GIT_BRANCH_LOCAL_AND_REMOTE to git_branch_t enum
|
|
fa13ee2d
|
2014-04-16T16:59:43
|
|
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>
|
|
37ab5ecc
|
2014-04-16T10:51:25
|
|
Merge pull request #2269 from libgit2/rb/fix-leading-slash-ignores
Fix core.excludesfile named .gitignore
|
|
0f7aa47d
|
2014-04-15T20:26:23
|
|
Merge pull request #2235 from jacquesg/cherry-pick
Add cherry pick support
|
|
39206ca2
|
2014-04-14T17:12:56
|
|
Added a test case for formatting a binary patch e-mail
|
|
a56b418d
|
2014-04-11T22:57:15
|
|
Sanitize git_diff_format_email_options' summary parameter
It will form part of the subject line and should thus be one line.
|
|
d8cc1fb6
|
2014-04-11T19:15:15
|
|
Introduce git_diff_format_email and git_diff_commit_as_email
|
|
360314c9
|
2014-04-11T19:03:29
|
|
Introduce git_diff_get_stats, git_diff_stats_files_changed, git_diff_stats_insertions, git_diff_stats_deletions and git_diff_stats_to_buf
|
|
cab39378
|
2014-04-11T19:14:18
|
|
Added git_diff_stats test files
|
|
a9528b8f
|
2014-04-14T15:59:48
|
|
Fix core.excludesfile named .gitignore
Ignore rules with slashes in them are matched using FNM_PATHNAME
and use the path to the .gitignore file from the root of the
repository along with the path fragment (including slashes) in
the ignore file itself. Unfortunately, the relative path to the
.gitignore file was being applied to the global core.excludesfile
if that was also named ".gitignore".
This fixes that with more precise matching and includes test for
ignore rules with leading slashes (which were the primary example
of this being broken in the real world).
This also backports an improvement to the file context logic from
the threadsafe-iterators branch where we don't rely on mutating
the key of the attribute file name to generate the context path.
|
|
289e31cd
|
2014-04-14T23:11:06
|
|
Merge pull request #2264 from jacquesg/fix-warnings
Correct C90 warnings
|
|
6fefb7af
|
2014-04-13T19:53:35
|
|
Capture conflict information in MERGE_MSG for revert and merge
|
|
103b7d21
|
2014-04-02T13:57:11
|
|
Added cherry pick tests
|
|
4d7b9939
|
2014-04-01T22:18:19
|
|
Added cherry-pick support
|
|
399f2b62
|
2014-04-07T20:15:45
|
|
Introduce git_merge__extract_conflict_paths
|
|
06d772d8
|
2014-04-14T14:49:01
|
|
Merge pull request #2262 from libgit2/rb/fix-ignore-pop
Fix bug popping ignore files during wd iteration
|
|
efaa342c
|
2014-04-11T22:07:49
|
|
Correct C90 warnings
|
|
7a28f268
|
2014-04-10T12:44:51
|
|
Fix const-correctness of git_patch_get_delta, git_patch_num_hunks, git_patch_num_lines_in_hunk
|
|
51297cad
|
2014-04-10T12:44:12
|
|
Added RFC2822 date format test cases
|
|
8e14b47f
|
2014-04-10T12:42:29
|
|
Introduce git__date_rfc2822_fmt. Allows for RFC2822 date headers
|
|
8f7bc646
|
2014-04-10T16:33:39
|
|
Fix bug popping ignore files during wd iteration
There were a couple bugs in popping ignore files during iteration
that could result in incorrect decisions be made and thus ignore
files below the root either not being loaded correctly or not
being popped at the right time.
One bug was an off-by-one in comparing the path of the gitignore
file with the path being exited during iteration.
The second bug was not correctly truncating the path being tracked
during traversal if there were no ignores on the list (i.e. when
you have no .gitignore at the root, but do have some in contained
directories).
|
|
b3b36a68
|
2014-04-10T12:43:16
|
|
Introduce git_buf_putcn
Allows for inserting the same character n amount of times
|
|
bcc62293
|
2014-04-09T12:45:49
|
|
Merge pull request #2259 from libgit2/vmg/state-cleanup
Rewrite `state-cleanup`
|
|
c3dcbe84
|
2014-04-09T12:43:27
|
|
Rewrite `git_repository__cleanup_files`
|
|
361e9192
|
2014-04-09T12:09:30
|
|
Merge pull request #2257 from libgit2/rb/fix-submodules-with-tracked-content
Update treatment of submodule-like directories with tracked content in the parent
|
|
3ed8d00c
|
2014-04-09T12:08:30
|
|
Merge pull request #2258 from libgit2/jk/userdiff-cc
pull userdiff pattern updates from git.git
|
|
9ce60fad
|
2014-04-08T18:40:05
|
|
userdiff: update ada patterns
This is the moral equivalent of
git/git@39a87a29ce364ed3337e535adce5973731ba2968
from Adrian Johnson <ajohnson@redneon.com>.
|
|
76b4e3d4
|
2014-04-08T18:41:39
|
|
userdiff: update C/C++ patterns
This pulls upstream changes from:
git/git@8a2e8da367f7175465118510b474ad365161d6b1
git/git@abf8f9860248d8c213600974742f18dadaa8fbb5
git/git@407e07f2a6f55e605fda9e90cb622887269f68b5
all by Johannes Sixt <j6t@kdbg.org>.
|
|
eb7e17cc
|
2014-04-08T14:47:20
|
|
Update submodules with parent-tracked content
This updates how libgit2 treats submodule-like directories that
actually have tracked content inside of them. This is a strange
corner case, but it seems that many people have abortive submodule
setups and then just went ahead and added the files into the
parent repository. In this case, we should just treat the
submodule as if it was a normal directory.
Libgit2 will still try to skip over real submodules and contained
repositories that do not have tracked files inside them, but this
adds some new handling for cases where the apparently submodule
data is in conflict with the actual list of tracked files.
|
|
ce2e8269
|
2014-04-08T16:52:20
|
|
graph: handle not finding a merge base gracefully
git_merge_base() returns GIT_ENOTFOUND when it cannot find a merge
base. graph_desdendant_of() returns a boolean value (barring any
errors), so it needs to catch the NOTFOUND return value and convert it
into false, as not merge base means it cannot be a descendant.
|
|
2795fb4d
|
2014-04-08T16:37:39
|
|
Merge pull request #2256 from jacquesg/graph-descendant
Correct grouping of parentheses
|
|
8a8e3127
|
2014-04-08T16:20:49
|
|
Added a no path test for git_graph_descendant_of
|
|
56f8e06e
|
2014-04-08T15:46:45
|
|
Correct grouping of parentheses
git_graph_descendant_of was returning the result of an assignment
|
|
7be1caf7
|
2014-04-07T21:41:36
|
|
Determine crlf safety by statistics, not literal reversibility
|
|
855c66de
|
2014-03-27T16:34:20
|
|
Introduce core.safecrlf handling
|
|
5f74c476
|
2014-04-07T20:51:39
|
|
Merge pull request #2255 from libgit2/rb/fix-multiple-nfd-iconv-bug
Fix bug with multiple iconv conversions in one dir
|
|
7167fd7e
|
2014-04-07T11:51:12
|
|
vmg is always right
|
|
c813b345
|
2014-04-07T11:45:32
|
|
Fix bug with multiple iconv conversions in one dir
The internal buffer in the `git_path_iconv_t` structure was not
being reset before the calls to `iconv` were made to convert data,
so if there were multiple decomposed Unicode paths in a single
directory, paths after the first one were being appended to the
first instead of treated as independent data.
|
|
553184a7
|
2014-04-03T10:53:42
|
|
Update AUTHORS
|
|
c0311295
|
2014-04-07T17:32:23
|
|
git_repository_state_cleanup() should remove rebase-merge/, rebase-apply/ and BISECT_LOG
|
|
6720eef9
|
2014-04-07T11:22:23
|
|
Merge pull request #2249 from libgit2/rb/starstar-fnmatch
Add support for ** matches in ignores
|
|
c7d96060
|
2014-04-06T11:20:22
|
|
Fix fnmatch comment to be clearer
|
|
c8c91433
|
2014-04-06T10:42:26
|
|
More ** tests for pattern rules
|
|
52056db9
|
2014-04-06T16:22:29
|
|
Merge pull request #2250 from jacquesg/vector-leak
Don't lose our elements when calling git_vector_set()
|