| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It's not always obvious the mapping between stage level and
conflict-ness. More importantly, this can lead otherwise sane
people to write constructs like `if (!git_index_entry_stage(entry))`,
which (while technically correct) is unreadable.
Provide a nice method to help avoid such messy thinking.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Since a diff entry only concerns a single entry, zero the information
for the index side of a conflict. (The index entry would otherwise
erroneously include the lowest-stage index entry - generally the
ancestor of a conflict.)
Test that during status, the index side of the conflict is empty.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Make sure that we provide a blanked nitem side when the item does not
exist in the working directory.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When diffing against an index, return a new `GIT_DELTA_CONFLICTED`
delta type for items that are conflicted. For a single file path,
only one delta will be produced (despite the fact that there are
multiple entries in the index).
Index iterators now have the (optional) ability to return conflicts
in the index. Prior to this change, they would be omitted, and callers
(like diff) would omit conflicted index entries entirely.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
If `git_index_remove_bypath` does no work, and returns an OK error
code, it should not set an error message.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When adding a conflict for some path, remove the staged entry.
Otherwise, an illegal index (with both stage 0 and high-stage
entries) would result.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Wrap the iterator current / advance functions so that we can extend
them, but also handle GIT_ITEROVER cases in the iterator funcs
instead of the callers.
|
| | |/
| |/| |
|
|\ \ \
| | | |
| | | | |
Fill the pointers for matching refspecs
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When we look for which remote corresponds to a remote-tracking branch,
we look in the refspecs to see which ones matches. If none do, we should
abort. We currently ignore the error message from this operation, so
let's not do that anymore.
As part of the test we're writing, let's test for the expected behaviour
if we cannot find a refspec which tells us what the remote-tracking
branch for a remote would look like.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When we find out that we're dealing with a matching refspec, we set the
flag and return immediately. This leaves the strings as NULL, which
breaks the contract.
Assign these pointers to a string with the correct values.
|
|\ \ \ \
| |_|/ /
|/| | | |
Tackle remote API issues from bindings
|
| | | |
| | | |
| | | |
| | | |
| | | | |
These are updates, same as the rest, we should call this callback. As we
are using the callback, let's make sure to skip unnecessary updates.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When we moved from acting on the instance to acting on the
configuration, we dropped the validation of the passed refspec, which
can lead to writing an invalid refspec to the configuration. Bring that
validation back.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
An anonymous remote is not configured and cannot therefore have
configured refspecs. Remove the parameter which adds this from the
constructor.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These were left over from the culling as it's not clear which use-cases
might benefit from this. It is not clear that we want to support any
use-case which depends on changing the remote's idea of the base
refspecs rather than passing in different per-operation refspec list, so
remove these functions.
|
| |_|/
|/| |
| | |
| | |
| | | |
Git inserts a space after the SHA1 (as of 2.1.4 at least), so do the
same.
|
|\ \ \
| | | |
| | | | |
Thin packs: don't
|
| | | |
| | | |
| | | |
| | | |
| | | | |
When thickening a pack, avoid loading already loaded bases and
trying to insert them all over again.
|
| | |/
| |/|
| | |
| | |
| | |
| | | |
When creating an index, know that we do not have an index for
our own packfile, preventing some unnecessary file opens and
error reporting.
|
|\ \ \
| |/ /
|/| | |
openssl: don't try to handle WANT_READ or WANT_WRITE
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We use a blocking socket and set the mode to AUTO_RETRY which means that
`SSL_write` and `SSL_read` will only return once the read or write has
been completed. We therefore don't need to handle partial writes or
re-try read due to a regenotiation.
While here, consider that a zero also indicates an error condition.
|
|\ \ \ |
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
index_add_all: include untracked files in new subdirs
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
No need to get reports about individual ignored files, having a
single ignored directory delta is enough.
|
| | | | | |
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
When we discover that we want to keep a negative rule, make sure to
clear the error variable, as it we otherwise return whatever was left by
the previous loop iteration.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
|
| | | |
|
|/ /
| |
| |
| |
| | |
There was a copypasta error and the source and destination IDs were
reversed.
|
|\ \
| | |
| | | |
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".
|
|\ \ \
| | | |
| | | | |
Use the packbuilder in local push
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|