|
cd424ad5
|
2014-04-28T16:39:53
|
|
Add GIT_STATUS_OPT_UPDATE_INDEX and use trace API
This adds an option to refresh the stat cache while generating
status. It also rips out the GIT_PERF stuff I had an makes use
of the trace API to keep statistics about what happens during diff.
|
|
94fb4aad
|
2014-04-28T14:48:41
|
|
Add diff option to update index stat cache
When diff is scanning the working directory, if it finds a file
where it is not sure if the index entry matches the working dir,
it will recalculate the OID (which is pretty expensive). This
adds a new flag to diff so that if the OID calculation finds that
the file actually has not changed (i.e. just the modified time was
altered or such), then it will refresh the stat cache in the index
so that future calls to diff will not have to check the oid again.
|
|
0fc8e1f6
|
2014-04-28T14:34:55
|
|
Lay groundwork for updating stat cache in diff
This reorganized the diff OID calculation to make it easier to
correctly update the stat cache during a diff once the flags to
do so are enabled.
This includes marking the path of a git_index_entry as const so
we can make a "fake" git_index_entry with a "const char *" path
and not get warnings. I was a little surprised at how unobtrusive
this change was, but I think it's probably a good thing.
|
|
8ef4e11a
|
2014-04-28T14:16:26
|
|
Skip diff oid calc when size definitely changed
When we think the stat cache in the index seems valid and the size
or mode of a file has definitely changed, then don't bother trying
to recalculate the OID of the workdir bits to confirm that it is
modified - just accept that it is modified.
This can result in files that show as modified with no actual diff,
but the behavior actually appears to match Git on the command line.
This also includes a minor optimization to not perform a submodule
lookup on the ".git" directory itself.
|
|
240f4af3
|
2014-04-28T14:04:29
|
|
Add build option for diff internal statistics
|
|
6a1ca96e
|
2014-05-02T17:14:04
|
|
Temporary fix for Travis CI builds
See https://github.com/libgit2/libgit2/pull/2321#issuecomment-42039673
We may rollback once we found something more reliable
|
|
89e9c167
|
2014-05-02T03:37:40
|
|
Merge pull request #2318 from linquize/sleep
Make examples/status.c compile on Windows
|
|
644592bc
|
2014-05-02T03:36:22
|
|
Merge pull request #2320 from libgit2/rb/fix-starstar-again
Make ** pattern eat trailing slash
|
|
d19b2f9f
|
2014-05-01T12:46:46
|
|
Make ** pattern eat trailing slash
This allows "foo/**/*.html" to match "foo/file.html"
|
|
d0420fc6
|
2014-05-01T22:39:35
|
|
Make examples/status.c compile on Windows
|
|
9d878fc4
|
2014-05-01T01:23:10
|
|
Merge pull request #2304 from jacquesg/solaris
Solaris!
|
|
183aa4f8
|
2014-04-30T17:46:53
|
|
Check for NULL before passing it to vsnprintf
|
|
6b05240c
|
2014-04-27T19:44:20
|
|
strcasecmp is in <strings.h>
|
|
98b8fcff
|
2014-04-29T20:45:02
|
|
Build regex.c for Solaris. Added required defines for Solaris
|
|
c522bed0
|
2014-04-30T05:45:31
|
|
Merge pull request #2314 from libgit2/cmn/known-libs
Assorted CMake fixups
|
|
739040e6
|
2014-04-30T05:34:33
|
|
Merge pull request #2315 from jacquesg/qsort-cygwin
cygwin also doesn't have qsort_r
|
|
90a4340a
|
2014-04-30T11:47:58
|
|
cygwin also doesn't have qsort_r
|
|
039e354b
|
2014-04-30T11:57:54
|
|
ciscript: don't use an empty string as a number
An empty string is not a valid number, and some shells complain.
Check instead if $COVERITY is non-empty, which is a common convention
and what we're doing anyway.
|
|
891b0277
|
2014-04-30T11:20:51
|
|
refs: document _next_name()
If it's not documented, it doesn't show up in the docs (and we really
should document, anyway).
|
|
f5fc63bc
|
2014-04-30T10:55:58
|
|
Don't exclude libssh2 from MinGW
It reportedly works. It does not however work when cross-compiling on
Travis, so let's disable it there.
This fixes #2311.
|
|
096ac799
|
2014-02-13T22:38:23
|
|
Workaround missing .pc files on FreeBSD
This fixes #2118
|
|
04739e9f
|
2014-04-30T10:15:44
|
|
Unquiet CMake output
The point of this phase is to know what we have and not. Show the user a
clear indication of what we have.
|
|
892778ee
|
2014-04-29T05:02:38
|
|
Merge pull request #2309 from jacquesg/midnightbsd
MidnightBSD may also not have strnlen
|
|
36a61518
|
2014-04-29T13:28:16
|
|
MidnightBSD may also not have strnlen
|
|
041336e6
|
2014-04-28T07:36:27
|
|
Merge pull request #2306 from odcinek/development_cmake
Make the build CMake 2.6 compatible
|
|
7f0de93a
|
2014-04-28T15:24:36
|
|
Make the build CMake 2.6 compatible
|
|
ec771058
|
2014-04-27T03:57:53
|
|
Merge pull request #2301 from libgit2/cmn/pack-objects-memory
Keep the deflate buffer from ballooning up
|
|
38d338b2
|
2014-04-26T18:15:39
|
|
pack-objects: always write out the status in write_one()
Make sure we set the output parameter to a value.
|
|
c7f86efb
|
2014-04-26T18:04:43
|
|
zstream: grow based on used memory rather than allocated
When deflating data, we might need to grow the buffer. Currently we
add a guess on top of the currently-allocated buffer size.
When we re-use the buffer, it already has some memory allocated; adding
to that means that we always grow the buffer regardless of how much we
need to use.
Instead, increase on top of the currently-used size. This still leaves
us with the allocated size of the largest object we compress, but it's a
minor pain compared to unbounded growth.
This fixes #2285.
|
|
4f9d5414
|
2014-04-26T14:29:18
|
|
refdb: fix typo and wording
|
|
e79a2998
|
2014-04-25T07:08:41
|
|
Merge pull request #2299 from mekishizufu/fix_leaks
Plug some leaks
|
|
7b8d564d
|
2014-04-25T15:49:58
|
|
Reset tests: Use sandboxed index
|
|
424222f4
|
2014-04-25T15:49:26
|
|
Filter: Make sure to release local on error
|
|
8443ed6c
|
2014-04-25T02:10:19
|
|
Merge pull request #2284 from jacquesg/push-progress-callback
Fire progress and update tips callbacks also for pushes.
|
|
332e4f20
|
2014-04-25T02:07:42
|
|
Merge pull request #2297 from libgit2/rb/status-with-precomposed-changes
Improve test coverage of status with different core.precomposeunicode settings
|
|
2ad51b81
|
2014-04-25T02:04:12
|
|
Merge pull request #2241 from libgit2/rb/stash-skip-submodules
Improve stash and checkout for ignored + untracked items
|
|
af9eeac9
|
2014-04-24T16:20:08
|
|
Merge pull request #2294 from ethomson/merge_checkout_strategy
Merge checkout strategy
|
|
6b833e3a
|
2014-04-24T15:40:50
|
|
Improve docs for status rename detection limits
and make tests empty on platforms without iconv support.
|
|
f608f3bb
|
2014-04-24T15:25:01
|
|
Test toggling core.precomposeunicode yields rename
There is an interesting difference with core Git here, though.
Because libgit2 will do rename detection with the working directory,
in the last case where the HEAD and the working directory both
have the decomposed data and the index has the composed data, we
generate a single status record with two renames whereas Git will
generate one rename (head to index) and one untracked file.
|
|
2334e3d8
|
2014-04-24T14:46:59
|
|
Test decomposed unicode renames work as expected
|
|
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.
|
|
87c9b741
|
2014-04-24T05:24:46
|
|
Merge pull request #2295 from libgit2/cmn/fetchhead-quote
fetchhead: deal with quotes in branch names
|
|
bdc82e1c
|
2014-04-24T14:08:29
|
|
fetchhead: deal with quotes in branch names
The current FETCH_HEAD parsing code assumes that a quote must end the
branch name. Git however allows for quotes as part of a branch name,
which causes us to consider the FETCH_HEAD file as invalid.
Instead of searching for a single quote char, search for a quote char
followed by SP, which is not a valid part of a ref name.
|
|
a4e2c36a
|
2014-04-23T19:40:21
|
|
merge: checkout default shouldn't clobber given
|
|
26564d80
|
2014-04-23T19:26:58
|
|
merge: default checkout strategy for should be SAFE
|
|
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.
|
|
212b6205
|
2014-04-23T09:27:15
|
|
Merge pull request #2291 from ethomson/patch_binary
patch: emit deflated binary patches (optionally)
|
|
5ca410b9
|
2014-04-23T07:13:49
|
|
Merge pull request #2283 from phkelley/win32_fs
Win32: UTF-8 <-> WCHAR conversion overhaul
|
|
7110000d
|
2014-04-22T10:21:19
|
|
React to feedback for UTF-8 <-> WCHAR and reparse work
|
|
5b58d6f7
|
2014-04-23T03:21:05
|
|
Merge pull request #2289 from libgit2/rb/note-git-diff-index-behavior
Some doc and examples/diff.c changes
|
|
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.
|
|
e349ed50
|
2014-04-22T14:58:33
|
|
patch: emit binary patches (optionally)
|
|
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.
|
|
e60883c8
|
2014-04-22T12:59:31
|
|
Replace math fns with simpler integer math
|
|
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.
|
|
12e422a0
|
2014-04-21T16:08:05
|
|
Some doc and examples/diff.c changes
I was playing with "git diff-index" and wanted to be able to
emulate that behavior a little more closely with the diff example.
Also, I wanted to play with running `git_diff_tree_to_workdir`
directly even though core Git doesn't exactly have the equivalent,
so I added a command line option for that and tweaked some other
things in the example code.
This changes a minor output thing in that the "raw" print helper
function will no longer add ellipses (...) if the OID is not
actually abbreviated.
|
|
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
|
|
65477db1
|
2014-04-21T23:32:31
|
|
Handle win32 reparse points properly
|
|
17ef678c
|
2014-04-21T11:55:57
|
|
Fix some coverity-found issues
|
|
bd101a7e
|
2014-04-21T11:54:54
|
|
Fix reset for staged deletes
|
|
f70cfd34
|
2014-04-21T17:49:38
|
|
Verify update_tips callbacks in push test cases
|
|
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
|
|
321d377a
|
2014-04-21T17:02:05
|
|
Fire update_tips callback also for pushes.
|
|
78399310
|
2014-04-21T16:38:52
|
|
attrcache: fix use-after-free
Reported by coverity.
|
|
8b686b31
|
2014-04-21T15:25:19
|
|
Correct argument order of git__calloc()
|
|
be6996b7
|
2014-04-21T15:25:02
|
|
It is safe to free() a NULL pointer
|
|
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.
|
|
48e60ae7
|
2014-04-21T11:23:29
|
|
Don't redefine the same callback types, their signatures may change
|
|
98020d3a
|
2014-04-21T10:55:37
|
|
Rename progress callback to sideband_progress
|
|
4f62163e
|
2014-04-20T22:06:05
|
|
Check the return codes of remote callbacks.
The user may have requested that the operation be cancelled.
|
|
9effa2fb
|
2014-04-20T19:19:13
|
|
Fire progress callbacks also for pushes.
It's not very useful to only know that a pre-receive hook has declined
a push, you probably want to know why.
|
|
c2c81615
|
2014-04-19T18:05:31
|
|
Win32: UTF-8 <-> WCHAR conversion overhaul
|
|
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.
|