Commit Graph

2896 Commits

Author SHA1 Message Date
Russell Belfer
960a04dd56 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.
2013-02-21 12:40:33 -08:00
Edward Thomson
eb5ffd1944 add a sorter to the reuc on index creation 2013-02-21 11:00:29 -06:00
Russell Belfer
71a3d27ea6 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.
2013-02-20 15:10:21 -08:00
Russell Belfer
9bc8be3d7e 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.
2013-02-20 15:09:41 -08:00
Russell Belfer
5e5848eb15 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.
2013-02-20 15:09:40 -08:00
Russell Belfer
99ba8f2322 wip: adding metric to diff 2013-02-20 15:09:40 -08:00
Russell Belfer
f3327cac1d 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.
2013-02-20 15:09:40 -08:00
Russell Belfer
9c454b007b 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.
2013-02-20 15:09:40 -08:00
Vicent Martí
6ec37f7232 Merge pull request #1350 from arrbee/fix-1292
Add explicit entrycount to tree builder
2013-02-20 11:42:15 -08:00
Russell Belfer
e223717902 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.
2013-02-20 10:58:56 -08:00
Russell Belfer
93ab370b53 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.
2013-02-20 10:50:01 -08:00
Russell Belfer
f7511c2c69 Merge pull request #1348 from libgit2/signatures-2
Simplify signature parsing
2013-02-20 10:19:58 -08:00
Vicent Marti
cf80993a50 signature: Small cleanup 2013-02-20 18:46:10 +01:00
Vicent Marti
41051e3fe1 signature: Shut up MSVC, you silly goose 2013-02-20 17:09:51 +01:00
Vicent Marti
c51880eeaf Simplify signature parsing 2013-02-20 17:03:18 +01:00
Russell Belfer
56543a609a 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.
2013-02-15 16:02:45 -08:00
Russell Belfer
71d62d3905 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).
2013-02-15 16:01:31 -08:00
Ben Straub
a9e1339c06 Fix a leak when canceling a network operation 2013-02-14 08:12:55 -08:00
Philip Kelley
2fe67aeb10 Fix a git_filebuf leak (fixes Win32 clone::can_cancel) 2013-02-14 08:46:58 -05:00
Philip Kelley
5f633e911e Change git2.rc to identify git.dll as VOS_NT_WINDOWS32 2013-02-13 18:12:51 -05:00
Ben Straub
6a0ffe84a7 Merge pull request #1333 from phkelley/push_options
Add git_push_options, to set packbuilder parallelism
2013-02-12 10:50:55 -08:00
Russell Belfer
fbe67de997 Merge pull request #1246 from arrbee/fix-force-text-for-diff-blobs
Add FORCE_TEXT check into git_diff_blobs code path
2013-02-12 10:16:30 -08:00
Russell Belfer
9c258af094 Merge pull request #1316 from ben/clone-cancel
Allow network operations to cancel
2013-02-12 10:13:56 -08:00
Russell Belfer
ed55fd8bf8 Reorganize FORCE_TEXT diff flag checks 2013-02-11 14:45:46 -08:00
Russell Belfer
c2907575ec 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.
2013-02-11 14:45:46 -08:00
nulltoken
2bca5b679b remote: Introduce git_remote_is_valid_name()
Fix libgit2/libgit2sharp#318
2013-02-11 23:19:41 +01:00
nulltoken
4d811c3b77 refs: No component of a refname can end with '.lock' 2013-02-11 23:19:40 +01:00
Russell Belfer
390a3c8141 Merge pull request #1190 from nulltoken/topic/reset-paths
reset: Allow the selective reset of pathspecs
2013-02-11 11:44:00 -08:00
Philip Kelley
e026cfee00 Merge pull request #1323 from jamill/resolve_remote
Resolve a remote branch's remote
2013-02-11 09:12:39 -08:00
Jameson Miller
db4bb4158f Teach refspec to transform destination reference to source reference 2013-02-11 11:36:28 -05:00
Jameson Miller
2e3e8c889b Teach remote branch to return its remote 2013-02-11 11:36:22 -05:00
Philip Kelley
b8b897bbc5 Add git_push_options, to set packbuilder parallelism 2013-02-11 09:35:26 -05:00
Philip Kelley
8c29dca6c3 Fix some incorrect MSVC #ifdef's. Fixes #1305 2013-02-11 09:25:57 -05:00
Philip Kelley
a150cc875d Fix a bug introduced in df93a681 'Merge the push...' 2013-02-10 18:16:10 -05:00
Michael Schubert
a9d081e504 Fix -Wmaybe-uninitialized warning 2013-02-10 19:36:39 +01:00
Philip Kelley
df93a6810a Merge the push report into the refs to avoid a 3rd network call 2013-02-08 15:21:37 -05:00
Jameson Miller
ff9df88396 Fix Windows symlinks 2013-02-08 14:28:49 -05:00
Russell Belfer
f3e492107a Merge pull request #1249 from yorah/topic/diff-notify-unmatched-pathspecs
diff: Add a callback to notify of diffed files
2013-02-08 10:02:37 -08:00
Vicent Martí
5b62eb7dd7 Merge pull request #1325 from SHyx0rmZ/fix-windows-symlinks
Fix Windows symlinks
2013-02-08 02:50:23 -08:00
Patrick Pokatilo
7672c8c779 Moved braces to conform to code style 2013-02-08 11:29:23 +01:00
Patrick Pokatilo
64012fdbe6 Replace LoadLibrary with GetModuleHandle, since kernel32 is loaded by default
As requested
2013-02-08 03:24:45 +01:00
Patrick Pokatilo
a49e5bed8d Replace call to strnlen with call to strlen 2013-02-08 01:26:04 +01:00
Patrick Pokatilo
f88885e339 Include <string.h> 2013-02-08 01:10:03 +01:00
Patrick Pokatilo
3b5e44aeba Fix call to readlink 2013-02-08 00:50:20 +01:00
yorah
0d64ba4837 diff: add a notify callback to git_diff__from_iterators
The callback will be called for each file, just before the `git_delta_t` gets inserted into the diff list.

When the callback:
- returns < 0, the diff process will be aborted
- returns > 0, the delta will not be inserted into the diff list, but the diff process continues
- returns 0, the delta is inserted into the diff list, and the diff process continues
2013-02-07 20:44:35 +01:00
yorah
943700ecbb Return the matched pathspec pattern in git_pathspec_match_path
Instead of returning directly the pattern as the return value, I used an
out parameter, because the function also tests if the passed pathspecs
vector is empty. If yes, it considers that the path "matches", but in
that case there is no matched pattern per se.
2013-02-07 20:44:34 +01:00
Patrick Pokatilo
94ed23f86a Call p_readlink to determine symlink size 2013-02-07 01:41:20 +01:00
Ben Straub
f393d4e8d7 Clone: fetch all tags 2013-02-06 13:07:56 -08:00
Ben Straub
ea57f66b57 Expect standard error code from internal calls 2013-02-06 11:02:29 -08:00
Ben Straub
def60ea473 Allow all non-zero returns to cancel transfers 2013-02-05 13:14:48 -08:00
nulltoken
3ad052218c Fix MSVC compilation warnings
Fix #1308
2013-02-05 20:33:27 +01:00
nulltoken
a0c34c9406 reset: Introduce git_reset_default() 2013-02-05 20:33:03 +01:00
Ben Straub
fe95ac1b67 Allow progress callback to cancel fetch
This works by having the indexer watch the return
code of the callback, so will only take effect
on object boundaries.
2013-02-05 10:59:58 -08:00
nulltoken
3cf58e6697 index: Fix indentations 2013-02-05 15:47:17 +01:00
Russell Belfer
de81aee390 Merge pull request #1298 from ben/user-at
Handle "user@" prefix for credentials partially included in URLs
2013-02-04 14:49:28 -08:00
Ben Straub
630146bd1b Address feedback 2013-02-04 13:52:18 -08:00
nulltoken
0e8e5a6189 revparse: Lookup sha before branch 2013-02-03 11:44:26 +01:00
nulltoken
545b479a07 revparse: Lookup branch before described tag
Fix #1306
2013-02-03 11:18:24 +01:00
Ben Straub
15760c598d Use malloc rather than calloc 2013-02-01 19:21:55 -08:00
Vicent Martí
e963166019 Merge pull request #1303 from csware/win32_consistent_error_encoding
Win32: Make sure error messages are consistently UTF-8 encoded
2013-02-01 15:57:31 -08:00
Sven Strickroth
c70455c75e Deduplicate FormatMessage UTF-16 to UTF-8 conversion code
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-02-02 00:55:32 +01:00
Sven Strickroth
bd25a302d3 Improved error handling
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-02-02 00:52:23 +01:00
Vicent Martí
db37d3de79 Merge pull request #1299 from csware/support_local_msysgit_install
Support local msysgit installations
2013-02-01 15:37:45 -08:00
Sven Strickroth
89ad1c57a3 Get utf8_size from WideCharToMultiByte instead of guessing it
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-02-01 22:17:34 +01:00
Sven Strickroth
b0dc81f055 Win32: Make sure error messages are consistently UTF-8 encoded
W/o this a libgit2 error message could have a mixed encoding:
e.g. a filename in UTF-8 combined with a native Windows error message
encoded with the local code page.

Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-02-01 21:54:32 +01:00
Jameson Miller
91f13a18d5 Try harder to find global config file 2013-02-01 14:23:26 -05:00
Ben Straub
c4beee7681 Introduce git__substrdup 2013-02-01 10:00:55 -08:00
Ben Straub
329eee3387 Merge pull request #1286 from lznuaa/master
Fix clone fail if repo head detached
2013-02-01 09:41:50 -08:00
Sven Strickroth
45792c923b Stick to coding style: Move up braces
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-02-01 10:32:05 +01:00
Ben Straub
8c36a3cdba Remove double-free segfaults 2013-01-31 15:24:59 -08:00
Ben Straub
016179d668 WinHttp: use cred in url if provided 2013-01-31 14:54:58 -08:00
Ben Straub
54ffc1f773 HTTP: use creds in url if available 2013-01-31 14:41:01 -08:00
Ben Straub
cf7038a65c Enhance url parsing to include passwords 2013-01-31 14:04:21 -08:00
Carlos Martín Nieto
e5ef0f1814 refs: handle ALLOW_ONELEVEL normalization with leading slash
A leading slash confuses the name normalization code when the flags
include ALLOW_ONELEVEL. Catch this case in particular to avoid
triggering an assertion in the uppercase check which expects us not to
pass it an empty string.

The existing tests don't catch this as they simply use the NORMAL
flag.

This fixes #1300.
2013-01-31 20:23:30 +01:00
Sven Strickroth
c55378fce5 Detect msysgit installation of users without admin rights
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-01-31 19:47:35 +01:00
Sven Strickroth
ec56af08a9 Refactored: Move msysgit registry detection to it's own function
Signed-off-by: Sven Strickroth <email@cs-ware.de>
2013-01-31 19:46:07 +01:00
Ben Straub
7602cb7c0e Add user-from-url param to auth callback 2013-01-31 10:44:57 -08:00
Ben Straub
2234b2b031 Stash username from url (but don't use it yet) 2013-01-30 19:03:58 -08:00
Ben Straub
5f10853e90 Skip "user@" when finding hostname in url 2013-01-30 18:52:47 -08:00
Russell Belfer
f1e2735c74 Add helper for diff line stats
This adds a `git_diff_patch_line_stats()` API that gets the total
number of adds, deletes, and context lines in a patch.  This will
make it a little easier to emulate `git diff --stat` and the like.

Right now, this relies on generating the `git_diff_patch` object,
which is a pretty heavyweight way to get stat information.  At
some future point, it would probably be nice to be able to get
this information without allocating the entire `git_diff_patch`,
but that's a much larger project.
2013-01-30 11:10:39 -08:00
Vicent Martí
d204121657 Merge pull request #1296 from arrbee/stricter-config-name-checks
Stricter config entry name validation
2013-01-29 13:57:53 -08:00
Vicent Martí
ea53203c38 Merge pull request #1295 from carlosmn/obsd
Fix p_realpath on OpenBSD
2013-01-29 13:54:30 -08:00
Russell Belfer
4657fc1cab Merge pull request #1285 from phkelley/vector
Vector improvements and their fallout
2013-01-29 13:54:08 -08:00
Philip Kelley
590365db54 Now with no multiply 2013-01-29 16:49:12 -05:00
Russell Belfer
1e7799e8b8 Implement config key validation rules
This is a new implementation of core git's config key checking
rules that prevents non-alphanumeric characters (and '-') for
the top-level section and key names inside of config files.

This also validates the target section name when renaming
sections.
2013-01-29 12:15:18 -08:00
Carlos Martín Nieto
67fcac567b Fix p_realpath on OpenBSD
OpenBSD's realpath(3) doesn't require the last part of the path to
exist. Override p_realpath in this OS to bring it in line with the
library's assumptions.
2013-01-29 18:46:17 +01:00
John Wiegley
5fb9820664 Added git_treebuilder_entrycount
Conflicts:
	src/tree.c
2013-01-28 16:35:43 -06:00
Philip Kelley
11d9f6b304 Vector improvements and their fallout 2013-01-27 14:17:07 -05:00
Frank Li
28c3beaa59 Fix fail clone local repo which head detatched
Set head detach if can't found branch after download

Signed-off-by: Frank Li <lznuaa@gmail.com>
2013-01-27 15:02:06 +08:00
Frank Li
88183c1988 Fix fail clone local repository because can't found object
avoid use object which is already free

Signed-off-by: Frank Li <lznuaa@gmail.com>
2013-01-27 13:36:37 +08:00
Philip Kelley
aa3bf89df2 Fix a mutex leak in pack.c 2013-01-26 15:12:53 -05:00
Philip Kelley
cfc39f5078 Fix 3 memory leaks 2013-01-25 22:43:52 -05:00
Vicent Martí
ae386101d2 Merge pull request #1279 from carlosmn/config-trailing-backslash
config: support trailing backslashes
2013-01-25 12:02:21 -08:00
Carlos Martín Nieto
9f35754a0e config: support trailing backslashes
Check whether the backslash at the end of the line is being escaped or
not so as not to consider it a continuation marker when it's e.g. a
Windows-style path.
2013-01-25 13:29:28 +01:00
nulltoken
c5193e3c20 clone: Prevent segfault upon faulted remote creation 2013-01-25 12:26:09 +01:00
Sebastian Bauer
c253056d24 Added git_branch_name().
This is a convenience function to get the branch name of a given
ref. The returned branch name is compatible with the name that can
be supplied e.g. to git_branch_lookup(). That is, the prefixes
"refs/heads" or "refs/remotes" are omitted.

Also added a new test for testing the new function.
2013-01-25 05:24:21 +01:00
Scott J. Goldman
5425097f03 index: Speed up loading a tree into the index
The index is empty; repeated tree entries cannot collide.

cc github/gitrpc#83
2013-01-24 18:55:39 -08:00
Philip Kelley
3fbd7485d8 Merge pull request #1250 from jamill/push_update_tips
Update remote tips on push
2013-01-24 11:03:11 -08:00
Vicent Marti
a0f777c87f opts: Add getters too 2013-01-23 23:44:34 +01:00
Vicent Martí
b101fbf9a4 Merge pull request #1271 from libgit2/global-settings
Global options setter
2013-01-22 18:55:56 -08:00
Vicent Marti
59853eff99 Global options setter 2013-01-23 02:58:58 +01:00
Russell Belfer
8958fad770 Merge pull request #1270 from libgit2/packed-peeled-objects-fix
Allow peeled references without trailing newline at end of file
2013-01-22 16:02:43 -08:00
Scott J. Goldman
cb35094be3 Allow peeled references without trailing newline at end of file
Also ammends one of the tag tests to make sure it's working.
2013-01-22 15:49:51 -08:00
Russell Belfer
cce548e3e0 Fix case sensitivity bug with tree iterators
With the new code to make tree iterators support ignore_case,
there is a bug in setting the start entry for range bounded
iterators where memcmp was being used instead of strncasecmp.
This fixes that and expands the tree iterator test to cover
the cases that were broken.
2013-01-22 15:28:25 -08:00
Scott J. Goldman
2a707d0e24 Revert "Handle packed peeled objects without trailing newlines"
This reverts commit 28b1cdf3a1.

//cc #1262 #1267
2013-01-22 14:08:50 -08:00
Vicent Martí
148c786cd6 Merge pull request #1268 from phkelley/development
A simple perf optimization in pack-objects.c
2013-01-22 09:20:09 -08:00
Jameson Miller
1d645aabef Update remote tips on push 2013-01-22 10:01:43 -05:00
Philip Kelley
47fc264203 Fix gen_pktline format specifier for Win32 2013-01-22 09:25:15 -05:00
Philip Kelley
f4b86126ee A simple perf optimization in pack-objects.c 2013-01-22 08:30:40 -05:00
Vicent Martí
fad251ae02 Merge pull request #1267 from libgit2/no-newline
Handle packed peeled objects without trailing newlines
2013-01-21 15:09:38 -08:00
Scott J. Goldman
28b1cdf3a1 Handle packed peeled objects without trailing newlines
Fixes #1262
2013-01-21 14:46:28 -08:00
Russell Belfer
965e4e2d31 Parse commit time as uint64_t to avoid overflow
The commit time is already stored as a git_time_t, but we were
parsing is as a uint32_t.  This just switches the parser to use
uint64_t which will handle dates further in the future (and adds
some tests of those future dates).
2013-01-21 13:19:41 -08:00
Carlos Martín Nieto
d47c6aabfe commit: don't include the LF in the header field value
When the encoding header changed to be treated as an additional
header, the EOL pointer started to point to the byte after the LF,
making the git__strndup call copy the LF into the value.

Increase the EOL pointer value after copying the data to keep the rest
of the semantics but avoid copying LF.
2013-01-20 04:20:09 +01:00
Carlos Martín Nieto
7a2cf780d1 Fix compilation on OpenBSD 2013-01-20 01:57:32 +01:00
Philip Kelley
77844988b8 Fix really bad error handling in git_smart__negotiate_fetch 2013-01-18 14:51:46 -05:00
Vicent Martí
ddcb28a41f Merge pull request #1239 from ethomson/index_remove
add an index_remove_bypath that removes conflicts
2013-01-17 16:56:57 -08:00
Vicent Martí
75f49ae49b Merge pull request #1244 from carlosmn/pack-evict
A comparison of eviction algorithms for the delta base cache
2013-01-17 13:45:52 -08:00
Ben Straub
c49fa037cc Merge pull request #1247 from sba1/dont-segfault-if-transport-doesnt-support-push
Don't segfault if transport doesn't support push.
2013-01-17 13:37:32 -08:00
Vicent Martí
5c8901ab80 Merge pull request #1255 from arrbee/fix-signed-commit-header-parsing
Add skipping of unknown commit headers
2013-01-17 13:36:33 -08:00
Russell Belfer
291090a076 Add skipping of unknown commit headers
This moves the check for the "encoding" header into a loop which
is just scanning for non-required headers at the end of a commit
header.  That loop will skip unrecognized lines (including header
continuation lines) until a terminating completely blank line is
found, and only then does it move to reading the commit message.
2013-01-17 13:19:09 -08:00
Edward Thomson
6e959708e5 cache should contain on-disk (filtered) file size 2013-01-17 15:17:32 -06:00
Sebastian Bauer
9bf56c7b1c Don't segfault if transport doesn't support push.
Instead, set an more informative error message.
2013-01-17 20:55:06 +01:00
Vicent Martí
34a4ad46e8 Merge pull request #1211 from arrbee/fix-icase-status-file
Fix case insensitivity issues in git_status_file
2013-01-16 15:52:58 -08:00
nulltoken
bf031581d3 branch: Introduce git_branch_tracking_name() 2013-01-16 22:56:13 +01:00
nulltoken
28cbd2e2a8 Fix indentations 2013-01-16 22:53:59 +01:00
Russell Belfer
fffe429a20 Shortcut spool and sort for empty iterator 2013-01-15 09:51:35 -08:00
Russell Belfer
25423d03b8 Support case insensitive tree iterators and status
This makes tree iterators directly support case insensitivity by
using a secondary index that can be sorted by icase.  Also, this
fixes the ambiguity check in the git_status_file API to also be
case insensitive.  Lastly, this adds new test cases for case
insensitive range boundary checking for all types of iterators.

With this change, it should be possible to deprecate the spool
and sort iterator, but I haven't done that yet.
2013-01-15 09:51:35 -08:00
Russell Belfer
98527b5b24 Add git_tree_entry_cmp and git_tree_entry_icmp
This adds a new external API git_tree_entry_cmp and a new internal
API git_tree_entry_icmp for sorting tree entries.  The case
insensitive one is internal only because general users should
never be seeing case-insensitively sorted trees.
2013-01-15 09:51:35 -08:00
Russell Belfer
23594c1dae Add git_path_icmp to case-insensitive path cmp
This adds git_path_icmp to complement git_path_cmp.
2013-01-15 09:51:35 -08:00
Russell Belfer
851ad65081 Add payload "_r" versions of bsearch and tsort
git__bsearch and git__tsort did not pass a payload through to the
comparison function.  This makes it impossible to implement sorted
lists where the sort order depends on external data (e.g. building
a secondary sort order for the entries in a tree).  This commit
adds git__bsearch_r and git__tsort_r versions that pass a third
parameter to the cmp function of a user payload.
2013-01-15 09:51:35 -08:00
Russell Belfer
134d8c918c Update iterator API with flags for ignore_case
This changes the iterator API so that flags can be passed in to
the constructor functions to control the ignore_case behavior.
At this point, the flags are not supported on tree iterators (i.e.
there is no functional change over the old API), but the API
changes are all made to accomodate this.

By the way, I went with a flags parameter because in the future
I have a couple of other ideas for iterator flags that will make
it easier to fix some diff/status/checkout bugs.
2013-01-15 09:51:34 -08:00
Russell Belfer
5c8bb98ce9 Fix err msg for ambiguous path in git_status_file
Returning GIT_EAMBIGUOUS from inside the status callback gets
overridden with GIT_EUSER.  `git_status_file` accounted for this
via the callback payload, but was allowing the error message to
be cleared.  Move the `giterr_set` call outside the callback to
where the EUSER case was being dealt with.
2013-01-15 09:49:32 -08:00
Russell Belfer
4b18103755 Minor iterator API cleanups
In preparation for further iterator changes, this cleans up a few
small things in the iterator API:

* removed the git_iterator_for_repo_index_range API
* made git_iterator_free not be inlined
* minor param name and test function name tweaks
2013-01-15 09:49:32 -08:00
Russell Belfer
facc0650b1 Simplify git_diff__paired_foreach icase handling 2013-01-15 09:49:32 -08:00
Russell Belfer
230010d19b Merge pull request #1238 from nulltoken/fix/checkout-index
checkout: Teach checkout to cope with orphaned Head
2013-01-15 09:46:50 -08:00
Russell Belfer
848d77dc83 Merge pull request #1242 from sba1/init-with-template-fix
Some fixes for external template support
2013-01-14 10:05:35 -08:00
Carlos Martín Nieto
9c62aaab40 pack: evict all of the pages at once
Somewhat surprisingly, this can increase the speed considerably, as we
don't bother trying to decide what to evict, and the most used entries
are quickly back into the cache.
2013-01-14 18:10:56 +01:00
Carlos Martín Nieto
ed6648ba46 pack: evict objects from the cache in groups of eight
This drops the cache eviction below libcrypto and zlib in the perf
output. The number has been chosen empirically.
2013-01-14 17:16:45 +01:00
Sebastian Bauer
85f4031276 Do not use GIT_CPDIR_CHMOD flag when copying the template.
This is an intermin solution. While this essentially disables the
--shared flag feature, previously external templates did not work
at all. This change fixes the previously corrected, and since
then failing, repo_init__extended_with_template() test.

The problem is now documented in the source code comments.
2013-01-13 11:35:08 +01:00
nulltoken
5b524d6902 Fix Travis compilation warnings 2013-01-13 10:25:55 +01:00
nulltoken
2a3b3e0324 checkout: Teach checkout to cope with orphaned Head
Fix #1236
2013-01-13 10:25:54 +01:00
Edward Thomson
25743bd7c5 add an index_remove_bypath that removes conflicts, renamed add_from_workdir to match 2013-01-12 13:47:56 -06:00
Sebastian Bauer
b7b1acfdbd Clear local error variable after invoking giterr_clear(). 2013-01-12 20:02:00 +01:00
Carlos Martín Nieto
09e29e47b3 pack: fixes to the cache
The offset should be git_off_t, and we should check the return value
of the mutex lock function.
2013-01-12 19:41:30 +01:00
Carlos Martín Nieto
96c9b9f0e5 indexer: properly free the packfile resources
The indexer needs to call the packfile's free function so it takes care of
freeing the caches.

We still need to close the mwf descriptor manually so we can rename the
packfile into its final name on Windows.
2013-01-12 18:44:58 +01:00
Vicent Martí
e2d2c6e57d Merge pull request #1222 from scunz/clone_branch
Switch to specified branch during clone
2013-01-12 02:14:14 -08:00
Vicent Marti
355dddbf08 buf: Is this the function you were looking for? 2013-01-12 01:40:35 +01:00
Ben Straub
3874f2d54f Kill vestigal dangling-remote code
Fixes #1232
2013-01-11 20:23:46 -08:00
Philip Kelley
359316b5d3 Merge pull request #1215 from phkelley/binaryunicode
Add a failing test for CRLF filters
2013-01-11 17:16:55 -08:00
Russell Belfer
ad10db2af8 Check for binary blobs in checkout
This adds a git_buf_text_is_binary check to blobs before applying
filters when the blob data is being written to disk.
2013-01-11 17:26:34 -05:00