| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Correct C90 warnings
|
| | |/ /
| |/| | |
|
|\ \ \ \
| |/ / /
|/| | | |
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).
|
|\ \ \ \
| | | | |
| | | | | |
Rewrite `state-cleanup`
|
| | | | | |
|
| | |/ /
| |/| |
| | | |
| | | | |
and BISECT_LOG
|
|\ \ \ \
| | | | |
| | | | | |
Update treatment of submodule-like directories with tracked content in the parent
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is the moral equivalent of
git/git@39a87a29ce364ed3337e535adce5973731ba2968
from Adrian Johnson <ajohnson@redneon.com>.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This pulls upstream changes from:
git/git@8a2e8da367f7175465118510b474ad365161d6b1
git/git@abf8f9860248d8c213600974742f18dadaa8fbb5
git/git@407e07f2a6f55e605fda9e90cb622887269f68b5
all by Johannes Sixt <j6t@kdbg.org>.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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 parentheses
|
| |/
| |
| |
| | |
git_graph_descendant_of was returning the result of an assignment
|
| | |
|
|/
|
|
|
|
|
|
| |
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.
|
|\
| |
| | |
Add support for ** matches in ignores
|
| | |
|
| |
| |
| |
| |
| | |
This is an experimental addition to add ** support to fnmatch
pattern matching in libgit2. It needs more testing.
|
|\ \
| |/
|/| |
Don't lose our elements when calling git_vector_set()
|
| | |
|
|\ \
| | |
| | | |
Improve submodule cache management
|
| | |
| | |
| | |
| | |
| | | |
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.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | | |
This makes it so that git_submodule_reload_all will actually only
reload changed items unless the `force` flag is used.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This takes the old submodule cache which was just a git_strmap
and makes a real git_submodule_cache object that can contain other
things like a lock and timestamp-ish data to control refreshing of
submodule info.
|
| | |
| | |
| | |
| | |
| | |
| | | |
Turns out there was already a helper to do what I wanted to do,
so I just made it so that I could use it for sync and switched to
that instead.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes `git_submodule_sync` to correctly update the remote URL
of the default branch of the submodule along with the URL in the
parent repository config (i.e. match core Git's behavior).
Also move some useful helper logic from the submodule code into
a shared config API `git_config__update_entry` that can either set
or delete an entry with constraints like not overwriting or not
creating a new entry. I used that helper to update a couple other
places in the code.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There are a few places where we need to join three strings to
assemble a path. This adds a simple join3 function to avoid the
comparatively expensive join_n (which calls strlen on each string
twice).
|
|\ \ \
| |_|/
|/| | |
Retry committing locked files on error
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a file is open for reading (without shared-delete permission), and
then a different thread/process called p_rename, that would fail, even
if the file was only open for reading for a few milliseconds. This
change lets p_rename wait up to 50ms for the file to be closed by the
reader. Applies only to win32.
This is especially important for git_filebuf_commit, because writes
should not fail if the file is read simultaneously.
Fixes #2207
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
Fix submodule_is_config_only's return value
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
No need to find merge base.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| |_|/
|/| | |
|
|\ \ \
| | | |
| | | | |
In-memory packing backend
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Fix submodule sort order during iteration
|
| | | | | |
|