|
cb8a7961
|
2012-03-07T00:02:55
|
|
error-handling: Repository
This also includes droping `git_buf_lasterror` because it makes no sense
in the new system. Note that in most of the places were it has been
dropped, the code needs cleanup. I.e. GIT_ENOMEM is going away, so
instead it should return a generic `-1` and obviously not throw
anything.
|
|
9d160ba8
|
2012-03-06T01:37:56
|
|
diff: Fix rebase breackage
|
|
1a481123
|
2012-02-17T00:13:34
|
|
error-handling: References
Yes, this is error handling solely for `refs.c`, but some of the
abstractions leak all ofer the code base.
|
|
45d387ac
|
2012-02-15T16:54:17
|
|
refs: Error handling rework. WIP
|
|
60bc2d20
|
2012-02-14T21:23:11
|
|
error-handling: Add new routines
Obviously all the old throw routines are still in place, so we can
gradually port over.
|
|
529df4df
|
2012-03-02T15:57:06
|
|
Fixes for merge of filters branch
|
|
e1bcc191
|
2012-03-01T11:45:00
|
|
Revert GIT_STATUS constants to avoid issues
This reverts the changes to the GIT_STATUS constants and adds a
new enumeration to describe the type of change in a git_diff_delta.
I don't love this solution, but it should prevent strange errors
from occurring for now. Eventually, I would like to unify the
various status constants, but it needs a larger plan and I just
wanted to eliminate this breakage quickly.
|
|
c19bc93c
|
2012-02-29T14:19:39
|
|
Fixing memory leaks indicated by valgrind
This clears up the memory leaks that valgrind seems to find on
my machine.
|
|
da9abdd6
|
2012-02-29T13:19:31
|
|
Fix a win32 warning message
|
|
854eccbb
|
2012-02-29T12:04:59
|
|
Clean up GIT_UNUSED macros on all platforms
It turns out that commit 31e9cfc4cbcaf1b38cdd3dbe3282a8f57e5366a5
did not fix the GIT_USUSED behavior on all platforms. This commit
walks through and really cleans things up more thoroughly, getting
rid of the unnecessary stuff.
To remove the use of some GIT_UNUSED, I ended up adding a couple
of new iterators for hashtables that allow you to iterator just
over keys or just over values.
In making this change, I found a bug in the clar tests (where we
were doing *count++ but meant to do (*count)++ to increment the
value). I fixed that but then found the test failing because it
was not really using an empty repo. So, I took some of the code
that I wrote for iterator testing and moved it to clar_helpers.c,
then made use of that to make it easier to open fixtures on a
per test basis even within a single test file.
|
|
a2e895be
|
2012-02-07T12:14:28
|
|
Continue implementation of git-diff
* Implemented git_diff_index_to_tree
* Reworked git_diff_options structure to handle more options
* Made most of the options in git_diff_options actually work
* Reorganized code a bit to remove some redundancy
* Added option parsing to examples/diff.c to test most options
|
|
5a2f097f
|
2012-02-03T17:05:05
|
|
Fix minor WIN32 incompatibility
File mode flags are not all defined on WIN32, but since git
is so rigid in how it uses file modes, there is no reason not
to hard code a particular value. Also, this is only used in
the git_diff_print_compact helper function, so it is really
really not important.
|
|
74fa4bfa
|
2012-02-28T16:14:47
|
|
Update diff to use iterators
This is a major reorganization of the diff code. This changes
the diff functions to use the iterators for traversing the
content. This allowed a lot of code to be simplified. Also,
this moved the functions relating to outputting a diff into a
new file (diff_output.c).
This includes a number of other changes - adding utility
functions, extending iterators, etc. plus more tests for the
diff code. This also takes the example diff.c program much
further in terms of emulating git-diff command line options.
|
|
e47329b6
|
2012-02-13T17:29:30
|
|
First pass of diff index to workdir implementation
This is an initial version of git_diff_workdir_to_index. It
also includes renaming some structures and some refactoring
of the existing code so that it could be shared better with
the new function.
This is not complete since it needs a rebase to get some
new odb functions from the upstream branch.
|
|
caf71ec0
|
2012-02-07T15:30:18
|
|
Add tests and fix bugs for diff whitespace options
Once I added tests for the whitespace handling options of
diff, I realized that there were some bugs. This fixes
those and adds the new tests into the test suite.
|
|
3a437590
|
2012-02-03T16:53:01
|
|
Clean up diff implementation for review
This fixes several bugs, updates tests and docs, eliminates the
FILE* assumption in favor of printing callbacks for the diff patch
formatter helpers, and adds a "diff" example function that can
perform a diff from the command line.
|
|
65b09b1d
|
2012-02-02T18:03:43
|
|
Implement diff lists and formatters
This reworks the diff API to separate the steps of producing
a diff descriptions from formatting the diff. This will allow
us to share diff output code with the various diff creation
scenarios and will allow us to implement rename detection as
an optional pass that can be run on a diff list.
|
|
cd33323b
|
2012-01-27T11:29:25
|
|
Initial implementation of git_diff_blob
This gets the basic plumbing in place for git_diff_blob.
There is a known issue where additional parameters like
the number of lines of context to display on the diff
are not working correctly (which leads one of the new
unit tests to fail).
|
|
8b75f7f3
|
2012-01-24T14:08:20
|
|
Eliminate xdiff compiler warnings
This cleans up the various GCC compiler warnings with the
xdiff code that was copied in.
|
|
2705576b
|
2012-01-24T14:06:42
|
|
Simplify GIT_UNUSED macros
Since casting to void works to eliminate errors with unused
parameters on all platforms, avoid the various special cases.
Over time, it will make sense to eliminate the GIT_UNUSED
macro completely and just have GIT_UNUSED_ARG.
|
|
3a5ad90a
|
2012-01-24T12:23:20
|
|
Import xdiff library from git
This is the initial import of the xdiff code (LGPL) from
core git as of rev f349b562086e2b7595d8a977d2734ab2ef9e71ef
|
|
e3d55b2a
|
2012-03-02T15:44:15
|
|
Merge pull request #575 from libgit2/filters
Filters, yo
|
|
ce49c7a8
|
2012-03-02T15:09:40
|
|
Add filter tests and fix some bugs
This adds some initial unit tests for file filtering and fixes
some simple bugs in filter application.
|
|
97da3eae
|
2012-03-02T21:12:00
|
|
config: Add missing file
|
|
f2c25d18
|
2012-03-02T20:08:00
|
|
config: Implement a proper cvar cache
|
|
c63793ee
|
2012-03-02T03:51:45
|
|
attr: Change the attribute check macros
The point of having `GIT_ATTR_TRUE` and `GIT_ATTR_FALSE` macros is to be
able to change the way that true and false values are stored inside of
the returned gitattributes value pointer.
However, if these macros are implemented as a simple rename for the
`git_attr__true` pointer, they will always be used with the `==`
operator, and hence we cannot really change the implementation to any
other way that doesn't imply using special pointer values and comparing
them!
We need to do the same thing that core Git does, which is using a
function macro. With `GIT_ATTR_TRUE(attr)`, we can change
internally the way that these values are stored to anything we want.
This commit does that, and rewrites a large chunk of the attributes test
suite to remove duplicated code for expected attributes, and to
properly test the function macro behavior instead of comparing
pointers.
|
|
47a899ff
|
2012-03-01T21:19:51
|
|
filter: Beautiful refactoring
Comments soothe my soul.
|
|
788430c8
|
2012-03-01T05:06:47
|
|
filter: Properly cache filter settings
|
|
c5266eba
|
2012-03-01T01:16:25
|
|
filter: Precache the filter config options on load
|
|
c5e94482
|
2012-03-01T00:52:21
|
|
config: Refactor & add `git_config_get_mapped`
Sane API for real-world usage.
|
|
27950fa3
|
2012-02-29T01:26:03
|
|
filter: Add write-to CRLF filter
|
|
450b40ca
|
2012-02-28T01:13:32
|
|
filter: Load attributes for file
|
|
f7367993
|
2012-02-27T22:22:45
|
|
revwalk: add convenience function to push/hide HEAD
It's not unusual to want the walker to act on HEAD, so add a
convencience function for the case that the user doesn't already have
a resolved HEAD reference.
|
|
155aca2d
|
2012-02-27T21:17:13
|
|
revwalk: introduce pushing and hiding by glob
git_revwalk_{push,hide}_glob() lets you push the OIDs of references
that match the specified glob. This is the basics for what git.git
does with the rev-list options --branches, --tags, --remotes and
--glob.
|
|
eb8f90e5
|
2012-02-27T17:22:51
|
|
buffer: Null terminate on rtrim
|
|
44b1ff4c
|
2012-02-27T04:31:05
|
|
filter: Apply filters before writing a file to the ODB
Initial implementation. The relevant code is in `blob.c`: the blob write
function has been split into smaller functions.
- Directly write a file to the ODB in streaming mode
- Directly write a symlink to the ODB in direct mode
- Apply a filter, and write a file to the ODB in direct mode
When trying to write a file, we first call `git_filter__load_for_file`,
which populates a filters array with the required filters based on the
filename.
If no filters are resolved to the filename, we can write to the ODB in
streaming mode straight from disk. Otherwise, we load the whole file in
memory and use double-buffering to apply the filter chain. We finish
by writing the file as a whole to the ODB.
|
|
13224ea4
|
2012-02-27T04:28:31
|
|
buffer: Unify `git_fbuffer` and `git_buf`
This makes so much sense that I can't believe it hasn't been done
before. Kill the old `git_fbuffer` and read files straight into
`git_buf` objects.
Also: In order to fully support 4GB files in 32-bit systems, the
`git_buf` implementation has been changed from using `ssize_t` for
storage and storing negative values on allocation failure, to using
`size_t` and changing the buffer pointer to a magical pointer on
allocation failure.
Hopefully this won't break anything.
|
|
8171998f
|
2012-02-26T19:15:36
|
|
Add git_remote_list()
Loops through the configuration and generates a list of configured
remotes.
|
|
0a43d7cb
|
2012-02-25T18:52:28
|
|
config: correctly deal with setting a multivar with regex where there are no matches
We used to erroneously consider "^$" as a special case for appending a
value to a multivar. This was a misunderstanding and we should always
append a value if there are no existing values that match.
While we're in the area, replace all the variables in-memory in one
swoop and then replace them on disk so as to avoid matching a value
we've just introduced.
|
|
9554cd51
|
2012-02-24T12:14:26
|
|
A remote exists with an URL alone
We used to consider it an error if a remote didn't have at least a
fetch refspec. This was too much checking, as a remote doesn't in fact
need to have anything other than an URL configured to be considered
a remote.
|
|
1db9d2c3
|
2012-02-23T17:11:20
|
|
Ensure that commits don't fail if committing content that already exists
Making a commit that results in a blob that already exists in the ODB (i.e.
committing something, then making a revert commit) will result in us trying
to p_rename -> MoveFileExW a temp file into the existing ODB entry. Despite
the MOVEFILE_REPLACE_EXISTING flag is passed in, Win32 does not care and
fails it with STATUS_ACCESS_DENIED.
To fix this, we p_unlink the ODB entry before attempting to rename it. This
call will typically fail, but we don't care, we'll let the p_rename fail if
the file actually does exist and we couldn't delete it for some reason (ACLs,
etc).
|
|
82ccb87e
|
2012-02-23T22:56:04
|
|
tree: break out on write error
If write_tree() returs an error, we used to set the error message and
continued looping. Exit the loop so we return the error.
|
|
290f240e
|
2012-02-23T11:16:47
|
|
Fix readdir usage across platforms
This fixes the missing readdir_r from win32 and fixes other
platforms to always use the reentrant readdir_r form for reading
directory contents.
|
|
1ec1de6d
|
2012-02-23T11:15:45
|
|
Fix warnings about type conversion on win32
|
|
01269540
|
2012-02-23T16:51:07
|
|
Fix -Wuninitialized warning
Signed-off-by: schu <schu-github@schulog.org>
|
|
36d72a51
|
2012-02-22T16:06:33
|
|
Merge pull request #570 from arrbee/uniform-iterators
Uniform iterators for trees, index, and workdir
|
|
0534641d
|
2012-02-22T15:15:35
|
|
Fix iterators based on pull request feedback
This update addresses all of the feedback in pull request #570.
The biggest change was to create actual linked list stacks for
storing the tree and workdir iterator state. This cleaned up
the code a ton. Additionally, all of the static functions had
their 'git_' prefix removed, and a lot of other unnecessary
changes were removed from the original patch.
|
|
da337c80
|
2012-02-22T11:22:33
|
|
Iterator improvements from diff implementation
This makes two changes to iterator behavior: first, advance
can optionally do the work of returning the new current value.
This is such a common pattern that it really cleans up usage.
Second, for workdir iterators, this removes automatically
iterating into directories. That seemed like a good idea,
but when an entirely new directory hierarchy is introduced
into the workdir, there is no reason to iterate into it if
there are no corresponding entries in the tree/index that it
is being compared to.
This second change actually wasn't a lot of code because not
descending into directories was already the behavior for
ignored directories. This just extends that to all directories.
|
|
8d36b253
|
2012-02-22T11:12:20
|
|
Merge pull request #565 from carlosmn/multimap
Add config multivar support
|
|
b60deb02
|
2012-02-22T04:41:08
|
|
Export parse_tag_buffer as git_tag__parse_buffer.
|
|
b6c93aef
|
2012-02-21T14:46:24
|
|
Uniform iterators for trees, index, and workdir
This create a new git_iterator type of object that provides a
uniform interface for iterating over the index, an arbitrary
tree, or the working directory of a repository.
As part of this, git ignore support was extended to support
push and pop of directory-based ignore files as the working
directory is being traversed (so the array of ignores does
not have to be recreated at each directory during traveral).
There are a number of other small utility functions in buffer,
path, vector, and fileops that are included in this patch
that made the iterator implementation cleaner.
|
|
9c94a356
|
2012-02-21T12:15:23
|
|
Fix check for writing remote's fetch and push configurations
Fix copy-paste error
|
|
f0f3a18a
|
2012-02-20T19:42:27
|
|
Move git_remote_load() to git_buf
|
|
89e5ed98
|
2012-02-20T19:04:45
|
|
Add git_remote_save()
|
|
bcb8c007
|
2012-02-20T18:37:07
|
|
Add git_remote_set_{fetch,push}spec()
Allow setting the fetch and push refspecs, which is useful for
creating new refspecs.
|
|
3005855f
|
2012-02-05T00:29:26
|
|
Implement setting multivars
|
|
5e0dc4af
|
2012-02-04T23:18:30
|
|
Support getting multivars
|
|
0774d94d
|
2012-02-01T17:21:28
|
|
Store multivars in the multimap
|
|
fefd4551
|
2012-01-23T04:26:49
|
|
First round of config multimap changes
Move the configuration to use a multimap instead of a list. This
commit doesn't provide any functional changes but changes the support
structures.
|
|
0691966a
|
2012-02-16T11:48:14
|
|
notes: fix assert
Hopefully fix issue "Don't sleep and code" - #558.
Signed-off-by: schu <schu-github@schulog.org>
|
|
6117895f
|
2012-02-15T11:38:40
|
|
Merge pull request #558 from schu/notes-api
Notes API
|
|
bf477ed4
|
2012-02-15T00:33:38
|
|
Add git notes API
This commit adds basic git notes support to libgit2, namely:
* git_note_read
* git_note_message
* git_note_oid
* git_note_create
* git_note_remove
In the long run, we probably want to provide some convenience callback
mechanism for merging and moving (filter-branch) notes.
Signed-off-by: schu <schu-github@schulog.org>
|
|
0c3bae62
|
2012-02-15T16:56:56
|
|
zlib: Remove custom `git2/zlib.h` header
This is legacy compat stuff for when `deflateBound` is not defined, but
we're not embedding zlib and that function is always available. Kill
that with fire.
|
|
905919e6
|
2012-02-14T20:44:22
|
|
util: add git__ishex
git__ishex allows to check if a string is a hexadecimal representation.
Signed-off-by: schu <schu-github@schulog.org>
|
|
b4b79ac3
|
2012-02-15T00:12:53
|
|
commit: actually allow yet to be born update_ref
git_commit_create is supposed to update the given reference
"update_ref", but segfaulted in case of a yet to be born
reference. Fix it.
Signed-off-by: schu <schu-github@schulog.org>
|
|
5e0de328
|
2012-02-13T17:10:24
|
|
Update Copyright header
Signed-off-by: schu <schu-github@schulog.org>
|
|
15f52ae1
|
2011-12-19T15:59:13
|
|
config_file: fix clang sizeof-pointer-memaccess
|
|
6d39c0dd
|
2012-02-11T06:44:54
|
|
Merge pull request #554 from carlosmn/revwalk-reset
revwalk: unmark commits as uninteresting on reset
|
|
f19e3ca2
|
2012-02-10T20:16:42
|
|
odb: Proper symlink hashing
|
|
18e5b854
|
2012-02-10T19:47:02
|
|
odb: Add internal `git_odb__hashfd`
|
|
97313ce2
|
2012-02-07T10:51:57
|
|
revwalk: unmark commits as uninteresting on reset
Not doing so hides commits we want to get at during a second walk.
|
|
199b7d94
|
2012-02-05T07:42:06
|
|
Merge pull request #551 from schu/treebuilder-entries
treebuilder: remove needless variable entry_count
|
|
b3408e3e
|
2012-02-05T14:59:45
|
|
treebuilder: remove needless variable entry_count
Signed-off-by: schu <schu-github@schulog.org>
|
|
99abb79d
|
2012-02-03T12:45:43
|
|
repository: ensure that the path to the .git directory ends with a forward slash when opening a repository through a working directory path
This fixes an issue which was detected while using one of the libgit2 bindings [0]. The lack of the trailing forward slash led the name of references returned by git_reference_listall() to be prefixed with a forward slash.
[0]: https://github.com/libgit2/libgit2sharp/pull/108
|
|
31ffc141
|
2012-02-02T00:14:59
|
|
Fix the build on Emscripten
struct timeval is used in this file, which requires <sys/time.h> to be
included.
|
|
e8c96ed2
|
2012-02-01T12:30:35
|
|
Add unit tests for recent bug fixes
Add unit tests to confirm ignore directory pattern matches and
to confirm that ignore and attribute files are loaded properly
into the attribute file cache.
|
|
62a1f713
|
2012-02-01T11:54:42
|
|
Fix memory leak in attr file cache
Actually look for the file by the same cache key that we
store it under. Rocket science!
|
|
4ea79a9d
|
2012-02-01T17:41:54
|
|
status: Document submodule TODOs
|
|
e4eb94a2
|
2012-01-31T14:02:52
|
|
Fix issue with ignoring whole directories
Now that is_dir is calculated correctly for attr/ignore paths,
it is possible to use it so that ignoring "dir/" will properly
match the directory name and ignore the entire directory.
|
|
adc9bdb3
|
2012-01-31T13:59:32
|
|
Fix attr path is_dir check
When building an attr path object, the code that checks if the
file is a directory was evaluating the file as a relative path
to the current working directory, instead of using the repo root.
This lead to inconsistent behavior.
|
|
5d3cd4e3
|
2012-01-31T13:09:39
|
|
Convert status assert to skip file
When status encounters a submodule, right now it is asserting.
This changes it to just skip the file that it can't deal with.
|
|
279afd2a
|
2012-01-31T17:21:49
|
|
refspec: a ref name includes the refs/ prefix
git_refspec_transform_r assumed that the reference name passed would
be only a branch or tag name. This is not the case, and we need to
take into consideration what's in the refspec's source to know how
much of the prefix to ignore.
|
|
e4b4da14
|
2012-01-27T18:28:02
|
|
cache: Simplify locking mechanics
The object cache is mostly IO-bound, so it makes no sense to have a lock
per node.
|
|
7a6f51de
|
2012-01-26T18:03:14
|
|
win32: Use the Windows Atomic API on MinGW too
|
|
a53420e4
|
2012-01-26T17:53:46
|
|
msvc: Move `ssize_t` typedef to MSVC-only
This is a MSVC-only issue. All other compilers we support work properly.
|
|
5663e61a
|
2012-01-25T16:44:21
|
|
repository: add minimal reinitialization of repository
This currently only ensures that the version of the repository format isn't greater than zero.
|
|
a9fe8ae0
|
2012-01-23T22:14:04
|
|
config: don't use 'section "subsection"' internal form on config_set
This had been left over from a time when I believed what the git
documentation had to say about case-sensitivity. The rest of the code
doesn't recognize this form and we hadn't noticed because most tests
don't try to get a recently-set variable but free and reload the
configuration, causing the right format to be used.
|
|
63ab73be
|
2012-01-20T11:13:17
|
|
Merge branch 'fix-subdir-attr-paths' into development
This resolves issue #535 and issue #533.
|
|
9269ccce
|
2012-01-19T23:44:52
|
|
diff-index: fix leak
The buffer wasn't getting freed if the last difference was a deletion.
|
|
860de004
|
2012-01-19T23:26:20
|
|
http: use PRIuZ
MSVC doesn't think %zd is a valid specifier.
|
|
20c50b9e
|
2012-01-19T19:09:47
|
|
refs: don't leak the packref when deleting/renaming
When we remove the ref from the hashtable, we need to free the
packref.
|
|
3f2bf4d6
|
2012-01-19T19:06:15
|
|
hashtable: add remove2 to retrieve the value that was removed
|
|
d0ec3fb8
|
2012-01-19T17:07:49
|
|
indexer: save the pack index with the right name
Truncate at the slash; otherwise we get ppack-*.idx filenames.
|
|
585a2eb7
|
2012-01-19T17:05:16
|
|
remote: don't try to free the ref on error
On error, the pointer could be pointing anywhere.
|
|
c3ec2ec2
|
2012-01-19T00:09:47
|
|
transport: prevent git_remote_download() from segfaulting when being passed a lightweight remote built with git_remote_new()
|
|
1744fafe
|
2012-01-17T15:49:47
|
|
Move path related functions from fileops to path
This takes all of the functions that look up simple data about
paths (such as `git_futils_isdir`) and moves them over to path.h
(becoming `git_path_isdir`). This leaves fileops.h just with
functions that actually manipulate the filesystem or look at
the file contents in some way.
As part of this, the dir.h header which is really just for win32
support was moved into win32 (with some minor changes).
|
|
0b44c065
|
2012-01-17T14:35:04
|
|
repository: add the invalid repository path to the error message
|
|
86360ffd
|
2012-01-17T14:33:26
|
|
transport: prevent the transport determination mechanism from segfaulting when being passed an url starting with an unknown prefix
|
|
fdc8a7db
|
2012-01-17T14:06:35
|
|
Fix MSVC compilation warning
|
|
83bfbdf5
|
2012-01-16T18:00:18
|
|
Remove poor git__removechar function
Going back over this, the git__removechar function was not
needed (only invoked once) and is actually mislabeled. As
implemented, it really only made sense for removing backslash
characters, since two of the "removed" characters in a row
would include the second one -- i.e. it really implements
stripping backslash-escaped strings where a backslash allows
internal whitespace in a word.
|