|
42ea35c0
|
2012-05-01T22:25:43
|
|
remote: don't free transport on disconnect
Currently, git_remote_disconnect not only closes the connection but also
frees the underlying transport object, making it impossible to write
code like
// fetch stuff
git_remote_download()
// close connection
git_remote_disconnect()
// call user provided callback for each ref
git_remote_update_tips(remote, callback)
because remote->refs points to references owned by the transport object.
This means, we have an idling connection while running the callback for
each reference.
Instead, allow immediate disconnect and free the transport later in
git_remote_free().
|
|
ced9da54
|
2012-04-30T14:38:15
|
|
Merge pull request #654 from carlosmn/pkt-err
Recognize and report server-side error messages
|
|
39e6af6a
|
2012-04-30T17:44:37
|
|
net: recognize and report server-side error messages
When e.g. a repository isn't found, the server sends an error saying
so. Put that error message in our error buffer.
|
|
fa6420f7
|
2012-04-29T21:46:33
|
|
buf: deploy git_buf_len()
|
|
1d2dd864
|
2012-04-29T19:42:51
|
|
diff: provide more context to the consumer of the callbacks
Update the callback to provide some information related to the file change being processed and the range of the hunk, when applicable.
|
|
da3c187d
|
2012-04-29T19:08:48
|
|
buf: add git_buf_len() accessor to expose the current length of the buffer content
|
|
fdc0c5f6
|
2012-04-29T01:20:02
|
|
pkt: bring back GIT_ESHORTBUFFER
The recent 64-bit Windows fixes changed the return code in
git_pkt_parse_line() so it wouldn't signal a short buffer, breaking
the network code. Bring it back.
|
|
9738e2cd
|
2012-04-27T18:04:58
|
|
refs: fix unused-but-set warning
|
|
821f6bc7
|
2012-04-26T13:04:54
|
|
Fix Win32 warnings
|
|
d58336dd
|
2012-04-26T10:51:45
|
|
Fix leading slash behavior in attrs/ignores
We were not following the git behavior for leading slashes
in path names when matching git ignores and git attribute
file patterns. This should fix issue #638.
|
|
eb3d71a5
|
2012-04-25T22:23:35
|
|
diff: fix generation of the header of a removal patch
|
|
3fc5c65d
|
2012-04-25T15:24:05
|
|
Merge pull request #642 from arrbee/mem-pools
Memory pools and khash hashtables
|
|
c2b67043
|
2012-04-25T15:20:28
|
|
Rename git_khash_str to git_strmap, etc.
This renamed `git_khash_str` to `git_strmap`, `git_hash_oid` to
`git_oidmap`, and deletes `git_hashtable` from the tree, plus
adds unit tests for `git_strmap`.
|
|
f50087c0
|
2012-04-25T14:29:45
|
|
Merge pull request #641 from carlosmn/networking
More Networking updates
|
|
01fed0a8
|
2012-04-25T10:36:01
|
|
Convert hashtable usage over to khash
This updates khash.h with some extra features (like error checking
on allocations, ability to use wrapped malloc, foreach calls, etc),
creates two high-level wrappers around khash: `git_khash_str` and
`git_khash_oid` for string-to-void-ptr and oid-to-void-ptr tables,
then converts all of the old usage of `git_hashtable` over to use
these new hashtables.
For `git_khash_str`, I've tried to create a set of macros that
yield an API not too unlike the old `git_hashtable` API. Since
the oid hashtable is only used in one file, I haven't bother to
set up all those macros and just use the khash APIs directly for
now.
|
|
ada488bf
|
2012-04-24T11:02:40
|
|
Import khash.h from attractivechaos/klib
|
|
c16c8b9a
|
2012-04-23T09:23:58
|
|
Adding stash to hashtable implementation
Adding a small stash of nodes with key conflicts has been
demonstrated to greatly increase the efficiency of a cuckoo
hashtable. See:
http://research.microsoft.com/pubs/73856/stash-full.9-30.pdf
for more details.
|
|
25f258e7
|
2012-04-23T09:21:15
|
|
Moving power-of-two bit utilities into util.h
|
|
da3b391c
|
2012-04-18T10:57:08
|
|
Convert revwalk to use git_pool
This removes the custom paged allocator from revwalk and
replaces it with a `git_pool`.
|
|
19fa2bc1
|
2012-04-17T15:12:50
|
|
Convert attrs and diffs to use string pools
This converts the git attr related code (including ignores) and
the git diff related code (and implicitly the status code) to use
`git_pools` for storing strings. This reduces the number of small
blocks allocated dramatically.
|
|
2bc8fa02
|
2012-04-17T10:14:24
|
|
Implement git_pool paged memory allocator
This adds a `git_pool` object that can do simple paged memory
allocation with free for the entire pool at once. Using this,
you can replace many small allocations with large blocks that
can then cheaply be doled out in small pieces. This is best
used when you plan to free the small blocks all at once - for
example, if they represent the parsed state from a file or data
stream that are either all kept or all discarded.
There are two real patterns of usage for `git_pools`: either
for "string" allocation, where the item size is a single byte
and you end up just packing the allocations in together, or for
"fixed size" allocation where you are allocating a large object
(e.g. a `git_oid`) and you generally just allocation single
objects that can be tightly packed. Of course, you can use it
for other things, but those two cases are the easiest.
|
|
a7d19b97
|
2012-04-25T15:47:53
|
|
config: also allow escaping outside of a quoted string
This limitation was a misparsing of the documentation.
|
|
f184836b
|
2012-04-25T12:13:20
|
|
remote: run a callback when updating the branch tips
This allows the caller to update an internal structure or update the
user output with the tips that were updated.
While in the area, only try to update the ref if the value is
different from its old one.
|
|
2e3a0055
|
2012-04-16T11:58:46
|
|
revwalk: return GIT_EREVWALKER earlier if no references were pushed
In the case that walk->one is NULL, we know that we have no positive
references, so we already know that the revwalk is over.
|
|
dee5515a
|
2012-04-14T18:34:50
|
|
transports: buffer the git requests before sending them
Trying to send every single line immediately won't give us any speed
improvement and duplicates the code we need for other transports. Make
the git transport use the same buffer functions as HTTP.
|
|
7a520f5d
|
2012-04-13T23:19:38
|
|
fetch: use the streaming indexer when downloading a pack
This changes the git_remote_download() API, but the existing one is
silly, so you don't get to complain.
The new API allows to know how much data has been downloaded, how many
objects we expect in total and how many we've processed.
|
|
f9f2344b
|
2012-04-23T17:28:11
|
|
Merge pull request #632 from arrbee/win64-cleanup
Code clean up, including fixing warnings on Windows 64-bit build
|
|
4795807a
|
2012-04-23T17:25:11
|
|
Merge pull request #637 from nulltoken/issue/odb-refcount
Fix git_repository_set_odb() refcount issue
|
|
26515e73
|
2012-04-23T10:06:31
|
|
Rename to git_reference_name_to_oid
|
|
baf861a5
|
2012-04-23T11:07:19
|
|
Fix git_repository_set_odb() refcount issue
git_repository_free() calls git_odb_free() if the owned odb is not null.
According to the doc, when setting a new odb through git_repository_set_odb() the caller has to take care of releasing the odb by himself.
|
|
05862156
|
2012-04-20T02:23:14
|
|
tree-cache: don't error out on a childless invalidated entry
The code used to assume that there had to be data after the newline in
a tree cache extension entry. This isn't true for a childless
invalidated entry if it's the last one, as there won't be any children
nor a hash to take up space.
Adapt the off-by-one comparison to also work in this case. Fixes #633.
|
|
d5930554
|
2012-04-19T11:40:56
|
|
Merge remote-tracking branch 'carlosmn/indexer-stream' into new-error-handling
|
|
54e4d0f2
|
2012-04-18T17:34:52
|
|
Merge pull request #629 from nulltoken/issue/index-refcount
Index refcount issue
|
|
44ef8b1b
|
2012-04-13T13:00:10
|
|
Fix warnings on 64-bit windows builds
This fixes all the warnings on win64 except those in deps, which
come from the regex code.
|
|
f201d613
|
2012-04-13T10:33:14
|
|
Add git_reference_lookup_oid and lookup_resolved
Adds a new public reference function `git_reference_lookup_oid`
that directly resolved a reference name to an OID without returning
the intermediate `git_reference` object (hence, no free needed).
Internally, this adds a `git_reference_lookup_resolved` function
that combines looking up and resolving a reference. This allows
us to be more efficient with memory reallocation.
The existing `git_reference_lookup` and `git_reference_resolve`
are reimplmented on top of the new utility and a few places in the
code are changed to use one of the two new functions.
|
|
dbeca796
|
2012-04-13T10:43:47
|
|
Remove old status implementation
This removes the code for the old status implementation.
|
|
2c1075d6
|
2012-03-16T12:52:49
|
|
config: parse quoted values
Variable values may be quoted to include newlines, literal quotes and
other characters. Add support for these and test it.
|
|
146f5c75
|
2012-04-14T15:09:29
|
|
repo: plug a couple of leaks
|
|
c1aefb35
|
2012-04-14T14:13:17
|
|
Fix git_repository_set_index() refcount issue
git_repository_free() calls git_index_free() if the owned index is not null.
According to the doc, when setting a new index through git_repository_set_index() the caller has still to take care of releasing the index by itself.
In order to cope with this, this fix makes sure the index refcount is incremented when a new repository is being plugged a new index.
|
|
14a513e0
|
2012-04-13T15:00:29
|
|
Add support for pathspec to diff and status
This adds preliminary support for pathspecs to diff and status.
The implementation is not very optimized (it still looks at
every single file and evaluated the the pathspec match against
them), but it works.
|
|
1c9c081a
|
2012-04-13T19:25:06
|
|
indexer: add git_indexer_stream_free() and _hash()
|
|
453ab98d
|
2012-04-11T12:55:34
|
|
indexer: Add git_indexer_stream_finalize()
Resolve any lingering deltas, write out the index file and rename the
packfile.
|
|
3f93e16c
|
2012-03-29T17:49:57
|
|
indexer: start writing the stream indexer
This will allow us to index a packfile as soon as we receive it from
the network as well as storing it with its final name so we don't need
to pass temporary file names around.
|
|
45d773ef
|
2012-04-05T23:36:14
|
|
pack: signal a short buffer when needed
|
|
fa679339
|
2012-04-13T09:58:54
|
|
Add packfile_unpack_compressed() to the internal header
|
|
d1f33156
|
2012-04-13T20:41:06
|
|
Merge remote-tracking branch 'carlosmn/revwalk-merge-base' into new-error-handling
|
|
fcb2164f
|
2012-04-13T10:51:58
|
|
Merge pull request #623 from arrbee/refactor-open
Update git_repository_open
|
|
4d53f3e2
|
2012-04-05T23:37:38
|
|
filebuf: add option not to buffer the contents at all
The new indexer needs to be able to bypass any kind of buffering, as
it's trying to map data that it has just written to disk.
|
|
6a625435
|
2012-04-12T23:40:41
|
|
branch: simplify error handling for git_branch_move()
The cleanup needs to happen anyway, so set the error code and jump
there instead of copying the code.
|
|
a1515693
|
2012-04-12T20:52:26
|
|
local transport: plug leak
|
|
6a8bcfa4
|
2012-04-12T20:47:46
|
|
branch: plug leaks in git_branch_move() and _delete()
|
|
eb8117b8
|
2012-04-12T20:25:07
|
|
error-handling: revwalk
|
|
bf787bd8
|
2012-04-08T18:56:50
|
|
Move git_merge_base() to is own header and document it
|
|
f9e4bfa3
|
2012-03-04T03:00:35
|
|
revwalk: use a priority queue for calculating merge bases
As parents are older than their children, we're appending to the
commit list most of the time, which makes an ordered linked list quite
inefficient.
While we're there, don't sort the results list in the main loop, as
we're sorting them afterwards and it creates extra work.
|
|
2c4ef1dd
|
2012-03-03T16:43:24
|
|
revwalk: use merge bases to speed up processing
There is no need walk down the parents of a merge base to mark them as
uninteresting because we'll never see them. Calculate the merge bases
in prepare_walk() so mark_uninteresting() can stop at a merge base
instead of walking all the way to the root.
|
|
de7ab85d
|
2012-03-03T03:31:51
|
|
Implement git_merge_base()
It's implemented in revwalk.c so it has access to the revision
walker's commit cache and related functions. The algorithm is the one
used by git, modified so it fits better with the library's functions.
|
|
06b9d915
|
2012-02-28T02:19:57
|
|
revwalk: allow pushing/hiding a reference by name
The code was already there, so factor it out and let users push an OID
by giving it a reference name. Only refs to commits are
supported. Annotated tags will throw an error.
|
|
081d2291
|
2012-03-03T04:46:21
|
|
revwalk: don't assume malloc succeeds
|
|
7784bcbb
|
2012-04-11T11:52:59
|
|
Refactor git_repository_open with new options
Add a new command `git_repository_open_ext` with extended options
that control how searching for a repository will be done. The
existing `git_repository_open` and `git_repository_discover` are
reimplemented on top of it. We may want to change the default
behavior of `git_repository_open` but this commit does not do that.
Improve support for "gitdir" files where the work dir is separate
from the repo and support for the "separate-git-dir" config. Also,
add support for opening repos created with `git-new-workdir` script
(although I have only confirmed that they can be opened, not that
all functions work correctly).
There are also a few minor changes that came up:
- Fix `git_path_prettify` to allow in-place prettifying.
- Fix `git_path_root` to support backslashes on Win32. This fix
should help many repo open/discover scenarios - it is the one
function called when opening before prettifying the path.
- Tweak `git_config_get_string` to set the "out" pointer to NULL
if the config value is not found. Allows some other cleanup.
- Fix a couple places that should have been calling
`git_repository_config__weakptr` and were not.
- Fix `cl_git_sandbox_init` clar helper to support bare repos.
|
|
64b402f8
|
2012-04-11T19:19:12
|
|
status: Remove status_old
This is Git yo. You can fetch stuff from the history if you need it.
|
|
a62053a0
|
2012-04-01T00:45:02
|
|
error-handling local transport
|
|
5eb8affb
|
2012-03-30T18:37:19
|
|
error-handling: fetch
|
|
bd6585a7
|
2012-03-16T15:15:21
|
|
netops: show winsock error messages on Windows
|
|
56b7df10
|
2012-03-07T07:01:20
|
|
error-handling: netops
|
|
25530fca
|
2012-03-06T11:26:10
|
|
error-handling: http
|
|
2b386acd
|
2012-03-06T10:47:18
|
|
error-handling: git transport
|
|
84d250bf
|
2012-03-06T10:23:02
|
|
error-handling: protocol, pkt
|
|
4376f7f6
|
2012-03-06T08:12:35
|
|
error-handling: remote, transport
|
|
d4d648b0
|
2012-04-11T15:25:34
|
|
Fix compilation errors and warnings
|
|
1a2b8725
|
2012-04-11T14:27:40
|
|
Typedefs don't have enum in front
|
|
0a20eee9
|
2012-04-11T03:43:30
|
|
Merge pull request #619 from nulltoken/topic/branches
Basic branch management API
|
|
b78fb64d
|
2012-04-10T14:03:47
|
|
repository: make git_repository_set_workdir() prettify the path it is being passed
|
|
dcfdb958
|
2012-04-11T12:38:45
|
|
Merge branch 'new-error-handling' of github.com:libgit2/libgit2 into new-error-handling
|
|
4615f0f7
|
2012-04-09T03:22:14
|
|
branch: add git_branch_move()
|
|
555aa453
|
2012-04-09T02:28:31
|
|
fileops: Make git_futils_mkdir_r() able to skip non-empty directories
|
|
731df570
|
2012-04-04T15:57:19
|
|
Add basic branch management API: git_branch_create(), git_branch_delete(), git_branch_list()
|
|
79fd4230
|
2012-04-06T15:23:18
|
|
transport/local: Fix peeling of nested tags
|
|
3f46f313
|
2012-04-06T14:34:26
|
|
tag: Add git_tag_peel() which recursively peel a tag until a non tag git_object is met
|
|
8e8b6b01
|
2012-04-04T13:13:43
|
|
Clean up valgrind warnings
|
|
73fe6a8e
|
2012-03-28T18:59:12
|
|
error-handling: Commit (WIP)
|
|
09719c50
|
2012-03-14T12:13:03
|
|
reference: Fix creation of references with extended ASCII characters in their name
|
|
952f94c8
|
2012-03-30T14:42:23
|
|
Fix bug when join_n refers to original buffer
There was a bug in git_buf_join_n when the contents of the
original buffer were joined into itself and the realloc
moved the pointer to the original buffer.
|
|
95dfb031
|
2012-03-30T14:40:50
|
|
Improve config handling for diff,submodules,attrs
This adds support for a bunch of core.* settings that affect
diff and status, plus fixes up some incorrect implementations
of those settings from before. Also, this cleans up the
handling of config settings in the new submodules code and
in the old attrs/ignore code.
|
|
bfc9ca59
|
2012-03-28T16:45:36
|
|
Added submodule API and use in status
When processing status for a newly checked out repo, it is
possible that there will be submodules that have not yet been
initialized. The only way to distinguish these from untracked
directories is to have some knowledge of submodules. This
commit adds a new submodule API which, given a name or path,
can determine if it appears to be a submodule and can give
information about the submodule.
|
|
277e3041
|
2012-03-26T11:22:27
|
|
Fix handling of submodules in trees
|
|
1db12b00
|
2012-03-25T23:04:26
|
|
Eliminate hairy COITERATE macro
I decided that the COITERATE macro was, in the end causing
more confusion that it would save and decided just to write
out the loops that I needed for parallel diff list iteration.
It is not that much code and this just feels less obfuscated.
|
|
875bfc5f
|
2012-03-25T21:26:48
|
|
Fix error in tree iterator when popping up trees
There was an error in the tree iterator where it would
delete two tree levels instead of just one when popping
up a tree level. Unfortunately the test data for the
tree iterator did not have any deep trees with subtrees
in the middle of the tree items, so this problem went
unnoticed. This contains the 1-line fix plus new test
data and tests that reveal the issue.
|
|
c8838ee9
|
2012-03-23T11:03:01
|
|
Restore default status recursion behavior
This gives `git_status_foreach()` back its old behavior of
emulating the "--untracked=all" behavior of git. You can
get any of the various --untracked options by passing flags
to `git_status_foreach_ext()` but the basic version will
keep the behavior it has always had.
|
|
4b136a94
|
2012-03-23T09:26:09
|
|
Fix crash in new status and add recurse option
This fixes the bug that @nulltoken found (thank you!) where
if there were untracked directories alphabetically after the
last tracked item, the diff implementation would deref a NULL
pointer.
The fix involved the code which decides if it is necessary
to recurse into a directory in the working dir, so it was
easy to add a new option `GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS`
to control if the contents of untracked directories should be
included in status.
|
|
66142ae0
|
2012-03-22T10:44:36
|
|
New status fixes
This adds support for roughly-right tracking of submodules
(although it does not recurse into submodules to detect
internal modifications a la core git), and it adds support
for including unmodified files in diff iteration if requested.
|
|
a48ea31d
|
2012-03-21T12:33:09
|
|
Reimplment git_status_foreach using git diff
This is an initial reimplementation of status using diff a la
the way that core git does it.
|
|
a4c291ef
|
2012-03-20T21:57:38
|
|
Convert reflog to new errors
Cleaned up some other issues.
|
|
4aa7de15
|
2012-03-19T17:49:46
|
|
Convert indexer, notes, sha1_lookup, and signature
More files moved to new error handling style.
|
|
7c7ff7d1
|
2012-03-19T16:10:11
|
|
Migrate index, oid, and utils to new errors
This includes a few cleanups that came up while converting
these files.
This commit introduces a could new git error classes, including
the catchall class: GITERR_INVALID which I'm using as the class
for invalid and out of range values which are detected at too low
a level of library to use a higher level classification. For
example, an overflow error in parsing an integer or a bad letter
in parsing an OID string would generate an error in this class.
|
|
0d0fa7c3
|
2012-03-16T15:56:01
|
|
Convert attr, ignore, mwindow, status to new errors
Also cleaned up some previously converted code that still had
little things to polish.
|
|
7b93079b
|
2012-03-16T15:16:52
|
|
Make git_path_root() cope with windows network paths
Fix libgit2/libgit2sharp#125
|
|
deafee7b
|
2012-03-14T17:36:15
|
|
Continue error conversion
This converts blob.c, fileops.c, and all of the win32 files.
Also, various minor cleanups throughout the code. Plus, in
testing the win32 build, I cleaned up a bunch (although not
all) of the warnings with the 64-bit build.
|
|
ab43ad2f
|
2012-03-14T11:07:14
|
|
Convert attr and other files to new errors
This continues to add other files to the new error handling
style. I think the only real concerns here are that there are
a couple of error return cases that I have converted to asserts,
but I think that it was the correct thing to do given the new
error style.
|
|
e3c47510
|
2012-03-13T14:23:24
|
|
Resolve comments from pull request
This converts the map validation function into a macro, tweaks
the GITERR_OS system error automatic appending, and adds a
tentative new error access API and some quick unit tests for
both the old and new error APIs.
|
|
1736799d
|
2012-03-12T23:06:31
|
|
Add map.c with shared p_mmap param validation
Forgot to add this file in the previous commit
|