summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* index: add a CHANGELOG entry for the diff usagecmn/index-use-diffCarlos Martín Nieto2015-05-141-0/+3
|
* index: include TYPECHANGE in the diffCarlos Martín Nieto2015-05-142-1/+15
| | | | Without this option, we would not be able to catch exec bit changes.
* index: make add_all to act on a diffCarlos Martín Nieto2015-05-141-80/+28
| | | | | | | Instead of going through each entry we have and re-adding, which may not even be correct for certain crlf options and has bad performance, use the function which performs a diff against the worktree and try to add and remove files from that list.
* index: refactor diff-based update_all to match other appliesCarlos Martín Nieto2015-05-141-80/+87
| | | | | Refactor so we look like the code we're replacing, which should also allow us to more easily inplement add-all.
* index: use a diff to perform update_allCarlos Martín Nieto2015-05-141-2/+79
| | | | | | | | | We currently iterate over all the entries and re-add them to the index. While this provides correctness, it is wasteful as we try to re-insert files which have not changed. Instead, take a diff between the index and the worktree and only re-add those which we already know have changed.
* Add CHANGELOG entry for index entry changesCarlos Martín Nieto2015-05-141-0/+5
|
* Merge pull request #3119 from ethomson/ignoreCarlos Martín Nieto2015-05-133-39/+82
|\ | | | | Attributes: don't match files for folders
| * attr tests: make explicit our dir/file match testsEdward Thomson2015-05-131-12/+24
| |
| * attr: declare variable at top of block for msvcEdward Thomson2015-05-121-1/+3
| |
| * attr: less path mangling during attribute matchingEdward Thomson2015-05-121-40/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When handling attr matching, simply compare the directory path where the attribute file resides to the path being matched. Skip over commonality to allow us to compare the contents of the attribute file to the remainder of the path. This allows us to more easily compare the pattern directly to the path, instead of trying to guess whether we want to compare the path's basename or the full path based on whether the match was inside a containing directory or not. This also allows us to do fewer translations on the pattern (trying to re-prefix it.)
| * attr: don't mangle file path during attr matchingEdward Thomson2015-05-121-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When determining whether some file matches an attr pattern, do not try to truncate the path to pass to fnmatch. When there is no containing directory for an item (eg, from a .gitignore in the root) this will cause us to truncate our path, which means that we cannot do meaningful comparisons on it and we may have false positives when trying to determine whether a given file is actually a file or a folder (as we have lost the path's base information.) This mangling was to allow fnmatch to compare a directory on disk to the name of a directory, but it is unnecessary as our fnmatch accepts FNM_LEADING_DIR.
| * attr: always return errorsEdward Thomson2015-05-121-1/+2
| |
| * attr: don't match files for foldersEdward Thomson2015-05-121-0/+8
| | | | | | | | | | When ignoring a path "foo/", ensure that this is actually a directory, and not simply a file named "foo".
| * attr test: test a file beneath ignored folderEdward Thomson2015-05-121-1/+1
| |
| * attr: test that a file is not ignored for a folderEdward Thomson2015-05-121-0/+17
| | | | | | | | | | When a .gitignore specifies some folder "foo/", ensure that a file with the same name "foo" is not ignored.
| * attr: regression tests for ignore matchingEdward Thomson2015-05-121-0/+32
| | | | | | | | | | | | Ensure that when examining a .gitignore in a subdirectory, we do not erroneously apply the paths contained therein to the root of the repository. (Fixed in c02a0e4).
* | Merge pull request #3103 from libgit2/cmn/local-push-messageEdward Thomson2015-05-132-58/+24
|\ \ | | | | | | Use the packbuilder in local push
| * | tests: don't push to our resourcescmn/local-push-messageCarlos Martín Nieto2015-05-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | A couple of tests use the wrong remote to push to. We did not notice up to now because the local push would copy individual objects, and those already existed, so it became a no-op. Once we made local push create the packfile, it became noticeable that there was a new packfile where it didn't belong.
| * | local: use the packbuilder to pushCarlos Martín Nieto2015-05-131-55/+18
| | | | | | | | | | | | | | | | | | | | | | | | Instead of copying each object individually, as we'd been doing, use the packbuilder which should be faster and give us some feedback. While performing this change, we can hook up the packbuilder's writing to the push progress so the caller knows how far along we are.
| * | local: add clarification for non-bare push restrictionCarlos Martín Nieto2015-05-131-1/+4
| | |
* | | Merge pull request #3102 from libgit2/cmn/pack-objects-reportEdward Thomson2015-05-134-0/+66
|\ \ \ | | | | | | | | Show progress during packing for the local transport
| * | | packbuilder: report progress during deltificationcmn/pack-objects-reportCarlos Martín Nieto2015-05-132-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful to send to the client while we're performing the work. The reporting function has a force parameter which makes sure that we do send out the message of 100% completed, even if this comes before the next udpate window.
| * | | local: send the packbuilder progress via the sidebandCarlos Martín Nieto2015-05-131-0/+29
| | | | | | | | | | | | | | | | | | | | Set a callback for the packbuilder so we can send the sideband messages to the caller, formatting them as git would.
| * | | examples: show the sideband progress on cloneCarlos Martín Nieto2015-05-131-0/+8
| |/ / | | | | | | | | | | | | This lets us see what the server (or libgit2 locally) is doing, rather than having to stare at a non-moving screen.
* | | Merge pull request #3118 from libgit2/cmn/stream-sizeEdward Thomson2015-05-137-13/+19
|\ \ \ | | | | | | | | odb: make the writestream's size a git_off_t
| * | | odb: make the writestream's size a git_off_tcmn/stream-sizeCarlos Martín Nieto2015-05-137-13/+19
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | Restricting files to size_t is a silly limitation. The loose backend writes to a file directly, so there is no issue in using 63 bits for the size. We still assume that the header is going to fit in 64 bytes, which does mean quite a bit smaller files due to the run-length encoding, but it's still a much larger size than you would want Git to handle.
* | | Fix a few leaksCarlos Martín Nieto2015-05-133-4/+11
| | | | | | | | | | | | | | | The interesting one is the notification macro, which was returning directly on a soft-abort instead of going through the cleanup.
* | | Merge pull request #3117 from libgit2/cmn/index-more-accurateEdward Thomson2015-05-131-10/+15
|\ \ \ | | | | | | | | index: make the entries have more accurate sizes
| * | | index: make the entries have more accurate sizescmn/index-more-accurateCarlos Martín Nieto2015-05-121-10/+15
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While we are confident about the size of an int in architectures we're likely to care about, the index format is defined by the exact size of the fields. Use the definitions which show the exact width of the entry fields. As part of that, bring back 32-bit time and size fields, which currently are 64 bits wide and can bring a false sense of security in how much data they really store. Document that these fields are not to be taken as authoritative.
* | | Merge pull request #3116 from libgit2/cmn/remove-ssh-embedEdward Thomson2015-05-131-13/+2
|\ \ \ | | | | | | | | Get rid of libssh2 embedding
| * | | Get rid of libssh2 embeddingcmn/remove-ssh-embedCarlos Martín Nieto2015-05-121-13/+2
| |/ / | | | | | | | | | | | | | | | | | | It was added as a workaround while the project had code to use WinCNG but had not made a release with it. There is now a release of libssh2 with WinCNG support, so this option is redundant. Let's get rid of it before people start liking it too much.
* | | Merge pull request #3115 from libgit2/cmn/clone-submoduleEdward Thomson2015-05-131-0/+55
|\ \ \ | | | | | | | | submodule: add test initialising and cloning a repo
| * | | submodule: add test initialising and cloning a repocmn/clone-submoduleCarlos Martín Nieto2015-05-121-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have a few tests checking each step, but we do not yet have a test which tests the documented workflow for creating a submodule, namely `setup_add` followed by cloning into it, followed by `add_finalize`. Add such a test to protect against regressions in this workflow.
* | | | Merge pull request #3120 from libgit2/cmn/backends-prioEdward Thomson2015-05-131-3/+6
|\ \ \ \ | |_|_|/ |/| | | odb: reverse the default backend priorities
| * | | odb: reverse the default backend prioritiescmn/backends-prioCarlos Martín Nieto2015-05-131-3/+6
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently first look in the loose object dir and then in the packs for objects. When performing operations on recent history this has a higher likelihood of hitting, but when we deal with operations which look further back into the past, we start spending a large amount of time getting ENOTENT from `access`. Reversing the priorities means that long-running operations can get to their objects faster, as we can look at the index data we have in memory (or rather mapped) to figure out whether we have an object, which is faster than going out to the filesystem. The packed backend already implements an optimistic read algorithm by first looking at the packs we know about and only going out to disk to referesh if the object is not found which means that in the case where we do have the object (which will be in the majority for anything that traverses the graph) we can avoid going to to disk entirely to determine whether an object exists. Operations which look at recent history may take a slight impact, but these would be operations which look a lot less at object and thus take less time regardless.
* | | Merge pull request #3066 from libgit2/cmn/remote-less-stateCarlos Martín Nieto2015-05-1340-1017/+905
|\ \ \ | |/ / |/| | Remove the configuration state we keep in the remote
| * | push: free the update listCarlos Martín Nieto2015-05-131-0/+8
| | |
| * | Update CHANGELOG with the changes to the remotesCarlos Martín Nieto2015-05-131-1/+57
| | |
| * | remote: simplify anonymous creationCarlos Martín Nieto2015-05-131-8/+1
| | | | | | | | | | | | | | | We're down to simply having it be a call to create_internal() so let's simply do that. The rest of the code is just a distraction.
| * | remote: remove git_remote_save()Carlos Martín Nieto2015-05-134-54/+2
| | | | | | | | | | | | | | | It has now become a no-op, so remove the function and all references to it.
| * | remote: remove live changing of refspecsCarlos Martín Nieto2015-05-139-136/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The base refspecs changing can be a cause of confusion as to what is the current base refspec set and complicate saving the remote's configuration. Change `git_remote_add_{fetch,push}()` to update the configuration instead of an instance. This finally makes `git_remote_save()` a no-op, it will be removed in a later commit.
| * | examples: adjust to the new remote APICarlos Martín Nieto2015-05-134-24/+16
| | |
| * | remote: move the tagopt setting to the fetch optionsCarlos Martín Nieto2015-05-138-94/+136
| | | | | | | | | | | | | | | This is another option which we should not be keeping in the remote, but is specific to each particular operation.
| * | remote: move the update_fetchhead setting to the optionsCarlos Martín Nieto2015-05-136-44/+26
| | | | | | | | | | | | | | | | | | While this will rarely be different from the default, having it in the remote adds yet another setting it has to keep around and can affect its behaviour. Move it to the options.
| * | remote: move the transport ctor to the callbacksCarlos Martín Nieto2015-05-1310-56/+32
| | | | | | | | | | | | | | | | | | | | | Instead of having it set in a different place from every other callback, put it the main structure. This removes some state from the remote and makes it behave more like clone, where the constructors are passed via the options.
| * | remote: add prune option to fetchCarlos Martín Nieto2015-05-132-1/+31
| | | | | | | | | | | | | | | Add a prune setting in the fetch options to allow to fall back to the configuration (the default) or to set it on or off.
| * | remote: remove url and pushurl from the save logicCarlos Martín Nieto2015-05-135-57/+87
| | | | | | | | | | | | | | | | | | As a first step in removing the repository-saving logic, don't allow chaning the url or push url from a remote object, but change the configuration on the configuration immediately.
| * | Remove the callbacks struct from the remoteCarlos Martín Nieto2015-05-1330-511/+459
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Having the setting be different from calling its actions was not a great idea and made for the sake of the wrong convenience. Instead of that, accept either fetch options, push options or the callbacks when dealing with the remote. The fetch options are currently only the callbacks, but more options will be moved from setters and getters on the remote to the options. This does mean passing the same struct along the different functions but the typical use-case will only call git_remote_fetch() or git_remote_push() and so won't notice much difference.
| * | push: remove own copy of callbacksCarlos Martín Nieto2015-05-134-75/+14
|/ / | | | | | | | | | | | | | | | | The push object knows which remote it's associated with, and therefore does not need to keep its own copy of the callbacks stored in the remote. Remove the copy and simply access the callbacks struct within the remote.
* | Merge pull request #3111 from whoisj/centralizing-buffer-sizesCarlos Martín Nieto2015-05-127-9/+12
|\ \ | |/ |/| Centralizing all IO buffer size values