- 10 Oct, 2014 9 commits
-
-
Linquize committed
-
An obvious place to fill the tree cache is on write-tree, as we're guaranteed to be able to fill in the whole tree cache. The way this commit does this is not the most efficient, as we read the root tree from the odb instead of filling in the cache as we go along, but it fills the cache such that successive operations (and persisting the index to disk) will be able to take advantage of the cache, and it reuses the code we already have for filling the cache. Filling in the cache as we create the trees would require some reallocation of the children vector, which is currently not possible with out pool implementation. A different data structure would likely allow us to perform this operation at a later date.
Carlos Martín Nieto committed -
If e.g. the root tree is invalidated, we still want to write out its children, since those may still have valid cache entries.
Carlos Martín Nieto committed -
Keeping the cache around after read-tree is only one part of the optimisation opportunities. In order to share the cache between program instances, we need to write the TREE extension to the index. Do so, taking the opportunity to rename 'entries' to 'entry_count' to match the name given in the format description. The included test is rather trivial, but works as a sanity check.
Carlos Martín Nieto committed -
This wasn't used. We invalidate based on the full path, so we always go down the tree, never up.
Carlos Martín Nieto committed -
When reading from a tree, we know what every tree is going to look like, so we can fill in the tree cache completely, making use of the index for modification of trees a lot quicker.
Carlos Martín Nieto committed -
This simplifies freeing the entries quite a bit; though there aren't that many failure paths right now, introducing filling the cache from a tree will introduce more. This makes sure not to leak memory on errors.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
Arthur Schreiber committed
-
- 09 Oct, 2014 6 commits
-
-
Arthur Schreiber committed
-
Anurag Gupta (OSG) committed
-
Carlos Martín Nieto committed
-
This leaves space for future expansion to locking other resources without having to change the API for references.
Carlos Martín Nieto committed -
Arthur Schreiber committed
-
Arthur Schreiber committed
-
- 08 Oct, 2014 5 commits
-
-
This should have been included when implementing the feature but was missed.
Carlos Martín Nieto committed -
If there have been no pushes, we can immediately return ITEROVER. If there have been no hides, we must not run the uninteresting pre-mark phase, as we do not want to hide anything and this would simply cause us to spend time loading objects.
Carlos Martín Nieto committed -
This introduces a phase at the start of preparing a walk which pre-marks uninteresting commits, but only up to the common ancestors. We do this in a similar way to git, by walking down the history and marking (which is what we used to do), but we keep a time-sorted priority queue of commits and stop marking as soon as there are only uninteresting commits in this queue. This is a similar rule to the one used to find the merge-base. As we keep inserting commits regardless of the uninteresting bit, if there are only uninteresting commits in the queue, it means we've run out of interesting commits in our walk, so we can stop. The old mark_unintesting() logic is still in place, but that stops walking if it finds an already-uninteresting commit, so it will stop on the ones we've pre-marked; but keeping it allows us to also hide those that are hidden via the callback.
Carlos Martín Nieto committed -
The old separation was due to the old merge-base finding, so it's no longer necessary.
Carlos Martín Nieto committed -
These store merge-base information which is only valid for a single run.
Carlos Martín Nieto committed
-
- 04 Oct, 2014 1 commit
-
-
Linquize committed
-
- 03 Oct, 2014 1 commit
-
-
Edward Thomson committed
-
- 01 Oct, 2014 2 commits
-
-
Vicent Marti committed
-
This allows users to specify self-signed certificates, or to provide their own certificate stores on limited platforms such as mobile phones.
William Swanson committed
-
- 30 Sep, 2014 16 commits
-
-
Erdur committed
-
We don't need the remote loaded, and the function extracted both of these from the git_remote in order to do its work, so let's remote a step and not ask for the loaded remote at all. This fixes #2390.
Carlos Martín Nieto committed -
The stash is implemented as the refs/stash reference and its reflog. In order to modify the reflog, we need avoid races by making sure we're the only ones allowed to modify the reflog. We achieve this via the transactions API. Locking the reference gives us exclusive write access, letting us modify and write it without races.
Carlos Martín Nieto committed -
A transaction allows you to lock multiple references and set up changes for them before applying the changes all at once (or as close as the backend supports). This can be used for replication purposes, or for making sure some operations run when the reference is locked and thus cannot be changed.
Carlos Martín Nieto committed -
This will be used by the transaction code.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
When a list of refspecs is passed to fetch (what git would consider refspec passed on the command-line), we not only need to perform the updates described in that refspec, but also update the remote-tracking branch of the fetched remote heads according to the remote's configured refspecs. These "fetches" are not however to be written to FETCH_HEAD as they would be duplicate data, and it's not what the user asked for.
Carlos Martín Nieto committed -
The configured/base fetch refspecs need to be taken into account in order to implement opportunistic remote-tracking branch updates. DWIM them and store them in the struct, but don't do anything with them yet.
Carlos Martín Nieto committed -
We can only DWIM when we've connected to the remote and have the list of the remote's references. Adding or setting the refspecs should not trigger an attempt to DWIM the refspecs as we typically cannot do it, and even if we did, we would not use them for the current fetch.
Carlos Martín Nieto committed -
With opportunistic ref updates, git has introduced the concept of having base refspecs *and* refspecs that are active for a particular fetch. Let's start by letting the user override the refspecs for download.
Carlos Martín Nieto committed -
The MinGW compiler does not like it when we declare a typedef twice.
Carlos Martín Nieto committed -
And implement the option init functions for this and the format options.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
When we describe the workdir, we perform a describe on HEAD and then check to see if the worktree is dirty. If it is and we have a suffix string, we append that to the buffer.
Carlos Martín Nieto committed -
Instead of printing out to the buffer inside the information-gathering phase, write the data to a intermediate result structure. This allows us to split the options into gathering options and formatting options, simplifying the gathering code.
Carlos Martín Nieto committed -
We don't describe arbitrary object, so let's give it the name of the one object type we accept.
Carlos Martín Nieto committed
-