Commit Graph

6198 Commits

Author SHA1 Message Date
Russell Belfer
3158e2febe Fix some Windows warnings
This fixes a number of warnings with the Windows 64-bit build
including a test failure in test_repo_message__message where an
invalid pointer to a git_buf was being used.
2014-02-07 15:43:37 -08:00
Vicent Marti
c4ee3b54f8 Merge pull request #2100 from libgit2/rb/update-pqueue
Replace priority queue code with implementation from hashsig
2014-02-07 18:32:06 +01:00
Russell Belfer
8875ef21cb Merge pull request #2104 from ethomson/utf8_cleanup
Remove unused utf8 -> utf16 conversion code
2014-02-06 10:11:17 -08:00
Edward Thomson
55d257e7de Remove unused utf8 -> utf16 conversion code 2014-02-05 15:03:00 -08:00
Ben Straub
629ba7f105 Merge pull request #2027 from libgit2/rb/only-windows-is-windows
Some tests of paths that can't actually be written to disk
2014-02-05 13:07:46 -08:00
Russell Belfer
df70de071a Merge pull request #2094 from libgit2/cmn/push-non-commit
Add flexibility to the revwalk API
2014-02-05 10:25:50 -08:00
Vicent Marti
daeac29add Merge pull request #2103 from libgit2/cmn/parse-commit-faster
commit: faster parsing
2014-02-05 16:24:09 +01:00
Carlos Martín Nieto
24f3024f36 Split p_strlen into its own header
We need this from util.h and posix.h, but the latter includes common.h
which includes util.h, which means p_strlen is not defined by the time
we get to git__strndup().

Split the definition on p_strlen() off into its own header so we can use
it in util.h.
2014-02-05 14:34:15 +01:00
Carlos Martín Nieto
1e6f0ac436 utils: don't reimplement strnlen
The standard library provides a very nice strnlen function, which knows
to use SSE, let's not reimplement it ourselves.
2014-02-05 14:31:13 +01:00
Carlos Martín Nieto
a6563619e9 commit: faster parsing
The current code issues a lot of strncmp() calls in order to check for
the end of the header, simply in order to copy it and start going
through it again. These are a lot of calls for something we can check as
we go along. Knowing the amount of parents beforehand to reduce
allocations in extreme cases does not make up for them.

Instead start parsing immediately and check for the double-newline after
each header field, leaving the raw_header allocation for the end, which
lets us go through the header once and reduces the amount of strncmp()
calls significantly.

In unscientific testing, this has reduced a shortlog-like usage (walking
though the whole history of a branch and extracting data from the
commits) of git.git from ~830ms to ~700ms and makes the time we spend in
strncmp() negligible.
2014-02-05 14:31:13 +01:00
Carlos Martín Nieto
d60064132a docs: produce literal asterisks 2014-02-05 13:09:34 +01:00
Carlos Martín Nieto
c74077d13c revparse: do look at all refs when matching text
Now that we no longer fail to push non-commits on a glob, let's search
on all refs when we rev-parse syntax asks us to match text.
2014-02-05 12:16:44 +01:00
Carlos Martín Nieto
d18209eef9 revwalk: add a test for pushing all references
This used to be broken, let's make sure we don't break this use-case.
2014-02-05 12:16:44 +01:00
Carlos Martín Nieto
af81720236 revwalk: remove usage of foreach 2014-02-05 12:16:44 +01:00
Carlos Martín Nieto
d465e4e980 revwalk: ignore wrong object type in glob pushes
Pushing a whole namespace can cause us to attempt to push non-committish
objects. Catch this situation and special-case it for ignoring this.
2014-02-05 12:16:44 +01:00
Carlos Martín Nieto
b4ef67d5eb revwalk: add a failing test for pushing "tags"
This shows that pusing a whole namespace can be problematic.
2014-02-05 12:16:37 +01:00
Carlos Martín Nieto
f61272e047 revwalk: accept committish objects
Let the user push committish objects and peel them to figure out which
commit to push to our queue.

This is for convenience and for allowing uses of

    git_revwalk_push_glob(w, "tags")

with annotated tags.
2014-02-05 12:16:37 +01:00
Russell Belfer
1bbacc9ff6 Avoid extra copying in pqueue operations
This tweaks the pqueue_up and pqueue_down routines so that they
will not do full element swaps but instead carry over the state
of the previous loop iteration and only assign elements for which
we know the final position.  This will avoid a little bit of data
assignment which should improve performance in theory.

Also got rid of some vector helpers that I'm no longer using.
2014-02-04 16:46:43 -08:00
Russell Belfer
43709ca878 Fix typo setting sorted flag when reloading index
This fixes a typo I made for setting the sorted flag on the index
after a reload.  That typo didn't actually cause any test failures
so I'm also adding a test that explicitly checks that the index is
correctly sorted after a reload when ignoring case and when not.
2014-02-04 10:33:30 -08:00
Russell Belfer
882c774271 Convert pqueue to just be a git_vector
This updates the git_pqueue to simply be a set of specialized
init/insert/pop functions on a git_vector.

To preserve the pqueue feature of having a fixed size heap, I
converted the "sorted" field in git_vectors to a more general
"flags" field so that pqueue could mix in it's own flag.  This
had a bunch of ramifications because a number of places were
directly looking at the vector "sorted" field - I added a couple
new git_vector helpers (is_sorted, set_sorted) so the specific
representation of this information could be abstracted.
2014-02-04 10:01:37 -08:00
Vicent Marti
7369ea8075 Merge pull request #2096 from ethomson/merge
Corrections for merge working directory validation
2014-02-04 05:57:25 -08:00
Russell Belfer
af4bc6615d Add some priority queue tests
I forgot that I wrote some tests for the new priority queue code.
2014-02-03 21:04:40 -08:00
Russell Belfer
4075e060b4 Replace pqueue with code from hashsig heap
I accidentally wrote a separate priority queue implementation when
I was working on file rename detection as part of the file hash
signature calculation code.  To simplify licensing terms, I just
adapted that to a general purpose priority queue and replace the
old priority queue implementation that was borrowed from elsewhere.

This also removes parts of the COPYING document that no longer
apply to libgit2.
2014-02-03 21:02:08 -08:00
Edward Thomson
dbfd83bc65 Remove unused pointer assignment 2014-02-03 19:56:34 -08:00
Edward Thomson
c0b10c25e0 Merge wd validation tests against index not HEAD
Validating the workdir should not compare HEAD to working
directory - this is both inefficient (as it ignores the cache)
and incorrect.  If we had legitimately allowed changes in the
index (identical to the merge result) then comparing HEAD to
workdir would reject these changes as different.  Further, this
will identify files that were filtered strangely as modified,
while testing with the cache would prevent this.

Also, it's stupid slow.
2014-02-03 19:56:34 -08:00
Edward Thomson
bb13d39162 Test that emulates a strange filter implementation 2014-02-03 19:56:34 -08:00
Edward Thomson
16eb8b7c06 Tests merging staged files identical to result 2014-02-03 19:56:34 -08:00
Edward Thomson
b60149eced Tests merge when changes exist in workdir/index 2014-02-03 19:56:33 -08:00
Vicent Marti
3b6a5bac20 Merge pull request #2095 from libgit2/update-head-reflog
Correct "new" id for reattached-HEAD reflog entry
2014-02-03 10:36:04 -08:00
Vicent Marti
0b4d86af90 Merge pull request #2098 from arthurschreiber/arthur/add-git_reference_is_note
Add `git_reference_is_note`.
2014-02-02 10:44:13 -08:00
Arthur Schreiber
50ad7cc208 Add git_reference_is_note. 2014-02-02 18:20:38 +01:00
Ben Straub
7f058b8668 Check for errors when dereferencing symbolic refs 2014-02-01 19:31:26 -08:00
Ben Straub
ee8e6afda9 Reflog: correct "new" id for reattaching HEAD 2014-02-01 11:46:44 -08:00
Ben Straub
7ac1b89942 Add failing test case 2014-02-01 11:46:15 -08:00
Vicent Marti
40e10630cf Merge pull request #2092 from libgit2/rb/update-clar
Update to latest clar
2014-01-31 13:57:41 -08:00
Russell Belfer
7be88b4c4d Update to latest clar 2014-01-31 13:44:09 -08:00
Vicent Marti
f9500b4524 Merge pull request #2081 from libgit2/bs/reflog
Reflog completionism
2014-01-31 09:46:40 -08:00
Ben Straub
db092c1955 Allow tests to run without user config 2014-01-30 16:10:18 -08:00
Ben Straub
a1710a28f6 Enhance testing of signature parameters 2014-01-30 15:53:52 -08:00
Ben Straub
a1b07dca7d Document branch-creation reflog better 2014-01-30 15:53:52 -08:00
Ben Straub
59bb1126e0 Provide good default reflog messages in branch api 2014-01-30 15:53:52 -08:00
Ben Straub
e871d89b28 Ensure moving a branch updates the reflog 2014-01-30 15:52:14 -08:00
Ben Straub
ccf6ce5c89 Ensure renaming a reference updates the reflog 2014-01-30 15:52:13 -08:00
Ben Straub
540c1809f4 Add reflog parameters to git_branch_move 2014-01-30 15:52:13 -08:00
Ben Straub
48110f67e4 Deleting a branch deletes its reflog 2014-01-30 15:52:13 -08:00
Ben Straub
1cc974ab62 Augment clone API with reflog parameters 2014-01-30 15:52:13 -08:00
Ben Straub
b31ebfbc66 Add reflog params to git_branch_create 2014-01-30 15:52:13 -08:00
Ben Straub
67c4716f74 Add passing reflog tests 2014-01-30 15:51:00 -08:00
Ben Straub
2952a9d0f4 Ensure creating HEAD creates its reflog 2014-01-30 15:51:00 -08:00
Ben Straub
6357388e98 Enhance clarity 2014-01-30 15:51:00 -08:00