|
8d09efa2
|
2014-04-22T12:33:27
|
|
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.
|
|
bd101a7e
|
2014-04-21T11:54:54
|
|
Fix reset for staged deletes
|
|
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
|
|
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.
|
|
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.
|
|
386777fd
|
2014-04-18T09:26:38
|
|
Merge pull request #2213 from ethomson/safecrlf
Introduce core.safecrlf handling
|
|
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.
|
|
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.
|
|
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.
|
|
3816debc
|
2014-03-14T14:51:04
|
|
Fix threading tests when threads disabled
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
51297cad
|
2014-04-10T12:44:12
|
|
Added RFC2822 date format test cases
|
|
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).
|
|
bcc62293
|
2014-04-09T12:45:49
|
|
Merge pull request #2259 from libgit2/vmg/state-cleanup
Rewrite `state-cleanup`
|
|
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.
|
|
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
|
|
855c66de
|
2014-03-27T16:34:20
|
|
Introduce core.safecrlf handling
|
|
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.
|
|
c0311295
|
2014-04-07T17:32:23
|
|
git_repository_state_cleanup() should remove rebase-merge/, rebase-apply/ and BISECT_LOG
|
|
c8c91433
|
2014-04-06T10:42:26
|
|
More ** tests for pattern rules
|
|
2b6b85f1
|
2014-04-04T17:02:12
|
|
Add support for ** matches in ignores
This is an experimental addition to add ** support to fnmatch
pattern matching in libgit2. It needs more testing.
|
|
923c8400
|
2014-04-04T14:24:08
|
|
Merge pull request #2215 from libgit2/rb/submodule-cache-fixes
Improve submodule cache management
|
|
eedeeb9e
|
2014-04-03T11:58:51
|
|
Test (and fix) the git_submodule_sync changes
I wrote this stuff a while ago and forgot to write tests. Wanted
to do so now to wrap up the PR and immediately found problems.
|
|
18cc7d28
|
2014-04-03T11:29:08
|
|
Minor code cleanup
|
|
f2fb4bac
|
2014-04-02T23:55:21
|
|
git_submodule_resolve_url supports relative urls
The base for the relative urls is determined as follows, with descending
priority:
- remote url of HEAD's remote tracking branch
- remote "origin"
- workdir
This follows git.git behaviour
|
|
12d4ed4d
|
2014-03-08T23:04:56
|
|
Test git_submodule_add_setup with relative url
|
|
fd61f05e
|
2014-04-03T09:53:28
|
|
Merge pull request #2238 from libgit2/cmn/upstream-for-unborn
Handle an upstream branch for an unborn one
|
|
9edc5271
|
2014-04-03T09:52:42
|
|
Merge pull request #2239 from libgit2/vmg/clar-skip-test
Skip tests on Clar
|
|
6f6be8fe
|
2014-04-02T18:14:02
|
|
remote: write tests for cloning from an empty repo
Cloning from an empty repo must set master's upstream to origin's
master, even if neither of them exist.
Fetching from a non-empty origin must then mark the master branch
for-merge. This currently fails.
|
|
0f65733b
|
2014-04-02T18:50:47
|
|
Clar: skip tests
|
|
fe23860a
|
2014-04-02T17:45:25
|
|
Merge pull request #2230 from anuraggup/revwalk-merge-base
No need to find merge base.
|
|
ada157b2
|
2014-04-02T07:45:16
|
|
Add warning when skipping blame test
|
|
d1a09004
|
2014-04-01T21:58:48
|
|
Skip blame libgit2 test if not in libgit2 repo
One blame test replies on being run from within the libgit2
repository to leverage having a longer history to play with, but
some bundled versions of libgit2 don't have the whole libgit2
history. This just skips that test if the repository can't be
opened.
|
|
a574d584
|
2014-04-01T21:32:06
|
|
New tests of status for repo inside repo
|
|
8f4e5275
|
2014-04-01T16:46:25
|
|
More tests and fix submodule index refresh
There was a little bug where the submodule cache thought that the
index date was out of date even when it wasn't that was resulting
in some extra scans of index data even when not needed.
Mostly this commit adds a bunch of new tests including adding and
removing submodules in the index and in the HEAD and seeing if we
can automatically pick them up when refreshing.
|
|
8061d519
|
2014-04-01T13:24:06
|
|
Remove most submodule reloads from tests
With the new submodule cache validity checks, we generally don't
need to call git_submodule_reload_all to have up-to-date submodule
data. Some tests are still calling it where I want to actually
test that it can be called safely and doesn't break anything, but
mostly it is not needed.
This also expands some of the existing submodule tests to cover
some variants on the behavior that was already being tested.
|
|
4ece3e22
|
2014-04-01T12:19:11
|
|
Fix submodule accounting for name and path changes
Wrote tests that try adding, removing, and updating the name of
submodules which showed a number of problems with how we account
for changes when incrementally updating the submodule info. Most
of these issues didn't exist before because reloading would always
blow away the old submodule data.
|
|
18234b14
|
2014-02-21T09:14:16
|
|
Add efficient git_buf join3 API
There are a few places where we need to join three strings to
assemble a path. This adds a simple join3 function to avoid the
comparatively expensive join_n (which calls strlen on each string
twice).
|
|
d67397dd
|
2014-04-01T09:32:17
|
|
Merge pull request #2226 from libgit2/rb/submodule-sorting-fix
Fix submodule sort order during iteration
|
|
9325460a
|
2014-04-01T13:47:44
|
|
Merge pull request #2206 from libgit2/cmn/inmemory-swap-order
Rename in-memory remote to anonymous and swap url and fetch order
|
|
fd536d29
|
2014-03-26T11:15:57
|
|
remote: rename inmemory to anonymous and swap url and fetch order
The order in this function is the opposite to what
create_with_fetchspec() has, so change this one, as url-then-refspec is
what git does.
As we need to break compilation and the swap doesn't do that, let's take
this opportunity to rename in-memory remotes to anonymous as that's
really what sets them apart.
|
|
3ab57816
|
2014-03-31T23:23:32
|
|
Merge pull request #2178 from libgit2/rb/fix-short-id
Fix git_odb_short_id and git_odb_exists_prefix bugs
|
|
3bc3d797
|
2014-03-31T15:15:32
|
|
No need to find merge base.
|
|
b76b5d34
|
2014-03-31T13:33:11
|
|
Improve test of submodule name sorting
|
|
976634c4
|
2014-03-30T19:56:18
|
|
Introduce git_merge_head_id
|
|
ed38bff1
|
2014-03-28T17:54:43
|
|
Update clar to 4b75388
|
|
e0d61c7b
|
2014-03-28T10:10:59
|
|
Sandbox configuration during test runs
|
|
10be94e9
|
2014-03-28T10:09:13
|
|
Update clar to 587f88a
|
|
dae8ba6e
|
2014-03-27T15:29:32
|
|
Fix memory leak of test repository object
|
|
380f864a
|
2014-03-26T16:06:21
|
|
Fix error when submodule path and name differ
When a submodule was inserted with a different path and name, the
return value from khash greater than zero was allowed to propagate
back out to the caller when it should really be zeroed. This led
to a possible crash when reloading submodules if that was the
first time that submodule data was loaded.
|
|
22df47cb
|
2014-03-26T14:38:26
|
|
Fix segfault if gitmodules is invalid
The reload_all call could end up dereferencing a NULL pointer if
there was an error while attempting to load the submodules config
data (i.e. invalid content in the gitmodules file). This fixes it.
|
|
2b848e47
|
2014-03-26T12:33:37
|
|
Decorate unused params as unused in revwalk::hidecb tests
|
|
dc7efa1a
|
2014-03-26T18:29:34
|
|
Merge pull request #2204 from libgit2/rb/submodule-reference-counting
Make submodules externally refcounted
|
|
77b699e0
|
2014-03-26T10:29:11
|
|
Merge pull request #2205 from libgit2/rb/submodule-untracked-vs-ignored
Update behavior for untracked contained repositories
|
|
f2f2d97f
|
2014-03-24T17:48:54
|
|
Test for giterr_capture
|
|
d3bc95fd
|
2014-03-25T12:37:05
|
|
Update behavior for untracked sub-repos
When a directory containing a .git directory (or even just a plain
gitlink) was found, libgit2 was going out of its way to treat it
specially. This seemed like it was necessary because the diff
code was not originally emulating Git's behavior for untracked
directories correctly (i.e. scanning for ignored vs untracked items
inside). Now that libgit2 diff mimics Git's untracked directory
behavior, the special handling for contained Git repos is actually
incorrect and this commit rips it out.
|
|
451aaf86
|
2014-03-25T10:33:18
|
|
Merge pull request #2181 from anuraggup/hide_cb
Callback function to hide commit and its parents in revision walker
|
|
a15c7802
|
2014-03-25T09:14:48
|
|
Make submodules externally refcounted
`git_submodule` objects were already refcounted internally in case
the submodule name was different from the path at which it was
stored. This makes that refcounting externally used as well, so
`git_submodule_lookup` and `git_submodule_add_setup` return an
object that requires a `git_submodule_free` when done.
|
|
34ffe223
|
2014-03-24T11:02:02
|
|
Modified test for revwalk_hidecb
|
|
7ca1584b
|
2014-03-11T11:49:19
|
|
Conforming to libgit2 coding style.
|
|
3a666071
|
2014-03-10T15:38:01
|
|
Unit Tests for hide_cb in revwalk
|
|
fdc54eb2
|
2014-03-24T10:56:11
|
|
env test needs to deref git_buf's ptr
|
|
85a41fc4
|
2014-03-24T18:09:13
|
|
Merge pull request #2183 from ethomson/merge_refactor
Refactor the `git_merge` API
|
|
42dee8ec
|
2014-03-23T13:34:33
|
|
settings: use git_buf for returning strings
This survived the last round of culling, as the signature is only in the
comments.
|
|
83504371
|
2014-03-19T22:27:23
|
|
reflog: follow core.logallrefupdates
On bare by default, or when core.logallrefupdates is false, we must not
write the reflog.
|
|
58c2b1c4
|
2014-03-20T09:35:22
|
|
UNBORN implies FAST_FORWARD
|
|
ac584fcf
|
2014-03-18T16:04:51
|
|
Introduce GIT_MERGE_ANALYSIS_UNBORN
|
|
97f3462a
|
2014-03-18T13:14:09
|
|
git_merge_status -> git_merge_analysis
|
|
d9fdee6e
|
2014-03-12T09:43:53
|
|
Remove `git_merge_result` as it's now unnecessary
|
|
5aa2ac6d
|
2014-03-11T22:47:39
|
|
Update git_merge_tree_opts to git_merge_options
|
|
02105a27
|
2014-03-11T18:40:38
|
|
Change signature of `git_merge` to take merge and checkout opts
|
|
1c0b6a38
|
2014-03-11T17:58:10
|
|
Remove fastforward / uptodate from `git_merge`
|
|
ccb30827
|
2014-03-11T17:19:35
|
|
Add `git_merge_status` to provide info about an upcoming merge
|
|
05d47768
|
2014-03-10T22:30:41
|
|
Introduce git_merge_file for consumers
|
|
99797c96
|
2014-03-19T18:14:35
|
|
reflog: handle symref chains
Given HEAD -> master -> foo, when updating foo's reflog we should also
update HEAD's, as it's considered the current branch.
|
|
6aaae94a
|
2014-03-19T16:30:37
|
|
reflog: handle the birth of a branch
The reflog append function was overzealous in its checking. When passed
an old and new ids, it should not do any checking, but just serialize
the data to a reflog entry.
|
|
1afe1400
|
2014-03-18T22:16:58
|
|
refdb: don't update when there's no need
If the caller wants to update a ref to point to the same target as it
currently has, we should return early and avoid writing to the reflog.
|