]> git.proxmox.com Git - libgit2.git/log
libgit2.git
10 years agocred: tighten username rules
Carlos Martín Nieto [Fri, 18 Apr 2014 15:08:10 +0000 (17:08 +0200)]
cred: tighten username rules

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.

10 years agoMerge pull request #2108 from libgit2/rb/threadsafe-index-iterator
Vicent Marti [Fri, 18 Apr 2014 10:33:19 +0000 (12:33 +0200)]
Merge pull request #2108 from libgit2/rb/threadsafe-index-iterator

Make index iterator thread safe

10 years agocherry-pick: terminate the commit id string
Carlos Martín Nieto [Thu, 17 Apr 2014 22:34:04 +0000 (00:34 +0200)]
cherry-pick: terminate the commit id string

We treat this as a NUL-terminated string, so make sure that we add the
terminator.

10 years agoSome memory leak fixes
Russell Belfer [Thu, 17 Apr 2014 21:35:29 +0000 (14:35 -0700)]
Some memory leak fixes

10 years agoFix broken logic for attr cache invalidation
Russell Belfer [Thu, 17 Apr 2014 18:53:13 +0000 (11:53 -0700)]
Fix broken logic for attr cache invalidation

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.

10 years agoLock attribute file while reparsing data
Russell Belfer [Mon, 14 Apr 2014 19:31:17 +0000 (12:31 -0700)]
Lock attribute file while reparsing data

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.

10 years agoFix race checking for existing index items
Russell Belfer [Mon, 14 Apr 2014 19:29:27 +0000 (12:29 -0700)]
Fix race checking for existing index items

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.

10 years agoFix tests with new attr cache code
Russell Belfer [Fri, 11 Apr 2014 19:12:47 +0000 (12:12 -0700)]
Fix tests with new attr cache code

10 years agoAttribute file cache refactor
Russell Belfer [Fri, 11 Apr 2014 05:31:01 +0000 (22:31 -0700)]
Attribute file cache refactor

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.

10 years agoMinor tree cache speedups
Russell Belfer [Sat, 15 Mar 2014 05:01:30 +0000 (22:01 -0700)]
Minor tree cache speedups

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.

10 years agoFix leak in git_index_conflict_cleanup
Russell Belfer [Sat, 15 Mar 2014 04:59:26 +0000 (21:59 -0700)]
Fix leak in git_index_conflict_cleanup

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.

10 years agoFix leak when using push and pop with ignores
Russell Belfer [Fri, 14 Mar 2014 23:45:46 +0000 (16:45 -0700)]
Fix leak when using push and pop with ignores

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.

10 years agoFix refcount issues with mutex protected ignores
Russell Belfer [Fri, 14 Mar 2014 22:37:42 +0000 (15:37 -0700)]
Fix refcount issues with mutex protected ignores

Some ignore files were not being freed from the cache.

10 years agoFix threading tests when threads disabled
Russell Belfer [Fri, 14 Mar 2014 21:51:04 +0000 (14:51 -0700)]
Fix threading tests when threads disabled

10 years agoClean up index snapshot function naming
Russell Belfer [Fri, 14 Mar 2014 20:53:15 +0000 (13:53 -0700)]
Clean up index snapshot function naming

Clear up some of the various "find" functions and the snapshot
API naming to be things I like more.

10 years agoIndex locking and entry allocation changes
Russell Belfer [Fri, 14 Mar 2014 20:20:51 +0000 (13:20 -0700)]
Index locking and entry allocation changes

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.

10 years agoAdd diff threading tests and attr file cache locks
Russell Belfer [Tue, 11 Feb 2014 22:45:37 +0000 (14:45 -0800)]
Add diff threading tests and attr file cache locks

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.

10 years agoDecouple index iterator sort from index
Russell Belfer [Mon, 10 Feb 2014 21:20:08 +0000 (13:20 -0800)]
Decouple index iterator sort from index

This makes the index iterator honor the GIT_ITERATOR_IGNORE_CASE
and GIT_ITERATOR_DONT_IGNORE_CASE flags without modifying the
index data itself.  To take advantage of this, I had to export a
number of the internal index entry comparison functions.  I also
wrote some new tests to exercise the capability.

10 years agoAdd mutex around index entries changes
Russell Belfer [Sun, 9 Feb 2014 00:42:26 +0000 (16:42 -0800)]
Add mutex around index entries changes

This surrounds any function that mutates the entries vector with
a mutex so it can be safely snapshotted.

10 years agoAdd index snapshot and use it for iterator
Russell Belfer [Sat, 8 Feb 2014 00:48:27 +0000 (16:48 -0800)]
Add index snapshot and use it for iterator

10 years agoAdd public diff print helpers
Russell Belfer [Fri, 7 Feb 2014 22:17:19 +0000 (14:17 -0800)]
Add public diff print helpers

The usefulness of these helpers came up for me while debugging
some of the iterator changes that I was making, so since they
have also been requested (albeit indirectly) I thought I'd include
them.

10 years agoSome index internals refactoring
Russell Belfer [Fri, 7 Feb 2014 22:10:35 +0000 (14:10 -0800)]
Some index internals refactoring

Again, laying groundwork for some index iterator changes, this
contains a bunch of code refactorings for index internals that
should make it easier down the line to add locking around index
modifications.  Also this removes the redundant prefix_position
function and fixes some potential memory leaks.

10 years agoSome vector utility tweaks
Russell Belfer [Fri, 7 Feb 2014 19:20:36 +0000 (11:20 -0800)]
Some vector utility tweaks

This is just laying some groundwork for internal index changes
that I'm working on.

10 years agoMerge pull request #2261 from jacquesg/format-patch
Vicent Marti [Wed, 16 Apr 2014 17:09:35 +0000 (19:09 +0200)]
Merge pull request #2261 from jacquesg/format-patch

Support for format-patch

10 years agoMerge pull request #2270 from csware/fix_git_branch_t_enum
Vicent Marti [Wed, 16 Apr 2014 16:51:38 +0000 (18:51 +0200)]
Merge pull request #2270 from csware/fix_git_branch_t_enum

Add GIT_BRANCH_LOCAL_AND_REMOTE to git_branch_t enum

10 years agoAdd GIT_BRANCH_ALL to git_branch_t enum
Sven Strickroth [Wed, 16 Apr 2014 14:59:43 +0000 (16:59 +0200)]
Add GIT_BRANCH_ALL to git_branch_t enum

git_branch_t is an enum so requesting GIT_BRANCH_LOCAL | GIT_BRANCH_REMOTE is not possible as it is not a member of the enum (at least VS2013 C++ complains about it).

This fixes a regression introduced in commit a667ca8298193b3103c1dbdcb1f6c527e6e99eb2 (PR #1946).

Signed-off-by: Sven Strickroth <email@cs-ware.de>
10 years agoMerge pull request #2269 from libgit2/rb/fix-leading-slash-ignores
Vicent Marti [Wed, 16 Apr 2014 08:51:25 +0000 (10:51 +0200)]
Merge pull request #2269 from libgit2/rb/fix-leading-slash-ignores

Fix core.excludesfile named .gitignore

10 years agoMerge pull request #2235 from jacquesg/cherry-pick
Vicent Marti [Tue, 15 Apr 2014 18:26:23 +0000 (20:26 +0200)]
Merge pull request #2235 from jacquesg/cherry-pick

Add cherry pick support

10 years agoAdded a test case for formatting a binary patch e-mail
Jacques Germishuys [Mon, 14 Apr 2014 15:12:56 +0000 (17:12 +0200)]
Added a test case for formatting a binary patch e-mail

10 years agoSanitize git_diff_format_email_options' summary parameter
Jacques Germishuys [Fri, 11 Apr 2014 20:57:15 +0000 (22:57 +0200)]
Sanitize git_diff_format_email_options' summary parameter

It will form part of the subject line and should thus be one line.

10 years agoIntroduce git_diff_format_email and git_diff_commit_as_email
Jacques Germishuys [Fri, 11 Apr 2014 17:15:15 +0000 (19:15 +0200)]
Introduce git_diff_format_email and git_diff_commit_as_email

10 years agoIntroduce git_diff_get_stats, git_diff_stats_files_changed, git_diff_stats_insertions...
Jacques Germishuys [Fri, 11 Apr 2014 17:03:29 +0000 (19:03 +0200)]
Introduce git_diff_get_stats, git_diff_stats_files_changed, git_diff_stats_insertions, git_diff_stats_deletions and git_diff_stats_to_buf

10 years agoAdded git_diff_stats test files
Jacques Germishuys [Fri, 11 Apr 2014 17:14:18 +0000 (19:14 +0200)]
Added git_diff_stats test files

10 years agoFix core.excludesfile named .gitignore
Russell Belfer [Mon, 14 Apr 2014 22:59:48 +0000 (15:59 -0700)]
Fix core.excludesfile named .gitignore

Ignore rules with slashes in them are matched using FNM_PATHNAME
and use the path to the .gitignore file from the root of the
repository along with the path fragment (including slashes) in
the ignore file itself.  Unfortunately, the relative path to the
.gitignore file was being applied to the global core.excludesfile
if that was also named ".gitignore".

This fixes that with more precise matching and includes test for
ignore rules with leading slashes (which were the primary example
of this being broken in the real world).

This also backports an improvement to the file context logic from
the threadsafe-iterators branch where we don't rely on mutating
the key of the attribute file name to generate the context path.

10 years agoMerge pull request #2264 from jacquesg/fix-warnings
Vicent Marti [Mon, 14 Apr 2014 21:11:06 +0000 (23:11 +0200)]
Merge pull request #2264 from jacquesg/fix-warnings

Correct C90 warnings

10 years agoCapture conflict information in MERGE_MSG for revert and merge
Jacques Germishuys [Sun, 13 Apr 2014 17:53:35 +0000 (19:53 +0200)]
Capture conflict information in MERGE_MSG for revert and merge

10 years agoAdded cherry pick tests
Jacques Germishuys [Wed, 2 Apr 2014 11:57:11 +0000 (13:57 +0200)]
Added cherry pick tests

10 years agoAdded cherry-pick support
Jacques Germishuys [Tue, 1 Apr 2014 20:18:19 +0000 (22:18 +0200)]
Added cherry-pick support

10 years agoIntroduce git_merge__extract_conflict_paths
Jacques Germishuys [Mon, 7 Apr 2014 18:15:45 +0000 (20:15 +0200)]
Introduce git_merge__extract_conflict_paths

10 years agoMerge pull request #2262 from libgit2/rb/fix-ignore-pop
Vicent Marti [Mon, 14 Apr 2014 12:49:01 +0000 (14:49 +0200)]
Merge pull request #2262 from libgit2/rb/fix-ignore-pop

Fix bug popping ignore files during wd iteration

10 years agoCorrect C90 warnings
Jacques Germishuys [Fri, 11 Apr 2014 20:07:49 +0000 (22:07 +0200)]
Correct C90 warnings

10 years agoFix const-correctness of git_patch_get_delta, git_patch_num_hunks, git_patch_num_line...
Jacques Germishuys [Thu, 10 Apr 2014 10:44:51 +0000 (12:44 +0200)]
Fix const-correctness of git_patch_get_delta, git_patch_num_hunks, git_patch_num_lines_in_hunk

10 years agoAdded RFC2822 date format test cases
Jacques Germishuys [Thu, 10 Apr 2014 10:44:12 +0000 (12:44 +0200)]
Added RFC2822 date format test cases

10 years agoIntroduce git__date_rfc2822_fmt. Allows for RFC2822 date headers
Jacques Germishuys [Thu, 10 Apr 2014 10:42:29 +0000 (12:42 +0200)]
Introduce git__date_rfc2822_fmt. Allows for RFC2822 date headers

10 years agoFix bug popping ignore files during wd iteration
Russell Belfer [Thu, 10 Apr 2014 23:33:39 +0000 (16:33 -0700)]
Fix bug popping ignore files during wd iteration

There were a couple bugs in popping ignore files during iteration
that could result in incorrect decisions be made and thus ignore
files below the root either not being loaded correctly or not
being popped at the right time.

One bug was an off-by-one in comparing the path of the gitignore
file with the path being exited during iteration.

The second bug was not correctly truncating the path being tracked
during traversal if there were no ignores on the list (i.e. when
you have no .gitignore at the root, but do have some in contained
directories).

10 years agoIntroduce git_buf_putcn
Jacques Germishuys [Thu, 10 Apr 2014 10:43:16 +0000 (12:43 +0200)]
Introduce git_buf_putcn

Allows for inserting the same character n amount of times

10 years agoMerge pull request #2259 from libgit2/vmg/state-cleanup
Vicent Marti [Wed, 9 Apr 2014 10:45:49 +0000 (12:45 +0200)]
Merge pull request #2259 from libgit2/vmg/state-cleanup

Rewrite `state-cleanup`

10 years agoRewrite `git_repository__cleanup_files`
Vicent Marti [Wed, 9 Apr 2014 10:43:27 +0000 (12:43 +0200)]
Rewrite `git_repository__cleanup_files`

10 years agoMerge pull request #2257 from libgit2/rb/fix-submodules-with-tracked-content
Vicent Marti [Wed, 9 Apr 2014 10:09:30 +0000 (12:09 +0200)]
Merge pull request #2257 from libgit2/rb/fix-submodules-with-tracked-content

Update treatment of submodule-like directories with tracked content in the parent

10 years agoMerge pull request #2258 from libgit2/jk/userdiff-cc
Vicent Marti [Wed, 9 Apr 2014 10:08:30 +0000 (12:08 +0200)]
Merge pull request #2258 from libgit2/jk/userdiff-cc

pull userdiff pattern updates from git.git

10 years agouserdiff: update ada patterns
Jeff King [Tue, 8 Apr 2014 22:40:05 +0000 (18:40 -0400)]
userdiff: update ada patterns

This is the moral equivalent of

  git/git@39a87a29ce364ed3337e535adce5973731ba2968

from Adrian Johnson <ajohnson@redneon.com>.

10 years agouserdiff: update C/C++ patterns
Jeff King [Tue, 8 Apr 2014 22:41:39 +0000 (18:41 -0400)]
userdiff: update C/C++ patterns

This pulls upstream changes from:

  git/git@8a2e8da367f7175465118510b474ad365161d6b1

  git/git@abf8f9860248d8c213600974742f18dadaa8fbb5

  git/git@407e07f2a6f55e605fda9e90cb622887269f68b5

all by Johannes Sixt <j6t@kdbg.org>.

10 years agoUpdate submodules with parent-tracked content
Russell Belfer [Tue, 8 Apr 2014 21:47:20 +0000 (14:47 -0700)]
Update submodules with parent-tracked content

This updates how libgit2 treats submodule-like directories that
actually have tracked content inside of them.  This is a strange
corner case, but it seems that many people have abortive submodule
setups and then just went ahead and added the files into the
parent repository.  In this case, we should just treat the
submodule as if it was a normal directory.

Libgit2 will still try to skip over real submodules and contained
repositories that do not have tracked files inside them, but this
adds some new handling for cases where the apparently submodule
data is in conflict with the actual list of tracked files.

10 years agograph: handle not finding a merge base gracefully
Carlos Martín Nieto [Tue, 8 Apr 2014 14:52:20 +0000 (16:52 +0200)]
graph: handle not finding a merge base gracefully

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.

10 years agoMerge pull request #2256 from jacquesg/graph-descendant
Vicent Marti [Tue, 8 Apr 2014 14:37:39 +0000 (16:37 +0200)]
Merge pull request #2256 from jacquesg/graph-descendant

Correct grouping of parentheses

10 years agoAdded a no path test for git_graph_descendant_of
Jacques Germishuys [Tue, 8 Apr 2014 14:20:49 +0000 (16:20 +0200)]
Added a no path test for git_graph_descendant_of

10 years agoCorrect grouping of parentheses
Jacques Germishuys [Tue, 8 Apr 2014 13:46:45 +0000 (15:46 +0200)]
Correct grouping of parentheses

git_graph_descendant_of was returning the result of an assignment

10 years agoMerge pull request #2255 from libgit2/rb/fix-multiple-nfd-iconv-bug
Vicent Marti [Mon, 7 Apr 2014 18:51:39 +0000 (20:51 +0200)]
Merge pull request #2255 from libgit2/rb/fix-multiple-nfd-iconv-bug

Fix bug with multiple iconv conversions in one dir

10 years agovmg is always right
Russell Belfer [Mon, 7 Apr 2014 18:51:12 +0000 (11:51 -0700)]
vmg is always right

10 years agoFix bug with multiple iconv conversions in one dir
Russell Belfer [Mon, 7 Apr 2014 18:45:32 +0000 (11:45 -0700)]
Fix bug with multiple iconv conversions in one dir

The internal buffer in the `git_path_iconv_t` structure was not
being reset before the calls to `iconv` were made to convert data,
so if there were multiple decomposed Unicode paths in a single
directory, paths after the first one were being appended to the
first instead of treated as independent data.

10 years agoUpdate AUTHORS
Jacques Germishuys [Thu, 3 Apr 2014 08:53:42 +0000 (10:53 +0200)]
Update AUTHORS

10 years agogit_repository_state_cleanup() should remove rebase-merge/, rebase-apply/ and BISECT_LOG
Jacques Germishuys [Mon, 7 Apr 2014 15:32:23 +0000 (17:32 +0200)]
git_repository_state_cleanup() should remove rebase-merge/, rebase-apply/ and BISECT_LOG

10 years agoMerge pull request #2249 from libgit2/rb/starstar-fnmatch
Vicent Marti [Mon, 7 Apr 2014 09:22:23 +0000 (11:22 +0200)]
Merge pull request #2249 from libgit2/rb/starstar-fnmatch

Add support for ** matches in ignores

10 years agoFix fnmatch comment to be clearer
Russell Belfer [Sun, 6 Apr 2014 18:20:22 +0000 (11:20 -0700)]
Fix fnmatch comment to be clearer

10 years agoMore ** tests for pattern rules
Russell Belfer [Sun, 6 Apr 2014 17:42:26 +0000 (10:42 -0700)]
More ** tests for pattern rules

10 years agoMerge pull request #2250 from jacquesg/vector-leak
Vicent Marti [Sun, 6 Apr 2014 14:22:29 +0000 (16:22 +0200)]
Merge pull request #2250 from jacquesg/vector-leak

Don't lose our elements when calling git_vector_set()

10 years agoDon't lose our elements when calling git_vector_set()
Jacques Germishuys [Sun, 6 Apr 2014 13:06:46 +0000 (15:06 +0200)]
Don't lose our elements when calling git_vector_set()

10 years agoAdd support for ** matches in ignores
Russell Belfer [Sat, 5 Apr 2014 00:02:12 +0000 (17:02 -0700)]
Add support for ** matches in ignores

This is an experimental addition to add ** support to fnmatch
pattern matching in libgit2.  It needs more testing.

10 years agoMerge pull request #2215 from libgit2/rb/submodule-cache-fixes
Vicent Marti [Fri, 4 Apr 2014 12:24:08 +0000 (14:24 +0200)]
Merge pull request #2215 from libgit2/rb/submodule-cache-fixes

Improve submodule cache management

10 years agoMerge pull request #2211 from Yogu/retry-renaming-config
Vicent Marti [Fri, 4 Apr 2014 12:23:07 +0000 (14:23 +0200)]
Merge pull request #2211 from Yogu/retry-renaming-config

Retry committing locked files on error

10 years agoTest (and fix) the git_submodule_sync changes
Russell Belfer [Thu, 3 Apr 2014 18:58:51 +0000 (11:58 -0700)]
Test (and fix) the git_submodule_sync changes

I wrote this stuff a while ago and forgot to write tests.  Wanted
to do so now to wrap up the PR and immediately found problems.

10 years agoMinor code cleanup
Russell Belfer [Thu, 3 Apr 2014 18:29:08 +0000 (11:29 -0700)]
Minor code cleanup

10 years agogit_submodule_resolve_url supports relative urls
Jan Melcher [Wed, 2 Apr 2014 21:55:21 +0000 (23:55 +0200)]
git_submodule_resolve_url supports relative urls

The base for the relative urls is determined as follows, with descending
priority:

- remote url of HEAD's remote tracking branch
- remote "origin"
- workdir

This follows git.git behaviour

10 years agoTest git_submodule_add_setup with relative url
Jan Melcher [Sat, 8 Mar 2014 22:04:56 +0000 (23:04 +0100)]
Test git_submodule_add_setup with relative url

10 years agoMerge pull request #2244 from jacquesg/const-correctness
Vicent Marti [Thu, 3 Apr 2014 15:12:11 +0000 (17:12 +0200)]
Merge pull request #2244 from jacquesg/const-correctness

Const correctness!

10 years agoConst correctness!
Jacques Germishuys [Thu, 3 Apr 2014 13:50:21 +0000 (15:50 +0200)]
Const correctness!

10 years agoMerge pull request #2238 from libgit2/cmn/upstream-for-unborn
Vicent Marti [Thu, 3 Apr 2014 07:53:28 +0000 (09:53 +0200)]
Merge pull request #2238 from libgit2/cmn/upstream-for-unborn

Handle an upstream branch for an unborn one

10 years agoMerge pull request #2239 from libgit2/vmg/clar-skip-test
Vicent Marti [Thu, 3 Apr 2014 07:52:42 +0000 (09:52 +0200)]
Merge pull request #2239 from libgit2/vmg/clar-skip-test

Skip tests on Clar

10 years agoremote: mark branch for-merge even if we're unborn
Carlos Martín Nieto [Wed, 2 Apr 2014 16:44:01 +0000 (18:44 +0200)]
remote: mark branch for-merge even if we're unborn

When the current branch is unborn, git will still mark the current
branch's upstream for-merge if there is an upstream configuration. The
only non-constrived case is cloning from an empty repository which then
gains history. origin's master should be marked for-merge.

In order to do this, we cannot use the high-level wrappers that expect a
reference, as we may not have one. Move over to the internal ones that
expect a reference name, which we do have.

10 years agoremote: write tests for cloning from an empty repo
Carlos Martín Nieto [Wed, 2 Apr 2014 16:14:02 +0000 (18:14 +0200)]
remote: write tests for cloning from an empty repo

Cloning from an empty repo must set master's upstream to origin's
master, even if neither of them exist.

Fetching from a non-empty origin must then mark the master branch
for-merge. This currently fails.

10 years agoClar: skip tests
Vicent Marti [Wed, 2 Apr 2014 16:50:47 +0000 (18:50 +0200)]
Clar: skip tests

10 years agoMerge pull request #2237 from mekishizufu/fix_return_value
Vicent Marti [Wed, 2 Apr 2014 16:48:38 +0000 (18:48 +0200)]
Merge pull request #2237 from mekishizufu/fix_return_value

Fix submodule_is_config_only's return value

10 years agocheckout: Fix submodule_is_config_only's return value
Jiri Pospisil [Wed, 2 Apr 2014 16:21:41 +0000 (18:21 +0200)]
checkout: Fix submodule_is_config_only's return value

10 years agoMerge pull request #2230 from anuraggup/revwalk-merge-base
Vicent Marti [Wed, 2 Apr 2014 15:45:25 +0000 (17:45 +0200)]
Merge pull request #2230 from anuraggup/revwalk-merge-base

No need to find merge base.

10 years agoAdd warning when skipping blame test
Russell Belfer [Wed, 2 Apr 2014 14:45:16 +0000 (07:45 -0700)]
Add warning when skipping blame test

10 years agoMerge pull request #2231 from libgit2/fix-memory-index-doc-comment
Vicent Marti [Wed, 2 Apr 2014 12:13:01 +0000 (14:13 +0200)]
Merge pull request #2231 from libgit2/fix-memory-index-doc-comment

Correct a stale reference to GIT_EBAREINDEX

10 years agoGive the correct name for the function in the doc.
Rob Rix [Wed, 2 Apr 2014 12:02:43 +0000 (08:02 -0400)]
Give the correct name for the function in the doc.

Per @carlosmn, git_index_add is now named git_index_add_bypath.

10 years agoMerge pull request #2233 from libgit2/rb/fix-untracked-repo-status
Vicent Marti [Wed, 2 Apr 2014 11:42:14 +0000 (13:42 +0200)]
Merge pull request #2233 from libgit2/rb/fix-untracked-repo-status

Skip untracked contained repo contents even with gitlink files

10 years agoSkip blame libgit2 test if not in libgit2 repo
Russell Belfer [Wed, 2 Apr 2014 04:58:48 +0000 (21:58 -0700)]
Skip blame libgit2 test if not in libgit2 repo

One blame test replies on being run from within the libgit2
repository to leverage having a longer history to play with, but
some bundled versions of libgit2 don't have the whole libgit2
history.  This just skips that test if the repository can't be
opened.

10 years agoNew tests of status for repo inside repo
Russell Belfer [Wed, 2 Apr 2014 04:32:06 +0000 (21:32 -0700)]
New tests of status for repo inside repo

10 years agoFix skipping content of contained repos
Russell Belfer [Wed, 2 Apr 2014 04:30:52 +0000 (21:30 -0700)]
Fix skipping content of contained repos

When doing a diff for use in status, we should never show the
content of a git repository contained inside another one.  The
logic to do this was looking for a .git directory and so when a
gitlink plain .git file was used, it was failing to exclude the
directory content.

10 years agoMore tests and fix submodule index refresh
Russell Belfer [Tue, 1 Apr 2014 23:46:25 +0000 (16:46 -0700)]
More tests and fix submodule index refresh

There was a little bug where the submodule cache thought that the
index date was out of date even when it wasn't that was resulting
in some extra scans of index data even when not needed.

Mostly this commit adds a bunch of new tests including adding and
removing submodules in the index and in the HEAD and seeing if we
can automatically pick them up when refreshing.

10 years agoCorrect a stale reference to GIT_EBAREINDEX
Rob Rix [Tue, 1 Apr 2014 20:37:19 +0000 (16:37 -0400)]
Correct a stale reference to GIT_EBAREINDEX

10 years agoRemove most submodule reloads from tests
Russell Belfer [Tue, 1 Apr 2014 20:24:06 +0000 (13:24 -0700)]
Remove most submodule reloads from tests

With the new submodule cache validity checks, we generally don't
need to call git_submodule_reload_all to have up-to-date submodule
data.  Some tests are still calling it where I want to actually
test that it can be called safely and doesn't break anything, but
mostly it is not needed.

This also expands some of the existing submodule tests to cover
some variants on the behavior that was already being tested.

10 years agoFix submodule accounting for name and path changes
Russell Belfer [Tue, 1 Apr 2014 19:19:11 +0000 (12:19 -0700)]
Fix submodule accounting for name and path changes

Wrote tests that try adding, removing, and updating the name of
submodules which showed a number of problems with how we account
for changes when incrementally updating the submodule info.  Most
of these issues didn't exist before because reloading would always
blow away the old submodule data.

10 years agorefspec: git_refspec_parse() does not exist
Carlos Martín Nieto [Tue, 1 Apr 2014 18:17:49 +0000 (20:17 +0200)]
refspec: git_refspec_parse() does not exist

10 years agoMinor submodule cache locking improvements
Russell Belfer [Tue, 1 Apr 2014 17:22:51 +0000 (10:22 -0700)]
Minor submodule cache locking improvements

This improvement the management of the lock around submodule cache
updates slightly, using the lock to make sure that foreach can
safely make a snapshot of all existing submodules and making sure
that git_submodule_add_setup also grabs a lock before inserting
the new submodule.  Cache initialization / refresh should already
have been holding the lock correctly as it adds submodules.

10 years agoReinstate efficient submodule reloading
Russell Belfer [Sun, 30 Mar 2014 22:35:56 +0000 (15:35 -0700)]
Reinstate efficient submodule reloading

This makes it so that git_submodule_reload_all will actually only
reload changed items unless the `force` flag is used.

10 years agoUse enums instead of bools for submodule options
Russell Belfer [Sat, 29 Mar 2014 22:23:01 +0000 (15:23 -0700)]
Use enums instead of bools for submodule options

When forcing cache flushes or reload, etc., it is easier to keep
track of intent using enums instead of plain bools.  Also, this
fixes a bug where the cache was not being properly refreshes by
a git_submodule_reload_all.

10 years agoMake submodule refresh a bit smarter
Russell Belfer [Fri, 28 Mar 2014 23:50:49 +0000 (16:50 -0700)]
Make submodule refresh a bit smarter

This makes submodule cache refresh actually look at the timestamps
from the data sources for submodules and reload as needed if they
have changed since the last refresh.