|
74a24005
|
2012-09-21T10:28:20
|
|
refs: use constants for well-known names
|
|
acd17006
|
2012-10-07T11:19:19
|
|
remote: only keep a weak pointer in update_tips
The reference is only needed inside the function. We mistakenly
increased the reference counter causing the ODB not to get freed and
leaking descriptors.
|
|
22935b06
|
2012-10-07T10:20:23
|
|
protocol: don't store flushes
Storing flushes in the refs vector doesn't let us recognize when the
remote is empty, as we'd always introduce at least one element into
it. These flushes aren't necessary, so we can simply ignore them.
|
|
d0b452db
|
2012-10-02T11:08:30
|
|
Merge pull request #932 from ben/clone_pack_race
ODB: re-load packfiles on failed lookup
|
|
eada0762
|
2012-10-02T10:45:40
|
|
Merge pull request #939 from pwkelley/ignorecase
Support for the core.ignorecase flag
|
|
8bc5cacc
|
2012-10-01T13:57:32
|
|
Merge pull request #961 from arrbee/win64-cleanups
Win64 cleanups
|
|
7c411fd9
|
2012-10-01T12:32:55
|
|
Fix up more Win64 compile warnings
|
|
93b5fabc
|
2012-10-01T17:59:04
|
|
threads: Assert that the global state is initialized
|
|
9063be1f
|
2012-10-01T17:33:05
|
|
remote: Fix mid-block declaration
|
|
3230a44f
|
2012-09-30T10:56:06
|
|
remote: support downloading all tags
Also honor remote.$name.tagopt = --tags.
|
|
eb0bd77a
|
2012-09-29T22:50:33
|
|
remote: use the refspec functions to parse, instead of rolling our own
The local function works for simple cases, but we shouldn't reinvent
the wheel just for us.
|
|
f70e466f
|
2012-09-27T11:58:35
|
|
remote: add accessors for the autotag setting
|
|
a37ddf7e
|
2012-09-16T03:36:03
|
|
remote: create tags if we have them
Together with include-tag, this make us behave more like git. After a
fetch, try to create any tags the remote told us about for which we
have objects locally.
|
|
24f2f94e
|
2012-09-15T08:07:24
|
|
fetch: use the include-tag capability
This tells the remote to send us any tags that point to objects that
we are downloading.
|
|
c1281493
|
2012-09-30T11:37:53
|
|
refs: propagate EEXISTS
Indicate whether the error comes from the ref already existing or
elsewhere. We always perform the check and this lets the user write
more concise code.
|
|
3665ba8e
|
2012-09-27T12:04:41
|
|
refspec: add git_refspec__free, remove git_refspec_parse
The latter shouldn't be exposed and isn't used, git_refspec__parse
supersedes it.
Fix a leak in the refspec tests while we're at it.
|
|
cc5bf359
|
2012-09-28T09:08:09
|
|
Clean up Win64 warnings
|
|
34402bcd
|
2012-09-28T11:57:02
|
|
Merge pull request #959 from jamill/empty_file_hash
Fix error hashing empty file.
|
|
3f849902
|
2012-09-28T11:48:43
|
|
Merge pull request #958 from schu/fix-merge-base
revwalk: fix off-by-one error
|
|
addc9be4
|
2012-09-26T17:21:32
|
|
Fix error hashing empty file.
|
|
8060cdc9
|
2012-09-27T14:59:43
|
|
revwalk: fix off-by-one error
Fixes #921.
|
|
bae957b9
|
2012-09-25T16:31:46
|
|
Add const to all shared pointers in diff API
There are a lot of places where the diff API gives the user access
to internal data structures and many of these were being exposed
through non-const pointers. This replaces them all with const
pointers for any object that the user can access but is still
owned internally to the git_diff_list or git_diff_patch objects.
This will probably break some bindings... Sorry!
|
|
64286308
|
2012-09-25T10:48:50
|
|
Fix bugs in new diff patch code
This fixes all the bugs in the new diff patch code. The only
really interesting one is that when we merge two diffs, we now
have to actually exclude diff delta records that are not supposed
to be tracked, as opposed to before where they could be included
because they would be skipped silently by `git_diff_foreach()`.
Other than that, there are just minor errors.
|
|
5f69a31f
|
2012-09-24T20:52:34
|
|
Initial implementation of new diff patch API
Replacing the `git_iterator` object, this creates a simple API
for accessing the "patch" for any file pair in a diff list and
then gives indexed access to the hunks in the patch and the lines
in the hunk. This is the initial implementation of this revised
API - it is still broken, but at least builds cleanly.
|
|
5942bd18
|
2012-09-25T14:53:13
|
|
Merge pull request #947 from arrbee/public-error-set
Make giterr_set_str() and giterr_set_oom() public APIs
|
|
31d22037
|
2012-09-25T14:52:24
|
|
Merge pull request #944 from scunz/list_tags
Tags: teach git_tag_list not to include the 'refs/tags/' prefix
|
|
0adfa20a
|
2012-09-11T11:42:13
|
|
refspec: introduce git_refspec__parse()
|
|
77e06d7e
|
2012-09-17T07:11:32
|
|
refs: introduce git_reference_is_valid_name()
|
|
c030ada7
|
2012-09-11T12:06:57
|
|
refs: make git_reference_normalize_name() accept refspec pattern
|
|
3af06254
|
2012-09-20T22:42:22
|
|
Tags: teach git_tag_list not to include the 'refs/tags/' prefix
Since quite a while now, git_branch_foreach has learnt to list branches
without the 'refs/heads/' or 'refs/remotes' prefixes.
This patch teaches git_tag_list to do the same for listing tags.
|
|
d75074f4
|
2012-09-22T12:29:16
|
|
Fix -Wmaybe-uninitialized warning
|
|
1a628100
|
2012-09-21T15:04:39
|
|
Make giterr_set_str public
There has been discussion for a while about making some set of
the `giterr_set` type functions part of the public API for code
that is implementing new backends to libgit2. This makes the
`giterr_set_str()` and `giterr_set_oom()` functions public.
|
|
0cb24616
|
2012-09-21T10:51:42
|
|
Merge pull request #942 from nulltoken/topic/checkout-notify-skipped
checkout: add notification callback for skipped files
|
|
9e592583
|
2012-09-19T12:23:47
|
|
checkout: add notification callback for skipped files
|
|
b1127a30
|
2012-09-20T22:32:19
|
|
git_repository_hashfile: Only close file handle if we have a valid one
Otherwise this throws an exception on MFC based systems.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
9ac8b113
|
2012-09-20T14:06:49
|
|
Fix MSVC amd64 compilation warnings
|
|
28abf3db
|
2012-09-20T11:41:49
|
|
checkout: prefer mode_t type usage over int
|
|
63409451
|
2012-09-19T04:55:16
|
|
ODB pack: snapshot last_found to avoid race
Also removed unnecessary refresh call and fixed
some indentation.
|
|
78216495
|
2012-09-13T20:08:05
|
|
Remove mtime checks from ODB packfile backend
Now forcing refresh on a foreach, and on missed full-oid
or short-oid lookups.
|
|
5bb0dc93
|
2012-09-13T14:02:46
|
|
ODB: re-load packfiles on failed lookup
The old method was avoiding re-loading of packfiles by watching the mtime of the
pack directory. This causes the ODB to become stale if the directory and packfile
are written within the same clock millisecond, as when cloning a fairly small
repo.
This method tries to find the object in the cached packs, and forces a refresh when
that fails. This will cause extra stat'ing on a miss, but speeds up the success
case and avoids this race condition.
|
|
f08c60a5
|
2012-09-17T16:10:42
|
|
Minor fixes for ignorecase support
|
|
ec40b7f9
|
2012-09-17T15:42:41
|
|
Support for core.ignorecase
|
|
39783719
|
2012-09-17T20:27:28
|
|
checkout: Mimic git_diff_options storage of paths
|
|
5e4cb4f4
|
2012-09-17T10:38:57
|
|
checkout : reduce memory usage when not filtering
|
|
44af67a8
|
2012-09-15T22:07:45
|
|
repository: introduce git_repository_set_head()
|
|
4ebe38bd
|
2012-09-15T22:07:09
|
|
repository: introduce git_repository_set_head_detached()
|
|
3f4c3072
|
2012-09-15T22:03:31
|
|
repository: introduce git_repository_detach_head()
|
|
5af61863
|
2012-09-14T11:15:49
|
|
checkout: drop git_checkout_reference()
|
|
c214fa1c
|
2012-09-06T15:15:46
|
|
checkout: segregate checkout strategies
|
|
ee8bb8ba
|
2012-08-19T21:24:51
|
|
reset: add support for GIT_RESET_HARD mode
|
|
e93af304
|
2012-08-24T10:40:17
|
|
checkout: introduce git_checkout_index()
|
|
3aa443a9
|
2012-08-20T16:56:45
|
|
checkout: introduce git_checkout_tree()
|
|
e8776d30
|
2012-09-16T00:10:07
|
|
odb: don't overflow the link path buffer
Allocate a buffer large enough to store the path plus the terminator
instead of letting readlink write beyond the end.
|
|
1e90ae77
|
2012-09-14T13:45:29
|
|
Merge pull request #860 from schu/thread-safety
odb_pack: make sure to search all backends
|
|
3d7617e4
|
2012-09-14T21:33:50
|
|
odb_pack: fix race condition
last_found is the last packfile a wanted object was found in. Since
last_found is shared among all searching threads, it might changes while
we're searching. As suggested by @arrbee, put a copy on the stack to fix
the race condition.
|
|
70341b09
|
2012-09-14T13:33:49
|
|
Merge pull request #937 from nulltoken/fix/issue_936
refs: prevent locked refs from being enumerated
|
|
c2948c77
|
2012-09-14T21:36:49
|
|
refs: prevent locked refs from being enumerated
Fix #936
|
|
b200a813
|
2012-09-14T20:43:47
|
|
config: fix Unicode BOM detection
Defining the BOM as a string makes the array include the
NUL-terminator, which means that the memcpy is going to check for that
as well and thus never match for a nonempty file.
Define the array as three chars, which makes the size correct.
|
|
f4ea176f
|
2012-09-14T10:31:40
|
|
Remove unnecessary include
I don't think clone.c needs in #include dirent.h and it is not
portable, so let's just get rid of it.
|
|
75050223
|
2012-09-14T11:47:43
|
|
Fix MSVC compilation warnings
|
|
60ecdf59
|
2012-09-10T11:48:21
|
|
pack: iterate objects in offset order
Compute the ordering on demand and persist until the index is freed.
|
|
3ce22c74
|
2012-08-26T19:22:34
|
|
http: use WinHTTP on Windows
Wondows has its own HTTP library. Use that one when possible instead of
our own.
As we don't depend on them anymore, remove the http-parser library from
the Windows build, as well as the search for OpenSSL.
|
|
687ec68b
|
2012-09-14T00:51:29
|
|
http: use the new unicode functions
The winhttp branch was based on a version before these existed, so the
build broke on Windows.
|
|
13b554e3
|
2012-09-13T23:30:31
|
|
Fix error text s/buffer too long/buffer too short/
|
|
d973a5af
|
2012-09-13T14:20:43
|
|
Merge pull request #929 from arrbee/diff-iter-fixes
Fix problems in diff iterator record chaining
|
|
12b6af17
|
2012-09-13T14:15:07
|
|
Forgot to reset hunk & line between files
The last change tweaked the way we use the hunk_curr pointer
during iteration, but failed to reset the value back to NULL
when switching files.
|
|
e16fc07f
|
2012-09-13T22:22:40
|
|
refspec: No remote tracking ref from a fetchspec-less remote
|
|
49d34c1c
|
2012-09-13T13:17:38
|
|
Fix problems in diff iterator record chaining
There is a bug in building the linked list of line records in the
diff iterator and also an off by one element error in the hunk
counts. This fixes both of these, adds some test data with more
complex sets of hunk and line diffs to exercise this code better.
|
|
9be2261e
|
2012-09-13T09:24:12
|
|
Merge pull request #927 from arrbee/hashfile-with-filters
Add git_repository_hashfile to hash with filters
|
|
45c4697c
|
2012-09-13T09:07:06
|
|
Merge pull request #928 from barrbrain/odb-pack-stat-less
odb_pack: try lookup before refreshing packs
|
|
13faa77c
|
2012-09-13T17:57:45
|
|
Fix -Wuninitialized warning
|
|
ab8a0402
|
2012-09-12T14:26:31
|
|
odb_pack: try lookup before refreshing packs
This reduces the rate of syscalls for the common case of sequences of
object reads from the same pack.
Best of 5 timings for libgit2_clar before this patch:
real 0m5.375s
user 0m0.392s
sys 0m3.564s
After applying this patch:
real 0m5.285s
user 0m0.356s
sys 0m3.544s
0.6% improvement in system time.
9.2% improvement in user time.
1.7% improvement in elapsed time.
Confirmed a 0.6% reduction in number of system calls with strace.
Expect greater improvement for graph-traversal with large packs.
|
|
a13fb55a
|
2012-09-11T17:26:21
|
|
Add tests and improve param checks
Fixed some minor `git_repository_hashfile` issues:
- Fixed incorrect doc (saying that repo could be NULL)
- Added checking of object type value to acceptable ones
- Added more tests for various parameter permutations
|
|
47bfa0be
|
2012-09-07T13:27:49
|
|
Add git_repository_hashfile to hash with filters
The existing `git_odb_hashfile` does not apply text filtering
rules because it doesn't have a repository context to evaluate
the correct rules to apply. This adds a new hashfile function
that will apply repository-specific filters (based on config,
attributes, and filename) before calculating the hash.
|
|
21d847d3
|
2012-09-11T14:56:13
|
|
Merge pull request #920 from scunz/mergebase_const
git_mergebase: Constness-Fix for consistency
|
|
412293dc
|
2012-09-11T23:38:16
|
|
Merge branch 'diff-crlf-filters' into development
|
|
c859184b
|
2012-09-11T23:05:24
|
|
Properly handle p_reads
|
|
1f35e89d
|
2012-09-11T12:03:33
|
|
Fix diff binary file detection
In the process of adding tests for the max file size threshold
(which treats files over a certain size as binary) there seem to
be a number of problems in the new code with detecting binaries.
This should fix those up, as well as add a test for the file
size threshold stuff.
Also, this un-deprecates `GIT_DIFF_LINE_ADD_EOFNL`, since I
finally found a legitimate situation where it would be returned.
|
|
6ee68611
|
2012-09-10T21:29:07
|
|
cache: fix race condition
Example: a cached node is owned only by the cache (refcount == 1).
Thread A holds the lock and determines that the entry which should get
cached equals the node (git_oid_cmp(&node->oid, &entry->oid) == 0).
It frees the given entry to instead return the cached node to the user
(entry = node). Now, before Thread A happens to increment the refcount
of the node *outside* the cache lock, Thread B tries to store another
entry and hits the slot of the node before, decrements its refcount and
frees it *before* Thread A gets a chance to increment for the user.
git_cached_obj_incref(entry);
git_mutex_lock(&cache->lock);
{
git_cached_obj *node = cache->nodes[hash & cache->size_mask];
if (node == NULL) {
cache->nodes[hash & cache->size_mask] = entry;
} else if (git_oid_cmp(&node->oid, &entry->oid) == 0) {
git_cached_obj_decref(entry, cache->free_obj);
entry = node;
} else {
git_cached_obj_decref(node, cache->free_obj);
// Thread B is here
cache->nodes[hash & cache->size_mask] = entry;
}
}
git_mutex_unlock(&cache->lock);
// Thread A is here
/* increase the refcount again, because we are
* returning it to the user */
git_cached_obj_incref(entry);
|
|
2130dee4
|
2012-09-10T23:19:00
|
|
Merge pull request #914 from authmillenon/index-fixes
Fix logical error in git_index_set_caps
|
|
eff14d38
|
2012-09-10T23:15:54
|
|
Merge pull request #906 from nulltoken/topic/git_reference_peel
git reference peel
|
|
c6ac28fd
|
2012-09-10T12:24:05
|
|
Reorg internal odb read header and object lookup
Often `git_odb_read_header` will "fail" and have to read the
entire object into memory instead of just the header. When this
happens, the object is loaded and then disposed of immediately,
which makes it difficult to efficiently use the header information
to decide if the object should be loaded (since attempting to do
so will often result in loading the object twice).
This commit takes the existing code and reorganizes it to have
two new functions:
- `git_odb__read_header_or_object` which acts just like the old
read header function except that it returns the object, too, if
it was forced to load the whole thing. It then becomes the
callers responsibility to free the `git_odb_object`.
- `git_object__from_odb_object` which was extracted from the old
`git_object_lookup` and creates a subclass of `git_object` from
an existing `git_odb_object` (separating the ODB lookup from the
`git_object` creation). This allows you to use the first header
reading function efficiently without instantiating the
`git_odb_object` twice.
There is no net change to the behavior of any of the existing
functions, but this allows internal code to tap into the ODB
lookup and object creation to be more efficient.
|
|
e597b189
|
2012-09-10T11:49:12
|
|
Move diff max_size to public API
This commit adds a max_size value in the public `git_diff_options`
structure so that the user can automatically flag blobs over a
certain size as binary regardless of other properties.
Also, and perhaps more importantly, this moves binary detection
to be as early as possible in the diff traversal inner loop and
makes sure that we stop loading objects as soon as we decide that
they are binary.
|
|
b36effa2
|
2012-09-10T09:59:14
|
|
Replace git_diff_iterator_num_files with progress
The `git_diff_iterator_num_files` API was problematic, since we
don't actually know the exact number of files to be iterated over
until we load those files into memory. This replaces it with a
new `git_diff_iterator_progress` API that goes from 0 to 1, and
moves and renamed the old API for the internal places that can
tolerate a max value instead of an exact value.
|
|
857323d4
|
2012-09-09T15:53:57
|
|
git_mergebase: Constness-Fix for consistency
|
|
17b06f4d
|
2012-09-07T15:49:08
|
|
Add missing accessor for fetchRecurseSubmodules
When `git_submodule` became an opaque structure, I forgot to add
accessor functions for the fetchRecurseSubmodules config setting.
This fixes that.
|
|
3a3deea8
|
2012-09-06T15:45:50
|
|
Clean up blob diff path
Previously when diffing blobs, the diff code just ran with a NULL
repository object. Of course, that's not necessary and the test
for a NULL repo was confusing. This makes the blob diff run with
the repo that contains the blobs and clarifies the test that it
is possible to be diffing data where the path is unknown.
|
|
60b9d3fc
|
2012-09-05T15:00:40
|
|
Implement filters for status/diff blobs
This adds support to diff and status for running filters (a la crlf)
on blobs in the workdir before computing SHAs and before generating
text diffs. This ended up being a bit more code change than I had
thought since I had to reorganize some of the diff logic to minimize
peak memory use when filtering blobs in a diff.
This also adds a cap on the maximum size of data that will be loaded
to diff. I set it at 512Mb which should match core git. Right now
it is a #define in src/diff.h but it could be moved into the public
API if desired.
|
|
f8e2cc9a
|
2012-08-31T15:53:47
|
|
Alternate test for autocrlf with status
I couldn't get the last failing test to actually fail. This
is a different test suggested by @nulltoken which should fail.
|
|
35d2e449
|
2012-08-20T11:26:02
|
|
checkout: cleanup misplaced declaration
|
|
ced8d142
|
2012-08-22T11:30:55
|
|
errors: deploy GIT_EBAREREPO usage
|
|
31665948
|
2012-08-24T21:30:45
|
|
refs: introduce git_reference_peel()
Fix #530
|
|
0e9f2fce
|
2012-09-06T11:35:09
|
|
odb: mark unused variable
|
|
7a3fc9fb
|
2012-09-06T01:17:23
|
|
Merge pull request #900 from pwkelley/development
Expose a malloc function to 3rd party ODB backends
|
|
4e2b8b4c
|
2012-09-06T01:15:14
|
|
Merge pull request #912 from schu/netops-ssl-error
netops: be more careful with SSL errors
|
|
01ae1909
|
2012-09-06T10:13:38
|
|
diff: Cleanup documentation and printf compat
|
|
510f1bac
|
2012-08-30T16:39:05
|
|
Fix comments and a minor bug
This adds better header comments and also fixes a bug in one of
simple APIs that tells the number of lines in the current hunk.
|
|
f335ecd6
|
2012-08-30T14:24:16
|
|
Diff iterators
This refactors the diff output code so that an iterator object
can be used to traverse and generate the diffs, instead of just
the `foreach()` style with callbacks. The code has been rearranged
so that the two styles can still share most functions.
This also replaces `GIT_REVWALKOVER` with `GIT_ITEROVER` and uses
that as a common error code for marking the end of iteration when
using a iterator style of object.
|
|
4d383403
|
2012-09-04T14:19:24
|
|
Merge pull request #856 from libgit2/utf8-win
Windows: Perform UTF-8 path conversion on the Stack
|
|
f9988d4e
|
2012-09-04T21:42:00
|
|
odb: pass the user's data pointer correctly in foreach
|