Commit Graph

8806 Commits

Author SHA1 Message Date
Carlos Martín Nieto
7725499072 remote: remove live changing of refspecs
The base refspecs changing can be a cause of confusion as to what is the
current base refspec set and complicate saving the remote's
configuration.

Change `git_remote_add_{fetch,push}()` to update the configuration
instead of an instance.

This finally makes `git_remote_save()` a no-op, it will be removed in a
later commit.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
3fec548a98 examples: adjust to the new remote API 2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
35a8a8c546 remote: move the tagopt setting to the fetch options
This is another option which we should not be keeping in the remote, but
is specific to each particular operation.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
3eff2a5728 remote: move the update_fetchhead setting to the options
While this will rarely be different from the default, having it in the
remote adds yet another setting it has to keep around and can affect its
behaviour. Move it to the options.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
058b753ceb remote: move the transport ctor to the callbacks
Instead of having it set in a different place from every other callback,
put it the main structure. This removes some state from the remote and
makes it behave more like clone, where the constructors are passed via
the options.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
6fb373a0e8 remote: add prune option to fetch
Add a prune setting in the fetch options to allow to fall back to the
configuration (the default) or to set it on or off.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
22261344de remote: remove url and pushurl from the save logic
As a first step in removing the repository-saving logic, don't allow
chaning the url or push url from a remote object, but change the
configuration on the configuration immediately.
2015-05-13 09:46:36 +02:00
Carlos Martín Nieto
8f0104ecc5 Remove the callbacks struct from the remote
Having the setting be different from calling its actions was not a great
idea and made for the sake of the wrong convenience.

Instead of that, accept either fetch options, push options or the
callbacks when dealing with the remote. The fetch options are currently
only the callbacks, but more options will be moved from setters and
getters on the remote to the options.

This does mean passing the same struct along the different functions but
the typical use-case will only call git_remote_fetch() or
git_remote_push() and so won't notice much difference.
2015-05-13 09:46:35 +02:00
Carlos Martín Nieto
0525911442 push: remove own copy of callbacks
The push object knows which remote it's associated with, and therefore
does not need to keep its own copy of the callbacks stored in the
remote.

Remove the copy and simply access the callbacks struct within the
remote.
2015-05-13 09:46:35 +02:00
Carlos Martín Nieto
77b339f7b6 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.
2015-05-13 09:34:20 +02:00
Edward Thomson
34593aaec0 attr: declare variable at top of block for msvc 2015-05-12 17:00:35 -04:00
Edward Thomson
90997e405d attr: less path mangling during attribute matching
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.)
2015-05-12 16:22:31 -04:00
Edward Thomson
9465bedb09 attr: don't mangle file path during attr matching
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.
2015-05-12 16:02:18 -04:00
Edward Thomson
30e629a073 attr: always return errors 2015-05-12 14:39:49 -04:00
Edward Thomson
ef6d072236 attr: don't match files for folders
When ignoring a path "foo/", ensure that this is actually a directory,
and not simply a file named "foo".
2015-05-12 14:36:52 -04:00
Edward Thomson
9486d20336 attr test: test a file beneath ignored folder 2015-05-12 14:36:48 -04:00
Edward Thomson
97fb9ac739 attr: test that a file is not ignored for a folder
When a .gitignore specifies some folder "foo/", ensure that a file
with the same name "foo" is not ignored.
2015-05-12 14:36:45 -04:00
Edward Thomson
adad518129 attr: regression tests for ignore matching
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).
2015-05-12 14:36:41 -04:00
Carlos Martín Nieto
ca29427979 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.
2015-05-12 11:43:27 +02:00
Carlos Martín Nieto
20dcb7315c 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.
2015-05-12 11:33:45 +02:00
Carlos Martín Nieto
f85a9c2767 Merge pull request #3111 from whoisj/centralizing-buffer-sizes
Centralizing all IO buffer size values
2015-05-12 11:27:37 +02:00
Carlos Martín Nieto
1e44ea97f6 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.
2015-05-12 11:13:41 +02:00
Carlos Martín Nieto
77a15fe8e1 Merge pull request #3018 from ethomson/stash_apply
Stash apply
2015-05-12 10:29:58 +02:00
Edward Thomson
1f1f5c639e checkout: better document the baseline_index opt 2015-05-11 14:13:31 -04:00
Edward Thomson
15fdf0548f stash application: document new API in CHANGELOG 2015-05-11 14:12:50 -04:00
Edward Thomson
4497287321 stash: propagate the error when writing a tree 2015-05-11 14:12:47 -04:00
Edward Thomson
4ea3eebf4b stash_apply: provide progress callbacks 2015-05-11 14:12:42 -04:00
Edward Thomson
19c80a6fd1 stash_apply: provide its own options structure 2015-05-11 14:12:39 -04:00
Edward Thomson
249616685e stash: test checkout notify callbacks 2015-05-11 14:12:35 -04:00
Edward Thomson
12149a20ef stash apply: default to at least GIT_CHECKOUT_SAFE 2015-05-11 14:12:31 -04:00
Edward Thomson
f78bb2afb3 stash: return GIT_EMERGECONFLICT on merge conflict 2015-05-11 14:12:27 -04:00
Edward Thomson
958950b6e0 stash: document merge conflicts 2015-05-11 14:12:23 -04:00
Edward Thomson
f0957589ee stash: refactor to use merge_iterators 2015-05-11 14:12:19 -04:00
Edward Thomson
90f8408dac stash: ensure a reflog has entries 2015-05-11 14:12:16 -04:00
Edward Thomson
d0dd3fcee7 stash apply: check out a tree, not piecewise 2015-05-11 14:12:12 -04:00
Edward Thomson
7f26b1b9cf stash: use git_commit_summary for a summary 2015-05-11 14:12:09 -04:00
Edward Thomson
35d3976151 index: introduce git_index_read_index 2015-05-11 14:12:05 -04:00
Edward Thomson
73dce1f688 checkout: allow baseline to be specified as index
Allow the baseline to be specified as an index, so that users
need not write their index to a tree just to checkout with that
as the baseline.
2015-05-11 14:12:01 -04:00
Edward Thomson
9ebb5a3ff3 merge: merge iterators 2015-05-11 14:11:56 -04:00
Pierre-Olivier Latour
bf8dd3f53d Added git_stash_apply() and git_stash_pop() APIs 2015-05-11 14:11:53 -04:00
J Wyman
7dd2253826 centralizing all IO buffer size values 2015-05-11 10:32:08 -07:00
Carlos Martín Nieto
77bffc2cd6 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.
2015-05-09 13:21:39 +02:00
Carlos Martín Nieto
9cdd657887 Merge pull request #3104 from whoisj/optimal-buffer-size
Adjusting stream buffer size to 64KB
2015-05-09 13:11:46 +02:00
J Wyman
7eb7e03db8 Adjusting stream buffer size to 64KB
64K is optimal buffer size per https://technet.microsoft.com/en-us/library/cc938632.aspx
2015-05-07 08:50:12 -07:00
Carlos Martín Nieto
25f355cbed Merge pull request #3086 from yongthecoder/master
Android build doesn't need deps/regex
2015-05-06 18:39:39 +02:00
Carlos Martín Nieto
5b6292a77c Merge pull request #3100 from arthurschreiber/patch-5
Ensure frameworks are mentioned in libgit2.pc
2015-05-06 07:37:49 +02:00
Arthur Schreiber
7a5c755989 Ensure frameworks are mentioned in libgit2.pc
When building on Mac OS X, the `CoreFoundation` and `Security` frameworks where missing from `Libs.private` in the generated `libgit2.pc` file.
2015-05-05 22:36:24 +02:00
Carlos Martín Nieto
b162d97a4f config: plug a couple of leaks 2015-05-05 09:47:16 +02:00
Yong Li
57aa839caf Android build doesn't need deps/regex
deps/regex was included in Android build because Android NDK 4 has
a packaging bug and doesn't have the regular expression functions defined
in its libc.so. The bug has been fixed in subsequent Android NDK releases.

If it is still necessary to work around the bug in Android NDK 4, we
should consider to use an option like ANDROID_NDK_RELEASE or
ANDROID_NDK_RELEASE_NUM.
2015-05-04 09:41:34 -04:00
Carlos Martín Nieto
074d323f73 Merge pull request #3079 from ethomson/config
Configuration changes for handling multiple of the same sections
2015-05-04 15:23:40 +02:00