| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This can be used by tools to show mesages about failing to communicate
with the server. The error message in this case will often contain the
server's error message, as far as it managed to send anything.
|
|
|
|
|
|
|
|
| |
When we fail to read from stdout, it's typically because the URL was
wrong and the server process has sent some output over its stderr
output.
Read that output and set the error message to whatever we read from it.
|
|\
| |
| | |
Use a diff for iteration in index_update_all and index_add_all
|
| | |
|
| |
| |
| |
| | |
Without this option, we would not be able to catch exec bit changes.
|
| |
| |
| |
| |
| |
| |
| | |
Instead of going through each entry we have and re-adding, which may not
even be correct for certain crlf options and has bad performance, use
the function which performs a diff against the worktree and try to add
and remove files from that list.
|
| |
| |
| |
| |
| | |
Refactor so we look like the code we're replacing, which should also
allow us to more easily inplement add-all.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We currently iterate over all the entries and re-add them to the
index. While this provides correctness, it is wasteful as we try to
re-insert files which have not changed.
Instead, take a diff between the index and the worktree and only re-add
those which we already know have changed.
|
|\ \
| | |
| | | |
Provide error messages for git_path_direach operations
|
| | |
| | |
| | |
| | |
| | |
| | | |
We set an error if we get an error when reading, but we don't bother
setting an error message for write failing. This causes a cryptic error
to be shown to the user when the target filesystem is full.
|
| | |
| | |
| | |
| | |
| | | |
Now that `git_path_direach` lets us specify an error message to report,
set an appropriate error message while linking.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This function deals with functions doing IO which means the amount of
errors that can happen is quit large. It does not help if it always
ovewrites the underlying error message with a less understandable
version of "something went wrong".
Instead, only use this generic message if there was no error set by the
callback.
|
|\ \
| | |
| | | |
Updated dlibgit link.
|
| | | |
|
|\ \ \
| |/ /
|/| | |
Bring Early EOF message in line with the other two
|
|/ / |
|
| | |
|
|\ \
| |/
|/| |
Add tests for and fix push negotiation notification
|
| |
| |
| |
| |
| | |
There was a copypasta error and the source and destination IDs were
reversed.
|
|/
|
|
|
| |
The functionality was meged without including tests, so let's add them
now.
|
| |
|
|\
| |
| | |
Attributes: don't match files for folders
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When handling attr matching, simply compare the directory path where the
attribute file resides to the path being matched. Skip over commonality
to allow us to compare the contents of the attribute file to the remainder
of the path.
This allows us to more easily compare the pattern directly to the path,
instead of trying to guess whether we want to compare the path's basename
or the full path based on whether the match was inside a containing
directory or not.
This also allows us to do fewer translations on the pattern (trying to
re-prefix it.)
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When determining whether some file matches an attr pattern, do
not try to truncate the path to pass to fnmatch. When there is
no containing directory for an item (eg, from a .gitignore in the
root) this will cause us to truncate our path, which means that
we cannot do meaningful comparisons on it and we may have false
positives when trying to determine whether a given file is actually
a file or a folder (as we have lost the path's base information.)
This mangling was to allow fnmatch to compare a directory on disk to
the name of a directory, but it is unnecessary as our fnmatch accepts
FNM_LEADING_DIR.
|
| | |
|
| |
| |
| |
| |
| | |
When ignoring a path "foo/", ensure that this is actually a directory,
and not simply a file named "foo".
|
| | |
|
| |
| |
| |
| |
| | |
When a .gitignore specifies some folder "foo/", ensure that a file
with the same name "foo" is not ignored.
|
| |
| |
| |
| |
| |
| | |
Ensure that when examining a .gitignore in a subdirectory, we do not
erroneously apply the paths contained therein to the root of the
repository. (Fixed in c02a0e4).
|
|\ \
| | |
| | | |
Use the packbuilder in local push
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A couple of tests use the wrong remote to push to. We did not notice up
to now because the local push would copy individual objects, and those
already existed, so it became a no-op.
Once we made local push create the packfile, it became noticeable that
there was a new packfile where it didn't belong.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Instead of copying each object individually, as we'd been doing, use the
packbuilder which should be faster and give us some feedback.
While performing this change, we can hook up the packbuilder's writing
to the push progress so the caller knows how far along we are.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Show progress during packing for the local transport
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is useful to send to the client while we're performing the work.
The reporting function has a force parameter which makes sure that we
do send out the message of 100% completed, even if this comes before the
next udpate window.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Set a callback for the packbuilder so we can send the sideband messages
to the caller, formatting them as git would.
|
| |/ /
| | |
| | |
| | |
| | | |
This lets us see what the server (or libgit2 locally) is doing, rather
than having to stare at a non-moving screen.
|
|\ \ \
| | | |
| | | | |
odb: make the writestream's size a git_off_t
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Restricting files to size_t is a silly limitation. The loose backend
writes to a file directly, so there is no issue in using 63 bits for the
size.
We still assume that the header is going to fit in 64 bytes, which does
mean quite a bit smaller files due to the run-length encoding, but it's
still a much larger size than you would want Git to handle.
|
| | |
| | |
| | |
| | |
| | | |
The interesting one is the notification macro, which was returning
directly on a soft-abort instead of going through the cleanup.
|
|\ \ \
| | | |
| | | | |
index: make the entries have more accurate sizes
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
While we are confident about the size of an int in architectures we're
likely to care about, the index format is defined by the exact size of
the fields. Use the definitions which show the exact width of the entry
fields.
As part of that, bring back 32-bit time and size fields, which currently
are 64 bits wide and can bring a false sense of security in how much
data they really store. Document that these fields are not to be taken
as authoritative.
|
|\ \ \
| | | |
| | | | |
Get rid of libssh2 embedding
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
It was added as a workaround while the project had code to use WinCNG
but had not made a release with it. There is now a release of libssh2
with WinCNG support, so this option is redundant. Let's get rid of it
before people start liking it too much.
|
|\ \ \
| | | |
| | | | |
submodule: add test initialising and cloning a repo
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We have a few tests checking each step, but we do not yet have a test
which tests the documented workflow for creating a submodule, namely
`setup_add` followed by cloning into it, followed by `add_finalize`.
Add such a test to protect against regressions in this workflow.
|
|\ \ \ \
| |_|_|/
|/| | | |
odb: reverse the default backend priorities
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We currently first look in the loose object dir and then in the packs
for objects. When performing operations on recent history this has a
higher likelihood of hitting, but when we deal with operations which
look further back into the past, we start spending a large amount of
time getting ENOTENT from `access`.
Reversing the priorities means that long-running operations can get to
their objects faster, as we can look at the index data we have in memory
(or rather mapped) to figure out whether we have an object, which is
faster than going out to the filesystem.
The packed backend already implements an optimistic read algorithm by
first looking at the packs we know about and only going out to disk to
referesh if the object is not found which means that in the case where
we do have the object (which will be in the majority for anything that
traverses the graph) we can avoid going to to disk entirely to determine
whether an object exists.
Operations which look at recent history may take a slight impact, but
these would be operations which look a lot less at object and thus take
less time regardless.
|