summaryrefslogtreecommitdiff
path: root/src/graph.c
Commit message (Collapse)AuthorAgeFilesLines
* graph: handle not finding a merge base gracefullyCarlos Martín Nieto2014-04-081-1/+6
| | | | | | | git_merge_base() returns GIT_ENOTFOUND when it cannot find a merge base. graph_desdendant_of() returns a boolean value (barring any errors), so it needs to catch the NOTFOUND return value and convert it into false, as not merge base means it cannot be a descendant.
* Correct grouping of parenthesesJacques Germishuys2014-04-081-1/+1
| | | | git_graph_descendant_of was returning the result of an assignment
* Replace pqueue with code from hashsig heapRussell Belfer2014-02-031-20/+15
| | | | | | | | | | | I accidentally wrote a separate priority queue implementation when I was working on file rename detection as part of the file hash signature calculation code. To simplify licensing terms, I just adapted that to a general purpose priority queue and replace the old priority queue implementation that was borrowed from elsewhere. This also removes parts of the COPYING document that no longer apply to libgit2.
* Add `git_graph_descendant_of`.Arthur Schreiber2014-01-281-0/+14
|
* graph: make the ahead-behind docs clearerCarlos Martín Nieto2013-03-221-8/+8
| | | | | Explain it in local-upstream branch terms so it's easier to grasp than with the `one` and `two` naming from the merge-base code.
* update copyrightsEdward Thomson2013-01-081-1/+1
|
* Fix a bunch of leaks, error handling casescorrect-ahead-behindScott J. Goldman2012-12-091-12/+15
|
* Fix mark_parents() to account for bad luck traversalsScott J. Goldman2012-12-091-2/+18
| | | | | | | | | | | | | | | If commit timestamps are off, we're more likely to hit a traversal where the first path ends up traversing past the root commit of the tree. If that happens, it's possible that the loop will complete before the second path marks some of those final parents. This fix keeps track of the root nodes that are encountered in the traversal, and verify that they are properly marked. In the best case, with accurate timestamps, the traversal will continue to terminate when all the commits are STALE (parents of a merge-base), as it did before. In the worst case, where one path makes a complete traversal past a root commit, we will continue the loop until the root commit itself is marked.
* Morph copy of git_merge__bases_many() -> mark_parents()Scott J. Goldman2012-12-091-50/+15
| | | | Integrate mark_parents() with the ahead_behind() code.
* Copy git_merge__bases_many() for new ahead-behind codeScott J. Goldman2012-12-091-0/+96
| | | | | To be used as a basis for a function which marks nodes with parents up to the merge base.
* graph: plug leakCarlos Martín Nieto2012-11-301-2/+7
|
* Fix function name and add real error checkRussell Belfer2012-11-291-2/+2
| | | | | | | `revwalk.h:commit_lookup()` -> `git_revwalk__commit_lookup()` and make `git_commit_list_parse()` do real error checking that the item in the list is an actual commit object. Also fixed an apparent typo in a test name.
* graph.c: prune includesScott J. Goldman2012-11-281-7/+0
|
* Rename git_count_ahead_behind -> git_graph_ahead_behindScott J. Goldman2012-11-281-0/+100
Moved it into graph.{c,h} which i created for the new "graph" functions namespace. Also adjusted the function prototype to use `size_t` and `const git_oid *`.