|
a52ab4b8
|
2014-06-06T01:09:49
|
|
remote: tighten up reference renaming
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.
|
|
bccb36eb
|
2014-06-03T17:25:59
|
|
Merge pull request #2389 from arthurschreiber/arthur/set-error-when-no-remote-found
Remote: Set an error when a remote cannot be found.
|
|
8a9419aa
|
2014-06-01T02:16:07
|
|
remote: build up the list of refs to remove
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.
|
|
d723dbed
|
2014-05-30T19:26:49
|
|
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.
|
|
d22db24f
|
2014-05-21T09:32:35
|
|
remote: add api to guess the remote's default branch
If the remote supports the symref protocol extension, then we return
that, otherwise we guess with git's rules.
|
|
228272ef
|
2014-05-16T11:56:37
|
|
Merge pull request #2313 from libgit2/cmn/remote-delete
Remote deletion
|
|
ec8a949a
|
2014-04-30T09:20:03
|
|
remote: remove remote-tracking branches on delete
When we delete a remote, we also need to go through its fetch refspecs
and remove the references they create locally.
|
|
d2c4d1c6
|
2014-05-12T10:04:52
|
|
Merge pull request #2188 from libgit2/cmn/config-snapshot
Configuration snapshotting
|
|
ac99d86b
|
2014-05-07T11:34:32
|
|
repository: introduce a convenience config snapshot method
Accessing the repository's config and immediately taking a snapshot of
it is a common operation, so let's provide a convenience function for
it.
|
|
bc91347b
|
2014-04-30T11:16:31
|
|
Fix remaining init_options inconsistencies
There were a couple of "init_opts()" functions a few more cases
of structure initialization that I somehow missed.
|
|
183aa4f8
|
2014-04-30T17:46:53
|
|
Check for NULL before passing it to vsnprintf
|
|
5cdac19c
|
2014-04-30T08:29:14
|
|
remote: move branch upstream deletion to use an iterator
This should make it more readable and allocate a bunch fewer strings.
|
|
40e48ea4
|
2013-11-15T15:36:37
|
|
remote: Introduce git_remote_delete()
|
|
8443ed6c
|
2014-04-25T02:10:19
|
|
Merge pull request #2284 from jacquesg/push-progress-callback
Fire progress and update tips callbacks also for pushes.
|
|
2efd7df6
|
2014-04-19T15:34:12
|
|
remote: provide read access to the callback structure
This should make it easier for bindings to dynamically override their
own callbacks.
|
|
98020d3a
|
2014-04-21T10:55:37
|
|
Rename progress callback to sideband_progress
|
|
29c4cb09
|
2014-03-15T03:53:36
|
|
Use config snapshotting
This way we can assume we have a consistent view of the config situation
when we're looking up remote, branch, pack-objects, etc.
|
|
923c8400
|
2014-04-04T14:24:08
|
|
Merge pull request #2215 from libgit2/rb/submodule-cache-fixes
Improve submodule cache management
|
|
67d4997a
|
2014-04-02T18:44:01
|
|
remote: mark branch for-merge even if we're unborn
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.
|
|
8286300a
|
2013-12-18T11:48:57
|
|
Fix git_submodule_sync and add new config helper
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.
|
|
fd536d29
|
2014-03-26T11:15:57
|
|
remote: rename inmemory to anonymous and swap url and fetch order
The order in this function is the opposite to what
create_with_fetchspec() has, so change this one, as url-then-refspec is
what git does.
As we need to break compilation and the swap doesn't do that, let's take
this opportunity to rename in-memory remotes to anonymous as that's
really what sets them apart.
|
|
b9f81997
|
2014-03-05T21:49:23
|
|
Added function-based initializers for every options struct.
The basic structure of each function is courtesy of arrbee.
|
|
06a8f5c3
|
2014-03-05T00:00:41
|
|
Fixed missing error check on call to git_remote_download in git_remote_fetch. Moved error check to statement following git_remote_disconnect so that the disconnect happens regardless of the result of the download call.
|
|
db55bb73
|
2014-02-06T11:18:10
|
|
Correct default reflog message for git_remote_fetch
|
|
c3ab1e5a
|
2014-02-04T20:38:13
|
|
Add reflog parameters to remote apis
Also added a test for git_remote_fetch.
|
|
ccf6ce5c
|
2014-01-28T11:30:36
|
|
Ensure renaming a reference updates the reflog
|
|
bf522e08
|
2014-01-26T16:59:36
|
|
refspec: move to git_buf for outputting strings
|
|
991b2840
|
2014-01-26T19:35:02
|
|
Make sure git_remote_dup copies a remote's refspecs correctly.
|
|
11f6ad5f
|
2014-01-15T21:15:34
|
|
Add some missing const declarations.
|
|
0b28217b
|
2014-01-15T12:51:31
|
|
refs: remove the _with_log differentiation
Any well-behaved program should write a descriptive message to the
reflog whenever it updates a reference. Let's make this more prominent
by removing the version without the reflog parameters.
|
|
99dcb218
|
2014-01-14T21:08:20
|
|
We don't need memset here.
|
|
616cd137
|
2014-01-14T21:08:09
|
|
Don't duplicate state that's only used when fetching.
|
|
40ef47dd
|
2014-01-14T21:03:01
|
|
Add `git_remote_dup`.
|
|
9cfce273
|
2013-12-12T12:11:38
|
|
Cleanups, renames, and leak fixes
This renames git_vector_free_all to the better git_vector_free_deep
and also contains a couple of memory leak fixes based on valgrind
checks. The fixes are specifically: failure to free global dir
path variables when not compiled with threading on and failure to
free filters from the filter registry that had not be initialized
fully.
|
|
26c1cb91
|
2013-12-09T09:44:03
|
|
One more rename/cleanup for callback err functions
|
|
c7b3e1b3
|
2013-12-06T15:42:20
|
|
Some callback error check style cleanups
I find this easier to read...
|
|
25e0b157
|
2013-12-06T15:07:57
|
|
Remove converting user error to GIT_EUSER
This changes the behavior of callbacks so that the callback error
code is not converted into GIT_EUSER and instead we propagate the
return value through to the caller. Instead of using the
giterr_capture and giterr_restore functions, we now rely on all
functions to pass back the return value from a callback.
To avoid having a return value with no error message, the user
can call the public giterr_set_str or some such function to set
an error message. There is a new helper 'giterr_set_callback'
that functions can invoke after making a callback which ensures
that some error message was set in case the callback did not set
one.
In places where the sign of the callback return value is
meaningful (e.g. positive to skip, negative to abort), only the
negative values are returned back to the caller, obviously, since
the other values allow for continuing the loop.
The hardest parts of this were in the checkout code where positive
return values were overloaded as meaningful values for checkout.
I fixed this by adding an output parameter to many of the internal
checkout functions and removing the overload. This added some
code, but it is probably a better implementation.
There is some funkiness in the network code where user provided
callbacks could be returning a positive or a negative value and
we want to rely on that to cancel the loop. There are still a
couple places where an user error might get turned into GIT_EUSER
there, I think, though none exercised by the tests.
|
|
fcd324c6
|
2013-12-06T15:04:31
|
|
Add git_vector_free_all
There are a lot of places that we call git__free on each item in
a vector and then call git_vector_free on the vector itself. This
just wraps that up into one convenient helper function.
|
|
dab89f9b
|
2013-12-04T21:22:57
|
|
Further EUSER and error propagation fixes
This continues auditing all the places where GIT_EUSER is being
returned and making sure to clear any existing error using the
new giterr_user_cancel helper. As a result, places that relied
on intercepting GIT_EUSER but having the old error preserved also
needed to be cleaned up to correctly stash and then retrieve the
actual error.
Additionally, as I encountered places where error codes were not
being propagated correctly, I tried to fix them up. A number of
those fixes are included in the this commit as well.
|
|
96869a4e
|
2013-12-03T16:45:39
|
|
Improve GIT_EUSER handling
This adds giterr_user_cancel to return GIT_EUSER and clear any
error message that is sitting around. As a result of using that
in places, we need to be more thorough with capturing errors that
happen inside a callback when used internally. To help with that,
this also adds giterr_capture and giterr_restore so that when we
internally use a foreach-type function that clears errors and
converts them to GIT_EUSER, it is easier to restore not just the
return value, but the actual error message text.
|
|
9f77b3f6
|
2013-11-25T14:21:34
|
|
Add config read fns with controlled error behavior
This adds `git_config__lookup_entry` which will look up a key in
a config and return either the entry or NULL if the key was not
present. Optionally, it can either suppress all errors or can
return them (although not finding the key is not an error for this
function). Unlike other accessors, this does not normalize the
config key string, so it must only be used when the key is known
to be in normalized form (i.e. all lower-case before the first dot
and after the last dot, with no invalid characters).
This also adds three high-level helper functions to look up config
values with no errors and a fallback value. The three functions
are for string, bool, and int values, and will resort to the
fallback value for any error that arises. They are:
* `git_config__get_string_force`
* `git_config__get_bool_force`
* `git_config__get_int_force`
None of them normalize the config `key` either, so they can only
be used for internal cases where the key is known to be in normal
format.
|
|
7135e77a
|
2013-11-19T03:13:23
|
|
Merge pull request #1967 from victorgp/cleaning-code-minor-change
Cleaning code, removing unused variables
|
|
10b6678f
|
2013-11-19T11:57:32
|
|
cleaning code, removing unused variables
|
|
8f2a3d62
|
2013-11-18T12:14:50
|
|
Fix warnings
|
|
80fc7d6b
|
2013-11-13T16:46:45
|
|
Propagate auth error codes as GIT_EUSER in winhttp
|
|
7b947bf5
|
2013-11-14T07:21:47
|
|
Merge pull request #1951 from victorgp/create-remote-plus-fetch
Allowing create remotes with custom fetch spec
|
|
877cde76
|
2013-11-02T01:10:21
|
|
remote: let's at least pretend to have some memory safety
Copy the pointers into temporary vectors instead of assigning them tot
he same array so we don't mess up with someone else's memory by
accident (e.g. by sorting).
|
|
1c967df3
|
2013-11-02T00:51:57
|
|
remote: fix a couple of leaks
|
|
359dce72
|
2013-11-02T00:05:32
|
|
remote: make _ls return the list directly
The callback-based method of listing remote references dates back to the
beginning of the network code's lifetime, when we didn't know any
better.
We need to keep the list around for update_tips() after disconnect() so
let's make use of this to simply give the user a pointer to the array so
they can write straightforward code instead of having to go through a
callback.
|
|
266af6d8
|
2013-10-30T13:44:22
|
|
remote: don't allow such direct access to the refspecs
Removing arbitrary refspecs makes things more complex to reason
about. Instead, let the user set the fetch and push refspec list to
whatever they want it to be.
|
|
40b99d05
|
2013-11-08T12:14:31
|
|
splitting funcionality in two methods to avoid ambiguity with NULL
|
|
0fe522d1
|
2013-11-07T14:16:20
|
|
allowing create remote with custom fetch spec
|
|
af613ecd
|
2013-10-28T23:30:45
|
|
remote: store dwimed refspecs separately
This allows us to add e.g. "HEAD" as a refspec when none are given
without overwriting the user's data.
|
|
968c7d07
|
2013-10-26T17:35:12
|
|
remote: create FETCH_HEAD with a refspecless remote
When downloading the default branch due to lack of refspecs, we still
need to write out FETCH_HEAD with the tip we downloaded, unfortunately
with a format that doesn't match what we already have.
|
|
376454d0
|
2013-10-31T23:42:04
|
|
Set new multivar values using unmatcheable regexp.
Seems that regexp in Mac OS X and Linux were behaving
differently: while in OS X the empty string didn't
match any value, in Linux it was matching all of them,
so the the second fetch refspec was overwritting the
first one, instead of creating a new one.
Using an unmatcheable regular expression solves the
problem (and seems to be portable).
|
|
3793fa9b
|
2013-10-31T01:08:50
|
|
Fix saving remotes with several fetch/push ref specs.
At some moment git_config_delete_entry lost the ability to delete one entry of
a multivar configuration. The moment you had more than one fetch or push
ref spec for a remote you will not be able to save that remote anymore. The
changes in network::remote::remotes::save show that problem.
I needed to create a new git_config_delete_multivar because I was not able to
remove one or several entries of a multivar config with the current API.
Several tries modifying how git_config_set_multivar(..., NULL) behaved were
not successful.
git_config_delete_multivar is very similar to git_config_set_multivar, and
delegates into config_delete_multivar of config_file. This function search
for the cvar_t that will be deleted, storing them in a temporal array, and
rebuilding the linked list. After calling config_write to delete the entries,
the cvar_t stored in the temporal array are freed.
There is a little fix in config_write, it avoids an infinite loop when using
a regular expression (case for the multivars). This error was found by the
test network::remote::remotes::tagopt.
|
|
157cef10
|
2013-10-28T12:57:15
|
|
The "common.h" should be included before "config.h".
When building libgit2 for ia32 architecture on a x64 machine, including
"config.h" without a "common.h" would result the following error:
C:\Program Files\Microsoft SDKs\Windows\v7.1\include\winbase.h(2288): error C2373: 'InterlockedIncrement' : redefinition; different type modifiers [C:\cygwin\home\zcbenz\codes\git-utils\build\libgit2.vcxproj]
C:\Program Files\Microsoft SDKs\Windows\v7.1\include\winbase.h(2295): error C2373: 'InterlockedDecrement' : redefinition; different type modifiers [C:\cygwin\home\zcbenz\codes\git-utils\build\libgit2.vcxproj]
C:\Program Files\Microsoft SDKs\Windows\v7.1\include\winbase.h(2303): error C2373: 'InterlockedExchange' : redefinition; different type modifiers [C:\cygwin\home\zcbenz\codes\git-utils\build\libgit2.vcxproj]
C:\Program Files\Microsoft SDKs\Windows\v7.1\include\winbase.h(2314): error C2373: 'InterlockedExchangeAdd' : redefinition; different type modifiers [C:\cygwin\home\zcbenz\codes\git-utils\build\libgit2.vcxproj]
|
|
0e0cf787
|
2013-10-02T14:04:44
|
|
clone: put the callbacks struct directly in the clone options
There's no need for this to be a pointer to somewhere else.
|
|
fe3a40a4
|
2013-09-16T16:54:37
|
|
remote: add a convenience 'fetch' function.
|
|
e3c131c5
|
2013-09-16T05:02:25
|
|
remote: move the credentials callback to the struct
Move this one as well, letting us have a single way of setting the
callbacks for the remote, and removing fields from the clone options.
|
|
d31402a3
|
2013-09-16T04:20:05
|
|
remote: put the _download() callback with the others
The text progress and update_tips callbacks are already part of the
struct, which was meant to unify the callback setup, but the download
one was left out.
|
|
106c12f1
|
2013-09-23T13:31:15
|
|
Remove regex usage from places that don't need it
In revwalk, we are doing a very simple check to see if a string
contains wildcard characters, so a full regular expression match
is not needed.
In remote listing, now that we have git_config_foreach_match with
full regular expression matching, we can take advantage of that
and eliminate the regex here, replacing it with much simpler string
manipulation.
|
|
92d19d16
|
2013-09-21T09:34:03
|
|
Merge pull request #1840 from linquize/warning
Fix warning
|
|
66566516
|
2013-09-08T17:15:42
|
|
Fix warning
|
|
605da51a
|
2013-09-17T09:50:30
|
|
No such thing as an orphan branch
Unfortunately git-core uses the term "unborn branch" and "orphan
branch" interchangeably. However, "orphan" is only really there for
the checkout command, which has the `--orphan` option so it doesn't
actually create the branch.
Branches never have parents, so the distinction of a branch with no
parents is odd to begin with. Crucially, the error messages deal with
unborn branches, so let's use that.
|
|
1ef05e3f
|
2013-08-28T06:05:50
|
|
Merge pull request #1803 from libgit2/ntk/topic/even_more_lenient_remote_parsing
Even more lenient remote parsing
|
|
b8b22d77
|
2013-08-28T06:04:51
|
|
Merge pull request #1772 from libgit2/config-iter
Configuration iterators redux
|
|
aec87f71
|
2013-08-27T19:14:18
|
|
remote: Make git_remote_list() detect pushurl
|
|
c9ffa84b
|
2013-08-21T16:04:25
|
|
remote: Relax the parsing logic even more
In order to be loaded, a remote needs to be configured with at least a `url` or a `pushurl`.
ENOTFOUND will be returned when trying to git_remote_load() a remote with neither of these entries defined.
|
|
ece24ef7
|
2013-08-21T13:37:21
|
|
remote: Don't parse missing urls as empty strings
|
|
44bc0c6a
|
2013-08-21T13:20:17
|
|
remote: Warn the user when connecting with no url
|
|
b83c92dd
|
2013-08-21T13:16:17
|
|
remote: Assert proper GIT_DIRECTION_XXXX values
|
|
ad0af715
|
2013-08-14T06:48:09
|
|
Merge pull request #1780 from phkelley/development
Respect GIT_SSL_NO_VERIFY and http.sslVerify
|
|
0b9ebb54
|
2013-08-14T11:18:05
|
|
remote: relax the url rules
Accept any value for the remote's url, including an empty string which
we used to reject as invalid configuration.
This is not quite what git does (although it has its own problems with
such configurations) and it makes it harder to fix the issue, by not
letting the user modify it.
As we already need to check for a valid URL when we try to connect to
the network, let that perform the check, as we don't need to do it
anywhere else.
|
|
af6dab7e
|
2013-08-13T13:10:52
|
|
Respect GIT_SSL_NO_VERIFY and http.sslVerify
|
|
4efa3290
|
2013-08-08T13:41:18
|
|
config: get_multivar -> get_multivar_foreach
The plain function will return an iterator, so move this one out of
the way.
|
|
85e1eded
|
2013-07-15T16:31:25
|
|
Add `git_remote_owner`
|
|
2f77d8f1
|
2013-06-10T14:16:56
|
|
Fix some memory leaks
|
|
947fad4f
|
2013-06-03T09:28:58
|
|
Merge pull request #1624 from libgit2/vmg/full-ref-iterator
Breaking RefDB changes
|
|
df50512a
|
2013-05-30T18:06:54
|
|
Proposal to handle default value (auto = 0)
|
|
215af2cc
|
2013-05-30T17:40:56
|
|
remote: make default tag retrieving behaviour consistent
Default for newly created remotes will be auto.
Default when loading existing remotes with no tag retrieving behaviour set, was already auto.
|
|
4e6e2ff2
|
2013-05-30T03:47:10
|
|
...Aaaand this works
|
|
56960b83
|
2013-05-28T20:47:55
|
|
Liike this
|
|
6fe02c11
|
2013-05-15T14:44:35
|
|
Fetch should not fail when remote HEAD reference is not present locally
|
|
b6cc559a
|
2013-05-11T02:42:49
|
|
Merge pull request #1385 from carlosmn/refs-iter
Introduce a refs iterator
|
|
9bd89d96
|
2013-05-04T16:49:39
|
|
Move a couple more functions to use iterators
|
|
2b562c3a
|
2013-05-04T16:32:58
|
|
refs: remove the OID/SYMBOLIC filtering
Nobody should ever be using anything other than ALL at this level, so
remove the option altogether.
As part of this, git_reference_foreach_glob is now implemented in the
frontend using an iterator. Backends will later regain the ability of
doing the glob filtering in the backend.
|
|
ddc5c054
|
2013-05-09T05:42:37
|
|
Merge pull request #1561 from arrbee/fix-windows-diff-eofnl
Fix windows diff eofnl error
|
|
0f938c6b
|
2013-05-07T09:59:53
|
|
Fix win32 type warnings
|
|
505b5d0c
|
2013-05-07T16:01:22
|
|
remote: correctly interpret tagopt '--tags'
When tagopt is set to '--tags', we should only take the default tags
refspec into account and ignore any configured ones.
Bring the code into compliance.
|
|
bf6bebe2
|
2013-05-01T15:23:40
|
|
Factor out some code that needed to clear errors
A number of places were looking up option config values and then
not clearing the error codes if the values were not found. This
moves the repeated pattern into a shared routine and adds the
extra call to giterr_clear() when needed.
|
|
cd2ed9f0
|
2013-04-30T04:02:52
|
|
Merge pull request #1518 from arrbee/export-oid-comparison
Remove most inlines from the public API
|
|
9c5d4b2e
|
2013-04-30T12:05:16
|
|
remote: fix a leak when dwim'ing refspecs
|
|
1ffd0806
|
2013-04-30T11:18:16
|
|
remote: add resfpec list accessors
Bring back a way of acessing the git_refspec* from a remote.
Closes #1514
|
|
b7f167da
|
2013-04-29T13:52:12
|
|
Make git_oid_cmp public and add git_oid__cmp
|
|
d8488457
|
2013-04-28T16:26:55
|
|
remote: dwim the refspecs according to the remote's advertised refs
As git allows you to store shorthand refspecs in the configuration, we
need to do this ourselves.
|
|
1be680c4
|
2013-04-20T19:13:47
|
|
refspec: unify the string and parsed data
It used to be separate as an attempt to make the querying easier, but
it didn't work out that way, so put all the data together.
Add git_refspec_string() as well to get the original string, which is
now stored alongside the independent parts.
|
|
bc6374ea
|
2013-04-20T18:49:11
|
|
remote: allow querying for refspecs
Introduce git_remote_{fetch,push}_refspecs() to get a list of refspecs
from the remote and rename the refspec-adding functions to a less
silly name.
Use this instead of the vector index hacks in the tests.
|
|
4330ab26
|
2013-04-20T04:43:28
|
|
remote: handle multiple refspecs
A remote can have a multitude of refspecs. Up to now our git_remote's
have supported a single one for each fetch and push out of simplicity
to get something working.
Let the remotes and internal code know about multiple remotes and get
the tests passing with them.
Instead of setting a refspec, the external users can clear all and add
refspecs. This should be enough for most uses, though we're still
missing a querying function.
|
|
404eadb0
|
2013-04-16T00:11:59
|
|
remote: don't try to update FETCH_HEAD if no extra heads exist
Don't try to update anything if there are no heads to update. This
saves us from trying to look into a fetch refspec when there is none.
A better fix for compatibility with git when using remotes without
refspecs is still needed, but this stops us from segfaulting.
|