| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| | |
Fallback describes the mechanism, while unspecified explains what the
user is thinking.
|
|\ \
| | |
| | | |
remote: insert refspecs with no rhs in FETCH_HEAD
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a refspec contains no rhs and thus won't cause an explicit update,
we skip all the logic, but that means that we don't update FETCH_HEAD
with it, which is what the implicit rhs is.
Add another bit of logic which puts those remote heads in the list of
updates so we put them into FETCH_HEAD.
|
|\ \ \
| |_|/
|/| | |
Don't allow growing borrowed buffers
|
| | |
| | |
| | |
| | |
| | | |
This explains more closely what happens. While here, set an error
message.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When we don't own a buffer (asize=0) we currently allow the usage of
grow to copy the memory into a buffer we do own. This muddles the
meaning of grow, and lets us be a bit cavalier with ownership semantics.
Don't allow this any more. Usage of grow should be restricted to buffers
which we know own their own memory. If unsure, we must not attempt to
modify it.
|
|\ \ \
| | | |
| | | | |
Remove run-time configuration settings from submodules
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We currently do not handle those enum values which require us to set
"true" or unset variables in all cases. Use a common function which does
understand this by looking at our mapping directly.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
We no longer have any setters which affect an instance, so
`git_submodule_save()` is no longer relevant.
|
| | | |
| | | |
| | | |
| | | | |
With this one, we can get rid of the edit_and_save test.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Similarly to the other ones. In this test we copy over testing
`RECURSE_YES` which shows an error in our handling of the `YES` variant
which we may have to port to the rest.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Moving on with the removal of runtime-changing variables, the update
setting for a remote is whatever it was when it was looked up.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
During the cache deletion, the check for whether we consider a submodule
to exist got changed regarding submodules which are in the worktree but
not configured.
Instead of checking for the url field to be populated, check the
location where we've found it.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
During the removal of the cache, we also removed the ability to use
`_lookup()` to search by path rather than name. Bring this logic back.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This lets us specify in the status call which ignore rules we want to
use (optionally falling back to whatever the submodule has in its
configuration).
This removes one of the reasons for having `_set_ignore()` set the value
in-memory. We re-use the `IGNORE_RESET` value for this as it is no
longer relevant but has a similar purpose to `IGNORE_FALLBACK`.
Similarly, we remove `IGNORE_DEFAULT` which does not have use outside of
initializers and move that to fall back to the configuration as well.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As submodules are becomes more like values, we should not let a status
check to update its properties. Instead of taking a submodule, have
status take a repo and submodule name.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of affecting a particular instance, make it change the
configuration.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Having this cache and giving them out goes against our multithreading
guarantees and it makes it impossible to use submodules in a
multi-threaded environment, as any thread can ask for a refresh which
may reallocate some string in the submodule struct which we've accessed
in a different one via a getter.
This makes the submodules behave more like remotes, where each object is
created upon request and not shared except explicitly by the user. This
means that some tests won't pass yet, as they assume they can affect the
submodule objects in the cache and that will affect later operations.
|
|\ \ \ \
| | | | |
| | | | | |
Implement a cURL stream
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If the libcurl stream is available, use that as the underlying stream
instead of the socket stream. This allows us to set a proxy for HTTPS
connections.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We do not want libcurl to perform the TLS negotiation for us, so we
don't need to pass this option.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The TLS streams talk over the curl stream themselves, so we don't need
to ask for it explicitly. Do so in the case of the non-encrypted one so
we can still make use proxies in that case.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When linking against libcurl, use it as the underlying transport instead
of straight sockets. We can't quite just give over the file descriptor,
as curl puts it into non-blocking mode, so we build a custom BIO so
OpenSSL sends the data through our stream, be it the socket or curl
streams.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The information is exposed by curl for some crypto libraries in the form
of name:content strings. We can't do much more than return this
information.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Of the built-in ones, only cURL support it, but there's no reason a
user-provided stream wouldn't support it.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If the stream claims to support this feature, we can let the transport
set the proxy.
We also set HTTPPROXYTUNNEL option so curl can create a tunnel through
the proxy which lets us create our own TLS session (if needed).
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
cURL has a mode in which it acts a lot like our streams, providing send
and recv functions and taking care of the TLS and proxy setup for us.
Implement a new stream which uses libcurl instead of raw sockets or the
TLS libraries directly. This version does not support reporting
certificates or proxies yet.
|
|\ \ \ \
| | | | |
| | | | | |
Handle binary DIFFABLEness properly
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Always set `GIT_DIFF_PATCH_DIFFABLE` for all files, regardless of
binary-ness, so that the binary callback is invoked to either
show the binary contents, or just print the standard "Binary files
differ" message. We may need to do deeper inspection for binary
files where we have avoided loading the contents into a file map.
|
|\ \ \ \
| |/ / /
|/| | | |
Stash workdir correctly when added in the index, modified in the workdir
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When stashing the workdir tree, examine the index as well. Using
a mechanism similar to `git_diff_tree_to_workdir_with_index`
allows us to determine that a file was added in the index and
subsequently modified in the working directory. Without examining
the index, we would erroneously believe that this file was
untracked and fail to include it in the working directory tree.
Use a slightly modified `git_diff_tree_to_workdir_with_index` in
order to avoid some of the behavior custom to `git diff`. In
particular, be sure to include the working directory side of a
file when it was deleted in the index.
|
| | | | |
|
| | |/
| |/|
| | |
| | |
| | | |
Drop `git_diff__merge_like_cgit_reversed`, since it's a copy and
paste mess of slightly incompatible changes.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fixed GIT_DELTA_CONFLICTED not returned in some cases
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If an index entry for a file that is not in HEAD is in conflicted state,
when diffing HEAD with the index, the status field of the corresponding git_diff_delta was incorrectly reported as GIT_DELTA_ADDED instead of GIT_DELTA_CONFLICTED.
This was due to handle_unmatched_new_item() initially setting the status
to GIT_DELTA_CONFLICTED but then overriding it later with GIT_DELTA_ADDED.
|
|\ \ \
| | | |
| | | | |
racy-git, the missing link
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When an entry has a racy timestamp, we need to check whether the file
itself has changed since we put its entry in the index. Only then do we
smudge the size field to force a check the next time around.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When a file on the workdir has the same or a newer timestamp than the
index, we need to perform a full check of the contents, as the update of
the file may have happened just after we wrote the index.
The iterator changes are such that we can reach inside the workdir
iterator from the diff, though it may be better to have an accessor
instead of moving these structs into the header.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is something we do on re-init but not when opening a
repository. This hasn't particularly mattered up to now as the version
has been 0 ever since the first release of git, but the times, they're
a-changing and we will soon see version 1 in the wild. We need to make
sure we don't open those.
|
| |/ /
|/| |
| | |
| | |
| | | |
git will assume the repository format version is 0 if the value is not
there. Do the same.
|
| | |
| | |
| | |
| | |
| | | |
This fixes a bug where if a file was in conflicted state in either diff,
it would not always remain in conflicted state in the merged diff.
|
| | |
| | |
| | |
| | |
| | | |
Perform LF->CRLF for core.autocrlf=true on non-Win32 because core
git does.
|
| | |
| | |
| | |
| | |
| | | |
Allow files to have mixed line endings instead of skipping processing
on them.
|
| | |
| | |
| | |
| | |
| | | |
Use statistics (like core git) to control the behavior of the
to workdir CRLF filter.
|
|\ \ \
| |_|/
|/| | |
commit: allow retrieving an arbitrary header field
|
| |/
| |
| |
| |
| |
| | |
This allows the user to look up fields which we don't parse in libgit2,
and allows them to access gpgsig or mergetag fields if they wish to
check the signature.
|
|/
|
|
|
| |
Same as with git_stash_save(), there's no reason not to write the index
to disk since it has been modified.
|