|
ad003763
|
2013-03-12T20:36:35
|
|
MSVC: What could possibly be the size of a void*?
|
|
f5898324
|
2013-03-12T15:31:14
|
|
Style: Reverse lhs and rhs of == comparisons
|
|
b8c32580
|
2013-03-12T15:19:32
|
|
Advertise and support side-band-64k when calling receive-pack
|
|
1ac10aae
|
2013-03-12T09:23:53
|
|
Merge pull request #1408 from arrbee/refactor-iterators
Refactor iterators
|
|
62beacd3
|
2013-03-11T16:43:58
|
|
Sorting function cleanup and MinGW fix
Clean up some sorting function stuff including fixing qsort_r
on MinGW, common function pointer type for comparison, and basic
insertion sort implementation (which we, regrettably, fall back
on for MinGW).
|
|
b70bf922
|
2013-03-11T14:35:49
|
|
Merge pull request #1406 from cpthamilton/local_push
Implemented push on the local transport
|
|
20858f6e
|
2013-02-19T06:22:58
|
|
Implemented push on the local transport
|
|
a5eea2d7
|
2013-03-11T11:31:50
|
|
Stabilize order for equiv tree iterator entries
Given a group of case-insensitively equivalent tree iterator
entries, this ensures that the case-sensitively first trees will
be used as the representative items. I.e. if you have conflicting
entries "A/B/x", "a/b/x", and "A/b/x", this change ensures that
the earliest entry "A/B/x" will be returned. The actual choice
is not that important, but it is nice to have it stable and to
have it been either the first or last item, as opposed to a
random item from within the equivalent span.
|
|
aa408cbf
|
2013-03-11T11:18:00
|
|
handle small files in similarity metrics
|
|
aec4f663
|
2013-03-11T10:37:12
|
|
Fix tree iterator advance using wrong name compare
Tree iterator advance was moving forward without taking the
filemode of the entries into account, equating "a" and "a/".
This makes the tree entry comparison code more easily reusable
and fixes the problem.
|
|
92028ea5
|
2013-03-11T09:53:49
|
|
Fix tree iterator path for tree issue + cleanups
This fixes an off by one error for generating full paths for
tree entries in tree iterators when INCLUDE_TREES is set. Also,
contains a bunch of small code cleanups with a couple of small
utility functions and macro changes to eliminate redundant code.
|
|
61c7b61e
|
2013-03-10T22:38:53
|
|
Use correct case path in icase tree iterator
If there are case-ambiguities in the path of a case insensitive
tree iterator, it will now rewrite the entire path when it gives
the path name to an entry, so a tree with "A/b/C/d.txt" and
"a/B/c/E.txt" will give the true full paths (instead of case-
folding them both to "A/B/C/d.txt" or "a/b/c/E.txt" or something
like that.
|
|
1aa5318a
|
2013-03-09T16:04:34
|
|
diff: allow asking for diffs with no context
Previously, 0 meant default. This is problematic, as asking for 0
context lines is a valid thing to do.
Change GIT_DIFF_OPTIONS_INIT to default to three and stop treating 0
as a magic value. In case no options are provided, make sure the
options in the diff object default to 3.
|
|
e40f1c2d
|
2013-03-08T16:39:57
|
|
Make tree iterator handle icase equivalence
There is a serious bug in the previous tree iterator implementation.
If case insensitivity resulted in member elements being equivalent
to one another, and those member elements were trees, then the
children of the colliding elements would be processed in sequence
instead of in a single flattened list. This meant that the tree
iterator was not truly acting like a case-insensitive list.
This completely reworks the tree iterator to manage lists with
case insensitive equivalence classes and advance through the items
in a unified manner in a single sorted frame.
It is possible that at a future date we might want to update this
to separate the case insensitive and case sensitive tree iterators
so that the case sensitive one could be a minimal amount of code
and the insensitive one would always know what it needed to do
without checking flags.
But there would be so much shared code between the two, that I'm
not sure it that's a win. For now, this gets what we need.
More tests are needed, though.
|
|
6f83a781
|
2013-03-07T11:14:03
|
|
Merge pull request #1403 from ethomson/tracing
Optional tracing back to consumers
|
|
b5ec5430
|
2013-03-04T23:52:30
|
|
optional tracing
|
|
d00d5464
|
2013-03-01T15:37:33
|
|
immutable references and a pluggable ref database
|
|
bb45c57f
|
2013-03-07T16:38:44
|
|
refs: explicitly catch leading slashes
It's somewhat common to try to write "/refs/tags/something". There is
no easy way to catch it during the main body of the function, as there
is no way to distinguish whether it's a leading slash or a double
slash somewhere in the middle.
Catch this at the beginning so we don't trigger the assert in
is_all_caps_and_underscore().
|
|
169dc616
|
2013-03-05T16:10:05
|
|
Make iterator APIs consistent with standards
The iterator APIs are not currently consistent with the parameter
ordering of the rest of the codebase. This rearranges the order
of parameters, simplifies the naming of a number of functions, and
makes somewhat better use of macros internally to clean up the
iterator code.
This also expands the test coverage of iterator functionality,
making sure that case sensitive range-limited iteration works
correctly.
|
|
9bea03ce
|
2013-03-06T15:16:34
|
|
Add INCLUDE_TREES, DONT_AUTOEXPAND iterator flags
This standardizes iterator behavior across all three iterators
(index, tree, and working directory). Previously the working
directory iterator behaved differently from the other two.
Each iterator can now operate in one of three modes:
1. *No tree results, auto expand trees* means that only non-
tree items will be returned and when a tree/directory is
encountered, we will automatically descend into it.
2. *Tree results, auto expand trees* means that results will
be given for every item found, including trees, but you
only need to call normal git_iterator_advance to yield
every item (i.e. trees returned with pre-order iteration).
3. *Tree results, no auto expand* means that calling the
normal git_iterator_advance when looking at a tree will
not descend into the tree, but will skip over it to the
next entry in the parent.
Previously, behavior 1 was the only option for index and tree
iterators, and behavior 3 was the only option for workdir.
The main public API implications of this are that the
`git_iterator_advance_into()` call is now valid for all
iterators, not just working directory iterators, and all the
existing uses of working directory iterators explicitly use
the GIT_ITERATOR_DONT_AUTOEXPAND (for now).
Interestingly, the majority of the implementation was in the
index iterator, since there are no tree entries there and now
have to fake them. The tree and working directory iterators
only required small modifications.
|
|
cc216a01
|
2013-03-05T16:29:04
|
|
Retire spoolandsort iterator
Since the case sensitivity is moved into the respective iterators,
this removes the spoolandsort iterator code.
|
|
ed4f95e5
|
2013-03-05T11:47:07
|
|
Add const to some buffer functions
|
|
aa518c70
|
2013-03-06T22:51:20
|
|
added missing free for git_note in clar tests
|
|
f7b18502
|
2013-03-06T22:25:01
|
|
fixed minor issues with new note iterator
* fixed style issues
* use new iterator functions for git_note_foreach()
|
|
1a90dcf6
|
2013-03-06T19:07:56
|
|
use git_note_iterator type instead of non-public git_iterator one
|
|
6edb427b
|
2013-03-06T16:43:21
|
|
basic note iterator implementation
* git_note_iterator_new() - create a new note iterator
* git_note_next() - retrieves the next item of the iterator
|
|
b72f5d40
|
2013-03-05T15:35:28
|
|
Merge pull request #1369 from arrbee/repo-init-template-hooks
More tests (and fixes) for initializing repo from template
|
|
b8daa9e0
|
2013-03-04T16:19:38
|
|
Merge pull request #1380 from phkelley/index_icase
Disable ignore_case when writing the index to a tree
|
|
5bddabcc
|
2013-03-04T17:40:48
|
|
clear REUC on checkout
|
|
323bb885
|
2013-03-04T00:21:56
|
|
Fix a few leaks
`git_diff_get_patch()` would unconditionally load the patch object and
then simply leak it if the user hadn't requested it. Short-circuit
loading the object if the user doesn't want it.
The rest of the plugs are simply calling the free functions of objects
allocated during the tests.
|
|
0e040c03
|
2013-03-03T14:50:47
|
|
indexer: use a hashtable for keeping track of offsets
These offsets are needed for REF_DELTA objects, which encode which
object they use as a base, but not where it lies in the packfile, so
we need a list.
These objects are mostly from older packfiles, before OFS_DELTA was
widely spread. The time spent in indexing these packfiles is greatly
reduced, though remains above what git is able to do.
|
|
447ae791
|
2013-03-03T15:19:21
|
|
indexer: kill git_indexer
This was the first implementation and its goal was simply to have
something that worked. It is slow and now it's just taking up
space. Remove it and switch the one known usage to use the streaming
indexer.
|
|
487fc724
|
2013-03-01T13:41:53
|
|
Allow empty config object and use it
This removes assertions that prevent us from having an empty
git_config object and then updates some tests that were
dependent on global config state to use an empty config before
running anything.
|
|
cb53669e
|
2013-03-01T16:38:13
|
|
Rename function to __ prefix
|
|
3f0d0c85
|
2013-03-01T15:44:18
|
|
Disable ignore_case when writing the index to a tree
|
|
926acbcf
|
2013-03-01T11:07:53
|
|
Clone should not delete directories it did not create
|
|
cc427158
|
2013-02-28T15:09:32
|
|
Merge pull request #1373 from arrbee/why-cdecl-why
Why cdecl why?
|
|
f443a72d
|
2013-02-28T14:41:26
|
|
Fix some deprecation warnings on Windows
This fixes some snprintf and vsnprintf related deprecation
warnings we've been having on Windows with recent compilers.
|
|
97b71374
|
2013-02-28T14:14:45
|
|
Add GIT_STDLIB_CALL
This removes the one-off GIT_CDECL and adds a new standard way of
doing this named GIT_STDLIB_CALL with a src/win32 specific def
when on the Windows platform.
|
|
5fa8abb8
|
2013-02-28T17:36:20
|
|
w32-posix: Wrap the `timezone` declaration with a clause
Allows compilation in newer versions of MinGW that already defined it.
|
|
f708c89f
|
2013-02-27T15:15:39
|
|
fixing some warnings on Windows
|
|
11b5beb7
|
2013-02-27T15:07:28
|
|
use cdecl for hashsig sorting functions on Windows
|
|
e68e33f3
|
2013-02-27T14:50:32
|
|
Merge pull request #1233 from arrbee/file-similarity-metric
Add file similarity scoring to diff rename/copy detection
|
|
9f9477d6
|
2013-02-27T14:21:41
|
|
Merge pull request #1372 from ethomson/checkout_workdir_end
don't dereference at the end of the workdir iterator
|
|
18f08264
|
2013-02-27T13:44:15
|
|
Make mode handling during init more like git
When creating files, instead of actually using GIT_FILEMODE_BLOB
and the other various constants that happen to correspond to
mode values, apparently I should be just using 0666 and 0777, and
relying on the umask to clear bits and make the value sane.
This fixes the rules for copying a template directory and fixes
the checks to match that new behavior. (Further changes to the
checkout logic to follow separately.)
|
|
395509ff
|
2013-02-27T14:47:39
|
|
don't dereference at the end of the workdir iterator
|
|
82ac1f76
|
2013-02-27T19:48:02
|
|
Win32: Use constants in version resource definitions where possible
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
0d1b094b
|
2013-02-26T13:15:06
|
|
Fix portability issues on Windows
The new tests were not taking core.filemode into account when
testing file modes after repo initialization. Fixed that and some
other Windows warnings that have crept in.
|
|
3c42e4ef
|
2013-02-26T11:43:14
|
|
Fix initialization of repo directories
When PR #1359 removed the hooks from the test resources/template
directory, it made me realize that the tests for
git_repository_init_ext using templates must be pretty shabby
because we could not have been testing if the hooks were getting
created correctly.
So, this started with me recreating a couple of hooks, including
a sample and symlink, and adding tests that they got created
correctly in the various circumstances, including with the SHARED
modes, etc. Unfortunately this uncovered some issues with how
directories and symlinks were copied and chmod'ed. Also, there
was a FIXME in the code related to the chmod behavior as well.
Going back over the directory creation logic for setting up a
repository, I found it was a little difficult to read and could
result in creating and/or chmod'ing directories that the user
almost certainly didn't intend.
So that let to this work which makes repo initialization much
more careful (and hopefully easier to follow). It required a
couple of extensions / changes to core fileops utilities, but I
also think those are for the better, at least for git_futils_cp_r
in terms of being careful about what actions it takes.
|
|
25e7c9b7
|
2013-02-26T18:21:03
|
|
Increment reference counter in git_repository_set_config
This fixes #1365
|
|
8005c6d4
|
2013-02-26T01:03:56
|
|
Revert "hash: remove git_hash_init from internal api"
This reverts commit efe7fad6c96a3d6197a218aeaa561ec676794499, except for
the indentation fixes.
|
|
efe7fad6
|
2013-02-26T00:05:28
|
|
hash: remove git_hash_init from internal api
Along with that, fix indentation in tests-clar/object/raw/hash.c
|
|
5eeb357d
|
2013-02-23T03:39:11
|
|
Merge pull request #1355 from phkelley/development
Portability fixes for Solaris
|
|
37d91686
|
2013-02-22T12:21:54
|
|
Do not fail if .gitignore is directory
This is designed to fix libgit2sharp #350 where if .gitignore is
a directory we abort all operations that process ignores instead
of just skipping it as core git does.
Also added test that fails without this change and passes with it.
|
|
0a008913
|
2013-02-22T10:21:02
|
|
Minor improvements to find_similar code
This moves a couple of checks outside of the inner loop of the
find_similar rename/copy detection phase that are only dependent
on the "from" side of a detection.
Also, this replaces the inefficient initialization of the
options structure when a value is not provided explicitly by the
user.
|
|
f8275890
|
2013-02-22T10:19:50
|
|
Replace static data with configured metric
Instead of creating three git_diff_similarity_metric statically
for the various config options, just create the metric structure
on demand and populate it, using the payload to specific the
extra flags that should be passed to the hashsig. This removes
a level of obfuscation from the code, I think.
|
|
06eaa06f
|
2013-02-22T09:48:47
|
|
Merge pull request #1343 from nulltoken/topic/remote_orphaned_branch
Teach git_branch_remote_name() to work with orphaned heads
|
|
6c72035f
|
2013-02-22T12:23:14
|
|
Portability fixes for Solaris
|
|
c1b5e8c4
|
2013-02-15T11:35:33
|
|
branch: Make git_branch_remote_name() cope with orphaned heads
|
|
9ccab8df
|
2013-02-22T15:25:06
|
|
stash: Update the reference when dropping the topmost stash
|
|
d4b747c1
|
2013-02-21T16:44:44
|
|
Add diff rename tests with partial similarity
This adds some new tests that actually exercise the similarity
metric between files to detect renames, copies, and split modified
files that are too heavily modified.
There is still more testing to do - these tests are just partially
covering the cases.
There is also one bug fix in this where a change set with only
MODIFY being broken into ADD/DELETE (due to low self-similarity)
without any additional RENAMED entries would end up not processing
the split requests (because the num_rewrites counter got reset).
|
|
960a04dd
|
2013-02-21T12:40:33
|
|
Initial integration of similarity metric to diff
This is the initial integration of the similarity metric into
the `git_diff_find_similar()` code path. The existing tests all
pass, but the new functionality isn't currently well tested. The
integration does go through the pluggable metric interface, so it
should be possible to drop in an alternative to the internal
metric that libgit2 implements.
This comes along with a behavior change for an existing interface;
namely, passing two NULLs to git_diff_blobs (or passing NULLs to
git_diff_blob_to_buffer) will now call the file_cb parameter zero
times instead of one time. I know it's strange that that change
is paired with this other change, but it emerged from some
initialization changes that I ended up making.
|
|
eb5ffd19
|
2013-02-21T11:00:29
|
|
add a sorter to the reuc on index creation
|
|
71a3d27e
|
2013-02-08T10:06:47
|
|
Replace diff delta binary with flags
Previously the git_diff_delta recorded if the delta was binary.
This replaces that (with no net change in structure size) with
a full set of flags. The flag values that were already in use
for individual git_diff_file objects are reused for the delta
flags, too (along with renaming those flags to make it clear that
they are used more generally).
This (a) makes things somewhat more consistent (because I was
using a -1 value in the "boolean" binary field to indicate unset,
whereas now I can just use the flags that are easier to understand),
and (b) will make it easier for me to add some additional flags to
the delta object in the future, such as marking the results of a
copy/rename detection or other deltas that might want a special
indicator.
While making this change, I officially moved some of the flags that
were internal only into the private diff header.
This also allowed me to remove a gross hack in rename/copy detect
code where I was overwriting the status field with an internal
value.
|
|
9bc8be3d
|
2013-02-19T10:25:41
|
|
Refine pluggable similarity API
This plugs in the three basic similarity strategies for handling
whitespace via internal use of the pluggable API. In so doing, I
realized that the use of git_buf in the hashsig API was not needed
and actually just made it harder to use, so I tweaked that API as
well.
Note that the similarity metric is still not hooked up in the
find_similarity code - this is just setting out the function that
will be used.
|
|
5e5848eb
|
2013-02-14T17:25:10
|
|
Change similarity metric to sampled hashes
This moves the similarity metric code out of buf_text and into a
new file. Also, this implements a different approach to similarity
measurement based on a Rabin-Karp rolling hash where we only keep
the top 100 and bottom 100 hashes. In theory, that should be
sufficient samples to given a fairly accurate measurement while
limiting the amount of data we keep for file signatures no matter
how large the file is.
|
|
99ba8f23
|
2013-01-22T15:27:08
|
|
wip: adding metric to diff
|
|
f3327cac
|
2013-01-13T10:06:09
|
|
Some similarity metric adjustments
This makes the text similarity metric treat \r as equivalent
to \n and makes it skip whitespace immediately following a line
terminator, so line indentation will have less effect on the
difference measurement (and so \r\n will be treated as just a
single line terminator).
This also separates the text and binary hash calculators into
two separate functions instead of have more if statements inside
the loop. This should make it easier to have more differentiated
heuristics in the future if we so wish.
|
|
9c454b00
|
2013-01-11T22:13:02
|
|
Initial implementation of similarity scoring algo
This adds a new `git_buf_text_hashsig` type and functions to
generate these hash signatures and compare them to give a
similarity score. This can be plugged into diff similarity
scoring.
|
|
6ec37f72
|
2013-02-20T11:42:15
|
|
Merge pull request #1350 from arrbee/fix-1292
Add explicit entrycount to tree builder
|
|
e2237179
|
2013-02-20T10:58:56
|
|
Some code cleanups in tree.c
This replaces most of the explicit vector iteration with calls
to git_vector_foreach, adds in some git__free and giterr_clear
calls to clean up during some error paths, and a couple of
other code simplifications.
|
|
93ab370b
|
2013-02-20T10:50:01
|
|
Store treebuilder length separately from entries vec
The treebuilder entries vector flags removed items which means
we can't rely on the entries vector length to accurately get the
number of entries. This adds an entrycount value and maintains it
while updating the treebuilder entries.
|
|
f7511c2c
|
2013-02-20T10:19:58
|
|
Merge pull request #1348 from libgit2/signatures-2
Simplify signature parsing
|
|
cf80993a
|
2013-02-20T18:46:10
|
|
signature: Small cleanup
|
|
41051e3f
|
2013-02-20T17:09:51
|
|
signature: Shut up MSVC, you silly goose
|
|
c51880ee
|
2013-02-20T17:03:18
|
|
Simplify signature parsing
|
|
56543a60
|
2013-02-15T16:02:45
|
|
Clear up warnings from cppcheck
The cppcheck static analyzer generates warnings for a bunch of
places in the libgit2 code base. All the ones fixed in this
commit are actually false positives, but I've reorganized the
code to hopefully make it easier for static analysis tools to
correctly understand the structure. I wouldn't do this if I
felt like it was making the code harder to read or worse for
humans, but in this case, these fixes don't seem too bad and will
hopefully make it easier for better analysis tools to get at any
real issues.
|
|
71d62d39
|
2013-02-15T16:01:31
|
|
Fix memory leak in p_getaddrinfo on Amiga
If gethostbyname() fails on platforms with NO_ADDRINFO, the code
leaks the struct addrinfo that was allocated. This fixes that
(and a number of code formatting issues in that area of code in
src/posix.c).
|
|
a9e1339c
|
2013-02-14T08:12:05
|
|
Fix a leak when canceling a network operation
|
|
2fe67aeb
|
2013-02-14T08:46:58
|
|
Fix a git_filebuf leak (fixes Win32 clone::can_cancel)
|
|
5f633e91
|
2013-02-13T18:12:51
|
|
Change git2.rc to identify git.dll as VOS_NT_WINDOWS32
|
|
6a0ffe84
|
2013-02-12T10:50:55
|
|
Merge pull request #1333 from phkelley/push_options
Add git_push_options, to set packbuilder parallelism
|
|
fbe67de9
|
2013-02-12T10:16:30
|
|
Merge pull request #1246 from arrbee/fix-force-text-for-diff-blobs
Add FORCE_TEXT check into git_diff_blobs code path
|
|
9c258af0
|
2013-02-12T10:13:56
|
|
Merge pull request #1316 from ben/clone-cancel
Allow network operations to cancel
|
|
ed55fd8b
|
2013-02-11T13:29:07
|
|
Reorganize FORCE_TEXT diff flag checks
|
|
c2907575
|
2013-01-15T09:24:17
|
|
Add FORCE_TEXT check into git_diff_blobs code path
`git_diff_blobs` and `git_diff_blob_to_buffer` skip the step
where we check file attributes because they don't have a filename
associated with the data. Unfortunately, this meant they were also
skipping the check for the GIT_DIFF_FORCE_TEXT option and so you
could not force a diff of an apparent binary file. This adds the
force text check into their code path.
|
|
2bca5b67
|
2013-02-07T23:44:18
|
|
remote: Introduce git_remote_is_valid_name()
Fix libgit2/libgit2sharp#318
|
|
4d811c3b
|
2013-02-07T23:40:10
|
|
refs: No component of a refname can end with '.lock'
|
|
390a3c81
|
2013-02-11T11:44:00
|
|
Merge pull request #1190 from nulltoken/topic/reset-paths
reset: Allow the selective reset of pathspecs
|
|
e026cfee
|
2013-02-11T09:12:39
|
|
Merge pull request #1323 from jamill/resolve_remote
Resolve a remote branch's remote
|
|
db4bb415
|
2013-02-07T14:53:52
|
|
Teach refspec to transform destination reference to source reference
|
|
2e3e8c88
|
2013-02-08T11:05:47
|
|
Teach remote branch to return its remote
|
|
b8b897bb
|
2013-02-11T08:28:53
|
|
Add git_push_options, to set packbuilder parallelism
|
|
8c29dca6
|
2013-02-11T09:25:57
|
|
Fix some incorrect MSVC #ifdef's. Fixes #1305
|
|
a150cc87
|
2013-02-10T18:16:10
|
|
Fix a bug introduced in df93a681 'Merge the push...'
|
|
a9d081e5
|
2013-02-10T19:36:39
|
|
Fix -Wmaybe-uninitialized warning
|
|
df93a681
|
2013-02-08T15:00:08
|
|
Merge the push report into the refs to avoid a 3rd network call
|
|
ff9df883
|
2013-02-08T14:27:21
|
|
Fix Windows symlinks
|
|
f3e49210
|
2013-02-08T10:02:37
|
|
Merge pull request #1249 from yorah/topic/diff-notify-unmatched-pathspecs
diff: Add a callback to notify of diffed files
|
|
5b62eb7d
|
2013-02-08T02:50:23
|
|
Merge pull request #1325 from SHyx0rmZ/fix-windows-symlinks
Fix Windows symlinks
|