| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Fix compiler warning (git_off_t cast to size_t).
|
| |
| |
| |
| |
| |
| | |
Use size_t for page size, instead of long. Check result of sysconf.
Use size_t for page offset so no cast to size_t (second arg to p_mmap).
Use mod instead div/mult pair, so no cast to size_t is necessary.
|
|\ \
| | |
| | | |
Enable retries for SSH
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In order to know which authentication methods are supported/allowed by
the ssh server, we need to send a NONE auth request, which needs a
username associated with it.
Most ssh server implementations do not allow switching the username
between authentication attempts, which means we cannot use a dummy
username and then switch. There are two ways around this.
The first is to use a different connection, which an earlier commit
implements, but this increases how long it takes to get set up, and
without knowing the right username, we cannot guarantee that the
list we get in response is the right one.
The second is what's implemented here: if there is no username specified
in the url, ask for it first. We can then ask for the list of auth
methods and use the user's credentials in the same connection.
|
| | |
| | |
| | |
| | |
| | | |
Since each cred defines the username on their own, introduce
git_cred__username to retrieve the username pointer from them.
|
| | |
| | |
| | |
| | |
| | | |
This exists as ssh needs to know about the username to use before it can
query for the supported authentication methods.
|
| | |
| | |
| | |
| | |
| | | |
Instead of completely giving up on the first failure, ask for
credentials as long as we fail to authenticate.
|
| | |
| | |
| | |
| | | |
We need to be able to get a GIT_EUSER back through the outermost call.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Before calling the credentials callback, ask the sever which
authentication methods it supports and report that to the user, instead
of simply reporting everything that the transport supports.
In case of an error, we do fall back to listing all of them.
|
|\ \ \
| | | |
| | | | |
netops: init OpenSSL once under lock
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Bring together all of the OpenSSL initialization to
git_threads_init() so it's together and doesn't need locks.
Moving it here also gives us libssh2 thread safety (when built against
openssl).
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
OpenSSL's tests init everything in the main thread, so let's do that.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When using in a multithreaded context, OpenSSL needs to lock, and leaves
it up to application to provide said locks.
We were not doing this, and it's just luck that's kept us from crashing
up to now.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The OpenSSL init functions are not reentrant, which means that running
multiple fetches in parallel can cause us to crash.
Use a mutex to init OpenSSL, and since we're adding this extra checks,
init it only once.
|
| |/ /
|/| |
| | |
| | |
| | | |
We want to check whether the credentials callback is NULL, not whether
the payload is.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Instead of using a sentinel empty value to detect the last commit, let's
check for when we get a NULL from popping the stack, which lets us know
when we're done.
The current code causes us to read uninitialized data, although only on
RHEL/CentOS 6 in release mode. This is a readability win overall.
|
| | |
| | |
| | |
| | |
| | | |
By inserting in the right position, we can keep the vector sorted,
making entry insertion almost twice as fast.
|
|\ \ \
| | | |
| | | | |
More remote rename fixes
|
| | | |
| | | |
| | | |
| | | | |
This was a bad idea. Don't free except in the free function.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A symref inside the namespace gets renamed, we should make it point to
the target's new name.
This is for the origin/HEAD -> origin/master type of situations.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There is no reason why we need to use a callback here. A string array
fits better with the usage, as this is not an event and we don't need
anything from the user.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We must make sure that the name pointer remains valid, so make sure to
allocate the new one before freeing the old one and swap them so the
user never sees an invalid pointer.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We don't allow renames of anonymous remotes, so there's no need to
handle them.
A remote is always associated with a repository, so there's no need to
check for that.
|
| | | |
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Tighten up which references we consider for renaming so we don't try to
rename unrelated ones and end up with unexplained references.
If there is a reference on the target namespace, git overwrites it, so
let's do the same.
|
|\ \
| | |
| | | |
clone: re-use the local transport's path resolution
|
| | |
| | |
| | |
| | |
| | |
| | | |
Whe already worked out the kinks with the function used in the local
transport. Expose it and make use of it in the local clone method
instead of trying to work it out again.
|
|\ \ \
| |/ /
|/| | |
Concurrent ref iterator access
|
| | |
| | |
| | |
| | |
| | | |
This lets us work without worrying about what's happening but work on a
snapshot.
|
|\ \ \
| |/ /
|/| |
| | |
| | | |
arthurschreiber/arthur/set-error-when-no-remote-found
Remote: Set an error when a remote cannot be found.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Inside `git_remote_load`, the calls to `get_optional_config` use
`giterr_clear` to unset any errors that are set due to missing config
keys. If neither a fetch nor a push url config was found for a remote,
we should set an error again.
|
| | |
| | |
| | |
| | |
| | |
| | | |
When removing the remote-tracking branches, build up the list and remove
in two steps, working around an issue with the iterator. Removing while
we're iterating over the refs can cause us to miss references.
|
| | | |
|
| | | |
|
|/ / |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes two issues I found when core.precomposeunicode is enabled:
* When creating a reference with a NFD string, the returned
git_reference would return this NFD string as the reference’s
name. But when looking up the reference later, the name would
then be returned as NFC string.
* Renaming a reference would not honor the core.precomposeunicode and
apply no normalization to the new reference name.
|
| |
| |
| |
| |
| | |
The error would be uninitialized if we take a snapshot of a config with
no backends.
|
|\ \
| | |
| | | |
Local clone
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If requested, git_clone_local_into() will try to link the object files
instead of copying them.
This only works on non-Windows (since it doesn't have this) when both
are on the same filesystem (which are unix semantics).
|
| | |
| | |
| | |
| | |
| | | |
When passed the LINK_FILES flag, the recursive copy will hardlink files
instead of copying them.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A call like git_clone("./foo", "./foo1") writes origin's url as './foo',
which makes it unusable, as they're relative to different things.
Go with git's behaviour and store the realpath as the url.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When git is given such a path, it will perform a "local clone",
bypassing the git-aware protocol and simply copying over all objects
that exist in the source.
Copy this behaviour when given a local path.
|
|\ \ \
| | | |
| | | | |
index: check for valid filemodes on add
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Fixed permissions on template directories.
|