summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Handle explicitly ignored dir slightly differentlyrb/stash-skip-submodulesRussell Belfer2014-04-241-8/+9
| | | | | | | 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.
* Treat ignored, empty, and untracked dirs differentRussell Belfer2014-04-234-22/+39
| | | | | | 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.
* Make checkout match diff for untracked/ignored dirRussell Belfer2014-04-226-99/+146
| | | | | | | | | | | | | | | | | | 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.
* Failing test for stashing a buried ignored fileRussell Belfer2014-04-221-0/+13
|
* Make stash and checkout ignore contained reposRussell Belfer2014-04-224-12/+38
| | | | | | | | | | | 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.
* Merge pull request #2282 from libgit2/cmn/remote-easier-bindVicent Marti2014-04-224-32/+76
|\ | | | | A few niceties for binding authors
| * transports: allow the creds callback to say it doesn't existCarlos Martín Nieto2014-04-223-32/+58
| | | | | | | | | | | | | | | | 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.
| * remote: provide read access to the callback structureCarlos Martín Nieto2014-04-222-0/+18
|/ | | | | This should make it easier for bindings to dynamically override their own callbacks.
* Merge pull request #2287 from libgit2/rb/moar-coverity-fixesVicent Marti2014-04-224-18/+16
|\ | | | | Fix some issues from the last Coverity scan
| * Fix some coverity-found issuesRussell Belfer2014-04-214-18/+16
| |
* | Merge pull request #2286 from libgit2/rb/fix-reset-staged-deleteVicent Marti2014-04-222-5/+45
|\ \ | |/ |/| Fix reset for staged deletes
| * Fix reset for staged deletesRussell Belfer2014-04-212-5/+45
|/
* Merge pull request #2275 from jacquesg/apple-warningRussell Belfer2014-04-212-11/+34
|\ | | | | Check for compiler flag support instead of checking for a platform
| * Introduce AddCFlagIfSupported CMake macroJacques Germishuys2014-04-192-38/+25
| |
| * Only disable deprecation warnings on Apple for OpenSSLJacques Germishuys2014-04-181-3/+5
| |
| * Use CHECK_C_COMPILER_FLAG to determine if the compiler supports a flagJacques Germishuys2014-04-181-8/+42
| | | | | | | | | | This simplifies platform/compiler dependent checks where we optionally enable features or disable warnings.
| * Fix inconsistent use of lower-case and upper-case names for macrosJacques Germishuys2014-04-181-3/+3
| |
* | attrcache: fix use-after-freeCarlos Martín Nieto2014-04-211-1/+1
| | | | | | | | Reported by coverity.
* | sysdir: free the path if we cannot find the fileCarlos Martín Nieto2014-04-211-1/+1
| | | | | | | | | | Returning an error cleared the buf, but this operation does not free the memory associated with it. Use git_buf_free() instead.
* | Merge pull request #2273 from jacquesg/ssh-interactiveVicent Marti2014-04-193-15/+117
|\ \ | | | | | | Add support for SSH keyboard-interactive authentication
| * | Only zero sensitive information on destruction (and memory actually ↵Jacques Germishuys2014-04-181-7/+21
| | | | | | | | | | | | allocated by us)
| * | Replace void * with proper callback typesJacques Germishuys2014-04-181-2/+2
| | |
| * | Make git_cred_ssh_custom_new() naming more consistentJacques Germishuys2014-04-183-8/+8
| | |
| * | Introduce git_cred_ssh_interactive_new()Jacques Germishuys2014-04-183-0/+88
| |/ | | | | | | This allows for keyboard-interactive based SSH authentication
* | Merge pull request #2279 from libgit2/rb/moar-eegnöre-fîxésVicent Marti2014-04-1911-229/+325
|\ \ | | | | | | Fix several ignore and attribute file behavior bugs
| * | Minor fixesRussell Belfer2014-04-184-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | 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).
| * | Fix ignore difference from git with trailing /*Russell Belfer2014-04-183-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Preload attribute files that may contain macrosRussell Belfer2014-04-183-45/+136
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Cleanup tests with helper functionsRussell Belfer2014-04-182-154/+83
| | |
| * | Pop ignore only if whole relative path matchesRussell Belfer2014-04-185-35/+80
| |/ | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2213 from ethomson/safecrlfRussell Belfer2014-04-184-1/+99
|\ \ | |/ |/| Introduce core.safecrlf handling
| * Determine crlf safety by statistics, not literal reversibilityEdward Thomson2014-04-071-24/+9
| |
| * Introduce core.safecrlf handlingEdward Thomson2014-04-074-3/+116
| |
* | Merge pull request #2274 from libgit2/cmn/ssh-expect-usernameVicent Marti2014-04-182-50/+14
|\ \ | | | | | | cred: tighten username rules
| * | cred: tighten username rulesCarlos Martín Nieto2014-04-182-50/+14
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge pull request #2108 from libgit2/rb/threadsafe-index-iteratorVicent Marti2014-04-1850-1292/+2303
|\ \ | | | | | | Make index iterator thread safe
| * | Some memory leak fixesRussell Belfer2014-04-174-30/+38
| | |
| * | Fix broken logic for attr cache invalidationRussell Belfer2014-04-1713-210/+265
| | | | | | | | | | | | | | | | | | | | | 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.
| * | Lock attribute file while reparsing dataRussell Belfer2014-04-173-17/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Fix race checking for existing index itemsRussell Belfer2014-04-172-22/+40
| | | | | | | | | | | | | | | | | | | | | 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.
| * | Fix tests with new attr cache codeRussell Belfer2014-04-174-57/+109
| | |
| * | Attribute file cache refactorRussell Belfer2014-04-1718-756/+940
| | | | | | | | | | | | | | | | | | | | | 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.
| * | Minor tree cache speedupsRussell Belfer2014-04-172-17/+11
| | | | | | | | | | | | | | | | | | | | | | | | While I was looking at the conflict cleanup code, I looked over at the tree cache code, since we clear the tree cache for each entry that gets removed and there is some redundancy there. I made some small tweaks to avoid extra calls to strchr and strlen in a few circumstances.
| * | Fix leak in git_index_conflict_cleanupRussell Belfer2014-04-172-29/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I introduced a leak into conflict cleanup by removing items from inside the git_vector_remove_matching call. This simplifies the code to just use one common way for the two conflict cleanup APIs. When an index has an active snapshot, removing an item can cause an error (inserting into the deferred deletion vector), so I made the git_index_conflict_cleanup API return an error code. I felt like this wasn't so bad since it is just like the other APIs. I fixed up a couple of comments while I was changing the header.
| * | Fix leak when using push and pop with ignoresRussell Belfer2014-04-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | The iterator pushes and pops ignores incrementally onto a list as it traverses the directory structure so that it doesn't have to constantly recheck which ignore files apply. With the new ref counting, it wasn't decrementing the refcount on the ignores that it removed from the vector.
| * | Fix refcount issues with mutex protected ignoresRussell Belfer2014-04-171-1/+15
| | | | | | | | | | | | Some ignore files were not being freed from the cache.
| * | Fix threading tests when threads disabledRussell Belfer2014-04-172-11/+12
| | |
| * | Clean up index snapshot function namingRussell Belfer2014-04-175-54/+63
| | | | | | | | | | | | | | | Clear up some of the various "find" functions and the snapshot API naming to be things I like more.
| * | Index locking and entry allocation changesRussell Belfer2014-04-176-202/+309
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | Add diff threading tests and attr file cache locksRussell Belfer2014-04-1713-140/+361
| | | | | | | | | | | | | | | | | | 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.