|
16d742eb
|
2015-05-13T21:43:58
|
|
Merge pull request #3119 from ethomson/ignore
Attributes: don't match files for folders
|
|
cd430bc7
|
2015-05-13T14:26:20
|
|
Merge pull request #3103 from libgit2/cmn/local-push-message
Use the packbuilder in local push
|
|
2ec73fa9
|
2015-05-13T14:26:06
|
|
Merge pull request #3102 from libgit2/cmn/pack-objects-report
Show progress during packing for the local transport
|
|
a6f2ceaf
|
2015-05-13T12:11:55
|
|
Merge pull request #3118 from libgit2/cmn/stream-size
odb: make the writestream's size a git_off_t
|
|
882cc37f
|
2015-05-13T10:56:55
|
|
attr tests: make explicit our dir/file match tests
|
|
3e529e9d
|
2015-05-13T16:12:45
|
|
Fix a few leaks
The interesting one is the notification macro, which was returning
directly on a soft-abort instead of going through the cleanup.
|
|
8cec2b8a
|
2015-05-06T12:28:01
|
|
local: send the packbuilder progress via the sideband
Set a callback for the packbuilder so we can send the sideband messages
to the caller, formatting them as git would.
|
|
3c337a5d
|
2015-05-06T13:09:00
|
|
packbuilder: report progress during deltification
This is useful to send to the client while we're performing the work.
The reporting function has a force parameter which makes sure that we
do send out the message of 100% completed, even if this comes before the
next udpate window.
|
|
cf66c474
|
2015-05-06T12:26:05
|
|
examples: show the sideband progress on clone
This lets us see what the server (or libgit2 locally) is doing, rather
than having to stare at a non-moving screen.
|
|
d01737b4
|
2015-05-13T09:11:38
|
|
Merge pull request #3117 from libgit2/cmn/index-more-accurate
index: make the entries have more accurate sizes
|
|
b0c4b642
|
2015-05-13T09:11:18
|
|
Merge pull request #3116 from libgit2/cmn/remove-ssh-embed
Get rid of libssh2 embedding
|
|
6cd92193
|
2015-05-13T09:07:15
|
|
Merge pull request #3115 from libgit2/cmn/clone-submodule
submodule: add test initialising and cloning a repo
|
|
a3ff28e9
|
2015-05-13T09:02:00
|
|
Merge pull request #3120 from libgit2/cmn/backends-prio
odb: reverse the default backend priorities
|
|
0bc3d56d
|
2015-05-07T16:12:36
|
|
tests: don't push to our resources
A couple of tests use the wrong remote to push to. We did not notice up
to now because the local push would copy individual objects, and those
already existed, so it became a no-op.
Once we made local push create the packfile, it became noticeable that
there was a new packfile where it didn't belong.
|
|
4a5b781a
|
2015-05-07T13:44:28
|
|
local: use the packbuilder to 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.
|
|
81c0fb08
|
2015-05-07T13:28:51
|
|
local: add clarification for non-bare push restriction
|
|
c5c5cdb1
|
2015-05-13T10:47:13
|
|
Merge pull request #3066 from libgit2/cmn/remote-less-state
Remove the configuration state we keep in the remote
|
|
b0d7f329
|
2015-05-13T10:23:19
|
|
odb: reverse the default backend priorities
We currently first look in the loose object dir and then in the packs
for objects. When performing operations on recent history this has a
higher likelihood of hitting, but when we deal with operations which
look further back into the past, we start spending a large amount of
time getting ENOTENT from `access`.
Reversing the priorities means that long-running operations can get to
their objects faster, as we can look at the index data we have in memory
(or rather mapped) to figure out whether we have an object, which is
faster than going out to the filesystem.
The packed backend already implements an optimistic read algorithm by
first looking at the packs we know about and only going out to disk to
referesh if the object is not found which means that in the case where
we do have the object (which will be in the majority for anything that
traverses the graph) we can avoid going to to disk entirely to determine
whether an object exists.
Operations which look at recent history may take a slight impact, but
these would be operations which look a lot less at object and thus take
less time regardless.
|
|
3251972e
|
2015-05-04T09:39:55
|
|
push: free the update list
|
|
b1ae3e53
|
2015-04-26T02:20:22
|
|
Update CHANGELOG with the changes to the remotes
|
|
3e20154a
|
2015-04-25T00:38:22
|
|
remote: simplify anonymous creation
We're down to simply having it be a call to create_internal() so let's
simply do that. The rest of the code is just a distraction.
|
|
a4b6452a
|
2015-04-23T06:55:29
|
|
remote: remove git_remote_save()
It has now become a no-op, so remove the function and all references to
it.
|
|
77254990
|
2015-04-23T06:51:34
|
|
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.
|
|
3fec548a
|
2015-04-23T06:01:13
|
|
examples: adjust to the new remote API
|
|
35a8a8c5
|
2015-04-22T17:29:20
|
|
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.
|
|
3eff2a57
|
2015-04-22T16:11:10
|
|
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.
|
|
058b753c
|
2015-04-22T15:45:21
|
|
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.
|
|
6fb373a0
|
2015-04-22T04:54:00
|
|
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.
|
|
22261344
|
2015-04-22T04:38:08
|
|
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.
|
|
8f0104ec
|
2015-04-21T22:10:36
|
|
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.
|
|
05259114
|
2015-04-21T20:16:48
|
|
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.
|
|
77b339f7
|
2015-05-12T13:06:33
|
|
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.
|
|
34593aae
|
2015-05-12T17:00:25
|
|
attr: declare variable at top of block for msvc
|
|
90997e40
|
2015-05-12T12:14:55
|
|
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.)
|
|
9465bedb
|
2015-05-12T16:02:18
|
|
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.
|
|
30e629a0
|
2015-05-11T17:34:14
|
|
attr: always return errors
|
|
ef6d0722
|
2015-05-12T13:06:05
|
|
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".
|
|
9486d203
|
2015-05-12T13:07:59
|
|
attr test: test a file beneath ignored folder
|
|
97fb9ac7
|
2015-05-12T13:54:28
|
|
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.
|
|
adad5181
|
2015-05-12T13:52:47
|
|
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).
|
|
ca294279
|
2015-05-12T11:43:27
|
|
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.
|
|
20dcb731
|
2015-05-12T11:33:45
|
|
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.
|
|
f85a9c27
|
2015-05-12T11:27:37
|
|
Merge pull request #3111 from whoisj/centralizing-buffer-sizes
Centralizing all IO buffer size values
|
|
1e44ea97
|
2015-05-12T11:13:41
|
|
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.
|
|
77a15fe8
|
2015-05-12T10:29:58
|
|
Merge pull request #3018 from ethomson/stash_apply
Stash apply
|
|
1f1f5c63
|
2015-05-11T14:10:24
|
|
checkout: better document the `baseline_index` opt
|
|
15fdf054
|
2015-05-11T14:06:47
|
|
stash application: document new API in CHANGELOG
|
|
44972873
|
2015-05-11T14:02:53
|
|
stash: propagate the error when writing a tree
|
|
4ea3eebf
|
2015-05-01T18:34:38
|
|
stash_apply: provide progress callbacks
|
|
19c80a6f
|
2015-05-01T18:07:10
|
|
stash_apply: provide its own options structure
|
|
24961668
|
2015-04-20T20:06:02
|
|
stash: test checkout notify callbacks
|
|
12149a20
|
2015-04-20T20:05:23
|
|
stash apply: default to at least GIT_CHECKOUT_SAFE
|
|
f78bb2af
|
2015-03-18T01:54:04
|
|
stash: return GIT_EMERGECONFLICT on merge conflict
|
|
958950b6
|
2015-05-01T13:53:46
|
|
stash: document merge conflicts
|
|
f0957589
|
2015-03-04T23:55:42
|
|
stash: refactor to use merge_iterators
|
|
90f8408d
|
2015-02-18T16:33:50
|
|
stash: ensure a reflog has entries
|
|
d0dd3fce
|
2015-02-18T15:16:05
|
|
stash apply: check out a tree, not piecewise
|
|
7f26b1b9
|
2015-02-18T13:24:07
|
|
stash: use git_commit_summary for a summary
|
|
35d39761
|
2015-03-18T00:25:18
|
|
index: introduce git_index_read_index
|
|
73dce1f6
|
2015-03-16T18:57:57
|
|
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.
|
|
9ebb5a3f
|
2015-02-18T22:53:40
|
|
merge: merge iterators
|
|
bf8dd3f5
|
2014-11-14T12:32:47
|
|
Added git_stash_apply() and git_stash_pop() APIs
|
|
7dd22538
|
2015-05-11T10:19:25
|
|
centralizing all IO buffer size values
|
|
9cdd6578
|
2015-05-09T13:11:46
|
|
Merge pull request #3104 from whoisj/optimal-buffer-size
Adjusting stream buffer size to 64KB
|
|
7eb7e03d
|
2015-05-07T08:50:12
|
|
Adjusting stream buffer size to 64KB
64K is optimal buffer size per https://technet.microsoft.com/en-us/library/cc938632.aspx
|
|
25f355cb
|
2015-05-06T18:39:39
|
|
Merge pull request #3086 from yongthecoder/master
Android build doesn't need deps/regex
|
|
5b6292a7
|
2015-05-06T07:37:49
|
|
Merge pull request #3100 from arthurschreiber/patch-5
Ensure frameworks are mentioned in libgit2.pc
|
|
7a5c7559
|
2015-05-05T22:36:24
|
|
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.
|
|
b162d97a
|
2015-05-05T09:47:16
|
|
config: plug a couple of leaks
|
|
57aa839c
|
2015-05-04T09:41:34
|
|
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.
|
|
074d323f
|
2015-05-04T15:23:40
|
|
Merge pull request #3079 from ethomson/config
Configuration changes for handling multiple of the same sections
|
|
c3414d53
|
2015-05-04T14:59:08
|
|
Merge pull request #3070 from ethomson/checkout_icase
Case insensitive checkout improvements
|
|
d6b7e404
|
2015-05-04T07:36:21
|
|
config: test all multivars are updated
If a multivar exists within two sections (of the same name)
then they should both be updated in a `set_multivar`. Ensure
that this is the case.
|
|
0daf998d
|
2015-04-27T16:31:18
|
|
config: use wildcard in test instead of empty expr
|
|
63c0cc65
|
2015-04-27T16:29:00
|
|
config: cleanup some now-unused variables
|
|
9c26de0f
|
2015-04-27T15:38:44
|
|
config: lock the file for write before reading
When writing a configuration file, we want to take a lock on the
new file (eg, `config.lock`) before opening the configuration file
(`config`) for reading so that we can prevent somebody from changing
the contents underneath us.
|
|
5a70df94
|
2015-04-21T15:57:20
|
|
Test setting config var under duplicate header.
Add a test that exposes a bug in config_write.
It is valid to have multiple separate headers for the same config section, but
config_write will exit after finding the first matching section in certain
situations.
This test proves that config_write will duplicate a variable that already
exists instead of overwriting it if the variable is defined under a duplicate
section header.
|
|
2a950c94
|
2015-04-27T10:43:50
|
|
config: write existing lines as-is when rewriting
When updating a configuration file, we want to copy the old data
from the file to preserve comments and funny whitespace, instead
of writing it in some "canonical" format. Thus, we keep a
pointer to the start of the line and the line length to preserve
these things we don't care to rewrite.
|
|
bf99390e
|
2015-04-23T16:54:36
|
|
config: examine whole file when writing
Previously we would try to be clever when writing the configuration
file and try to stop parsing (and simply copy the rest of the old
file) when we either found the value we were trying to write,
or when we left the section that value was in, the assumption being
that there was no more work to do.
Regrettably, you can have another section with the same name later
in the file, and we must cope with that gracefully, thus we read the
whole file in order to write a new file.
Now, writing a file looks even more than reading. Pull the config
parsing out into its own function that can be used by both reading
and writing the configuration.
|
|
f79c7322
|
2015-04-23T12:00:05
|
|
config: test overwriting cvar in multiple regions
|
|
7ee61b8e
|
2015-04-21T17:18:21
|
|
config: ensure we can write to an empty file
|
|
cd79d99a
|
2015-04-23T15:58:53
|
|
checkout test: better case-insensitive test on Mac
On Mac OS, `realpath` is deficient in determining the actual filename
on-disk as it will simply provide the string you gave it if that file
exists, instead of returning the filename as it exists. Instead we
must read the directory entries for the parent directory to get the
canonical filename.
|
|
f286e271
|
2015-03-31T16:06:33
|
|
status test: always test the new file path
|
|
64842d87
|
2015-04-23T09:21:33
|
|
checkout test: only run icase on icase platform
|
|
4beab1f8
|
2015-03-31T16:29:35
|
|
checkout: break case-changes into delete/add
When checking out with a case-insensitive working directory, we
want to change the case of items in the working directory to
reflect changes that occured in the checkout target. Diff now
has an option to break case-changing renames into delete/add.
|
|
05f69012
|
2015-03-31T16:28:13
|
|
checkout: remove blocking dir when FORCEd
|
|
3520c970
|
2015-03-27T15:39:28
|
|
Revert "Always checkout with case sensitive iterator"
This reverts commit 40d791545abfb3cb71553a27dc64129e1a9bec28.
|
|
6dfd8506
|
2015-04-01T15:23:37
|
|
checkout test: ensure we write to casechanged dir
Ensure that on a case insensitive filesystem that we can checkout
into some folder 'FOLDER' that exists on disk, even if the target
of the checkout is a different case (eg 'folder').
|
|
431f9807
|
2015-03-27T15:33:44
|
|
checkout test: ignore unstaged case-changing renames
On Windows, you might sloppily rewrite a file (or have a sloppy
text editor that does it for you) and accidentally change its
case. (eg, "README" -> "readme"). Git ignores this accidental
case changing rename during checkout and will happily write the
new content to the file despite the name change. We should, too.
|
|
cfc2e56d
|
2015-05-04T11:16:52
|
|
Merge pull request #3087 from ethomson/pr/3054
Performance Improvements to Status on Windows
|
|
72f8da91
|
2015-05-02T10:51:24
|
|
Merge pull request #3089 from volftomas/patch-2
Added call to git_libgit2_shutdown()
|
|
785990be
|
2015-05-02T12:16:22
|
|
Restructured to be nicer example
Code restructured to better represent best practice when
using libgit2.
|
|
ef23a82f
|
2015-05-01T17:30:51
|
|
Merge pull request #3092 from techee/iconv_macports_fix2
Don't search iconv in /opt/local
|
|
b7df2e8b
|
2015-05-01T22:48:33
|
|
Don't search iconv in /opt/local
Since OpenSSL isn't used any more on OS X, there is no dependency
on any MacPorts library under /opt/local and there is no danger of
conflicts between MacPorts and system iconv. For this reason the
system iconv can always be used now.
|
|
be3f1049
|
2015-05-01T11:27:44
|
|
diriter: actually use iconv on mac
|
|
cd39e4e2
|
2015-04-29T18:12:51
|
|
git_buf_put_w: introduce utf16->utf8 conversion
|
|
f63a1b72
|
2015-04-29T17:23:02
|
|
git_path_diriter: use FindFirstFile in win32
Using FindFirstFile and FindNextFile in win32 allows us to
use the directory information that is returned, instead of
us having to get the file attributes all over again, which
is a distinct cost savings on win32.
|
|
5c387b6c
|
2015-04-29T14:31:59
|
|
git_path_diriter: next shouldn't take path ptr
The _next method shouldn't take a path pointer (and a path_len
pointer) as 100% of current users use the full path and ignore
the filename.
Plus let's add some docs and a unit test.
|
|
7ef005f1
|
2015-04-29T14:04:01
|
|
git_path_dirload_with_stat: moved to fs_iterator
|
|
ba8ef18a
|
2015-04-29T13:28:29
|
|
git_path_dirload_with_stat: use git_path_diriter
|