summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | | | | | | Merge pull request #2603 from libgit2/cmn/revwalk-merge-baseEdward Thomson2014-10-102-26/+101
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Walk only as far as the common ancestors of uninteresting commits
| * | | | | | | | | | | | revwalk: clear first-parent flag on resetcmn/revwalk-merge-baseCarlos Martín Nieto2014-10-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should have been included when implementing the feature but was missed.
| * | | | | | | | | | | | revwalk: catch no-push and no-hide casesCarlos Martín Nieto2014-10-082-11/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | revwalk: mark uninteresting only up to the common ancestorsCarlos Martín Nieto2014-10-081-1/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | revwalk: keep a single list of user inputsCarlos Martín Nieto2014-10-082-27/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old separation was due to the old merge-base finding, so it's no longer necessary.
| * | | | | | | | | | | | revwalk: clear the flags on resetCarlos Martín Nieto2014-10-081-0/+1
| | |_|_|_|/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These store merge-base information which is only valid for a single run.
* | | | | | | | | | | | Merge pull request #2606 from arthurschreiber/arthur/align-git-remote-fetchCarlos Martín Nieto2014-10-102-4/+4
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Treat an empty list of refspecs the same as a NULL value.
| * | | | | | | | | | | | Treat an empty list of refspecs the same as a NULL value.Arthur Schreiber2014-10-102-4/+4
|/ / / / / / / / / / / /
* | | | | | | | | | | | Merge pull request #2592 from libgit2/cmn/describeCarlos Martín Nieto2014-10-0964-1/+1371
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / / / |/| | | | | | | | | | | Implement git-describe
| * | | | | | | | | | | describe: document the APIcmn/describeCarlos Martín Nieto2014-09-301-3/+71
| | | | | | | | | | | |
| * | | | | | | | | | | describe: make mingw happyCarlos Martín Nieto2014-09-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The MinGW compiler does not like it when we declare a typedef twice.
| * | | | | | | | | | | describe: rename git_describe_opts to git_describe_optionsCarlos Martín Nieto2014-09-306-32/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And implement the option init functions for this and the format options.
| * | | | | | | | | | | describe: use globs in the testsCarlos Martín Nieto2014-09-304-49/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes us be closer to git's tests, and lets us better describe what we expect from the output.
| * | | | | | | | | | | describe: implement abbreviated idsCarlos Martín Nieto2014-09-301-6/+27
| | | | | | | | | | | |
| * | | | | | | | | | | describe: implement describing the workdirCarlos Martín Nieto2014-09-305-6/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | describe: split into gather and format stepsCarlos Martín Nieto2014-09-306-101/+242
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | describe: rename _object() to _commit()Carlos Martín Nieto2014-09-304-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We don't describe arbitrary object, so let's give it the name of the one object type we accept.
| * | | | | | | | | | | Merge remote-tracking branch 'upstream/master' into cmn/describeCarlos Martín Nieto2014-09-30337-4231/+11818
| |\ \ \ \ \ \ \ \ \ \ \ | | | |_|_|_|_|_|_|_|/ / | | |/| | | | | | | | |
| * | | | | | | | | | | object: introduce git_describe_object()nulltoken2014-04-3011-1/+979
| | | | | | | | | | | |
| * | | | | | | | | | | tests: Add "describe" test repositorynulltoken2014-04-3053-0/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Built with the following script: #!/bin/sh test_tick () { sleep 10 } test_tick && echo one >file && git add file && git commit -m initial && one=$(git rev-parse HEAD) && git describe --always HEAD && test_tick && echo two >file && git add file && git commit -m second && two=$(git rev-parse HEAD) && test_tick && echo three >file && git add file && git commit -m third && test_tick && echo A >file && git add file && git commit -m A && test_tick && git tag -a -m A A && test_tick && echo c >file && git add file && git commit -m c && test_tick && git tag c && git reset --hard $two && test_tick && echo B >side && git add side && git commit -m B && test_tick && git tag -a -m B B && test_tick && git merge -m Merged c && merged=$(git rev-parse HEAD) && git reset --hard $two && test_tick && echo D >another && git add another && git commit -m D && test_tick && git tag -a -m D D && test_tick && git tag -a -m R R && test_tick && echo DD >another && git commit -a -m another && test_tick && git tag e && test_tick && echo DDD >another && git commit -a -m "yet another" && test_tick && git merge -m Merged $merged && test_tick && echo X >file && echo X >side && git add file side && git commit -m x
| * | | | | | | | | | | oidmap: Enhance the khash wrappernulltoken2014-04-301-0/+13
| | | | | | | | | | | |
* | | | | | | | | | | | Merge branch 'anuraggup/git_filter'Edward Thomson2014-10-091-2/+11
|\ \ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | | git_filter: dup the filter nameAnurag Gupta (OSG)2014-10-091-2/+11
|/ / / / / / / / / / / /
* | | | | | | | | | | | Merge pull request #2599 from linquize/config-trailing-spacesEdward Thomson2014-10-093-1/+19
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | config: Handle multiple spaces that follow a configuration value and precede a comment char
| * | | | | | | | | | | | config: Add test cases that have trailing spaces before comment charsLinquize2014-10-042-0/+18
| | | | | | | | | | | | |
| * | | | | | | | | | | | config: Fix multiple trailing spaces before comments not completely trimmedLinquize2014-10-041-1/+1
| | |_|/ / / / / / / / / | |/| | | | | | | | | |
* | | | | | | | | | | | Merge pull request #2601 from SeijiIto/masterEdward Thomson2014-10-091-1/+1
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Fix README.md
| * | | | | | | | | | | | Fix README.mdSeijiIto2014-10-061-1/+1
| |/ / / / / / / / / / /
* | | | | | | | | | | | Merge pull request #2597 from ethomson/fixupEdward Thomson2014-10-092-3/+5
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Trivial fixups
| * | | | | | | | | | | | repository_head_unborn: clear error when HEAD is unbornEdward Thomson2014-10-031-1/+3
| | | | | | | | | | | | |
| * | | | | | | | | | | | p_mkdir != mkdir on win32Edward Thomson2014-10-031-2/+2
| |/ / / / / / / / / / /
* | | | | | | | | | | | Fix an uninitialized variableCarlos Martín Nieto2014-10-091-1/+1
| | | | | | | | | | | |
* | | | | | | | | | | | Merge pull request #2448 from libgit2/cmn/reference-transactionEdward Thomson2014-10-0916-37/+765
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce reference transactions
| * | | | | | | | | | | | transaction: rename lock() to lock_ref()cmn/reference-transactionCarlos Martín Nieto2014-10-094-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This leaves space for future expansion to locking other resources without having to change the API for references.
| * | | | | | | | | | | | Add changelog for transactionsCarlos Martín Nieto2014-09-301-0/+5
| | | | | | | | | | | | |
| * | | | | | | | | | | | transaction: add documentationCarlos Martín Nieto2014-09-301-2/+88
| | | | | | | | | | | | |
| * | | | | | | | | | | | stash: use a transaction to modify the reflogCarlos Martín Nieto2014-09-301-13/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | Introduce reference transactionsCarlos Martín Nieto2014-09-3010-22/+629
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | signature: add a dup function which takes a poolCarlos Martín Nieto2014-09-302-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will be used by the transaction code.
| * | | | | | | | | | | | reflog: constify byindexCarlos Martín Nieto2014-09-302-2/+2
| | |_|/ / / / / / / / / | |/| | | | | | | | | |
* | | | | | | | | | | | Merge pull request #2462 from libgit2/cmn/remote-fetch-refsEdward Thomson2014-10-0912-67/+262
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | Implement opportunistic ref updates
| * | | | | | | | | | | | remote: implement opportunistic remote-tracking branch updatescmn/remote-fetch-refsCarlos Martín Nieto2014-09-304-0/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | remote: store passive refspecsCarlos Martín Nieto2014-09-302-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | remote: don't DWIM refspecs unnecessarilyCarlos Martín Nieto2014-09-301-19/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | | | remote: use active refspec override in the testsCarlos Martín Nieto2014-09-302-28/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lets us test this bit as well as getting closer to what they were trying to do.
| * | | | | | | | | | | | remote: allow overriding the refspecs for download and fetchCarlos Martín Nieto2014-09-3010-29/+64
| |/ / / / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | | | | | | Merge pull request #2604 from arthurschreiber/arthur/add-merge-bases-manyCarlos Martín Nieto2014-10-094-14/+105
|\ \ \ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / / / |/| | | | | | | | | | | Add `git_merge_bases_many`
| * | | | | | | | | | | Extract shared functionality.Arthur Schreiber2014-10-091-55/+41
| | | | | | | | | | | |
| * | | | | | | | | | | Add git_merge_bases_many.Arthur Schreiber2014-10-094-2/+107
|/ / / / / / / / / / /
* | | | | | | | | | | Merge pull request #2594 from libgit2/vmg/hashsigVicent Marti2014-10-016-12/+16
|\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | hashsig: Export as a `sys` header