|
cfc17dc4
|
2012-06-09T17:43:18
|
|
Add a test showing that git_status_file gets confused by spaces in .gitignore
|
|
145e696b
|
2012-06-08T11:56:24
|
|
Minor fixes, cleanups, and clarifications
There are three actual changes in this commit:
1. When the trailing newline of a file is removed in a diff, the
change will now be reported with `GIT_DIFF_LINE_DEL_EOFNL` passed
to the callback. Previously, the `ADD_EOFNL` constant was given
which was just an error in my understanding of when the various
circumstances arose. `GIT_DIFF_LINE_ADD_EOFNL` is deprecated and
should never be generated. A new newline is simply an `ADD`.
2. Rewrote the `diff_delta__merge_like_cgit` function that contains
the core logic of the `git_diff_merge` implementation. The new
version doesn't actually have significantly different behavior,
but the logic should be much more obvious, I think.
3. Fixed a bug in `git_diff_merge` where it freed a string pool
while some of the string data was still in use. This led to
`git_diff_print_patch` accessing memory that had been freed.
The rest of this commit contains improved documentation in `diff.h`
to make the behavior and the equivalencies with core git clearer,
and a bunch of new tests to cover the various cases, oh and a minor
simplification of `examples/diff.c`.
|
|
0abd7244
|
2012-06-04T16:17:41
|
|
Fix filemode comparison in diffs
File modes were both not being ignored properly on platforms
where they should be ignored, nor be diffed consistently on
platforms where they are supported.
This change adds a number of diff and status filemode change
tests. This also makes sure that filemode-only changes are
included in the diff output when they occur and that filemode
changes are ignored successfully when core.filemode is false.
There is no code that automatically toggles core.filemode
based on the capabilities of the current platform, so the user
still needs to be careful in their .git/config file.
|
|
e272efcb
|
2012-06-08T11:24:37
|
|
Tests: wrap 'getenv' and friends for Win32 tests.
|
|
3f035860
|
2012-06-07T22:43:03
|
|
misc: Fix warnings from PVS Studio trial
|
|
763b8381
|
2012-06-07T13:22:50
|
|
Fixing rev-parse-induced Travis errors.
|
|
6c08e69f
|
2012-06-07T12:30:20
|
|
Merge pull request #669 from nulltoken/topic/reset
Add git_reset()
|
|
b9ebcc59
|
2012-06-07T12:29:31
|
|
Merge pull request #684 from benstraub/rev-parse
Rev parse
|
|
edebceff
|
2012-05-01T13:57:45
|
|
Add git_reset()
Currently supports Soft and Mixed modes.
|
|
cddb8efe
|
2012-06-07T11:34:48
|
|
Merge pull request #704 from nulltoken/topic/blob_fromchunks
Add the ability to create blob given a provider of chunks of bytes
|
|
cd445767
|
2012-05-27T15:00:05
|
|
blob: add git_blob_create_fromchunks()
|
|
5bb54582
|
2012-06-07T09:44:08
|
|
Merge pull request #752 from nulltoken/fix/warning
Fix compilation warning and failing test
|
|
8e60c712
|
2012-06-07T09:50:19
|
|
Fix git_status_file for files that start with a character > 0x7f
git_status_file would always return GIT_ENOTFOUND for these files.
The underlying bug was that git__strcmp_cb, which is used by
git_path_with_stat_cmp to sort entries in the working directory,
compares strings based on unsigned chars (this is confirmed by the
strcmp(3) manpage), while git__prefixcmp, which is used by
workdir_iterator__entry_cmp to search for a path in the working
directory, compares strings based on char. So the sort puts this path at
the end of the list, while the search expects it to be at the beginning.
The fix was simply to make git__prefixcmp compare using unsigned chars,
just like strcmp(3). The rest of the change is just adding/updating
tests.
|
|
6654dbe3
|
2012-06-07T14:09:25
|
|
tests: fix assertion
|
|
36c08022
|
2012-06-06T12:39:29
|
|
Omit failing test on 32-bit machines.
This test is intended to verify that 64-bit
machines can handle parsing dates in 2039 and
beyond, and fails on 32-bit machines. It is now
omitted when run on a 32-bit machine to eliminate
an expected failure.
|
|
8a385c04
|
2012-06-06T12:25:22
|
|
Move git__date_parse declaration to util.h.
|
|
eadc0e03
|
2012-06-05T13:41:13
|
|
Merge pull request #747 from nulltoken/topic/init-filemode
Make git_repository_init() value "core.filemode" and "core.ignorecase"
|
|
693b23c0
|
2012-06-05T14:29:10
|
|
repository: make git_repository_init() value the core.ignorecase config entry
|
|
a146ba9e
|
2012-06-05T22:16:08
|
|
tests: Fix warning with nested comments
|
|
56a5000d
|
2012-06-05T12:52:44
|
|
Merge branch 'development' into rev-parse
Conflicts:
src/util.h
tests-clar/refs/branches/listall.c
|
|
fac66990
|
2012-06-05T13:56:44
|
|
repository: make git_repository_init() value the core.filemode config entry
|
|
01dbe273
|
2012-06-04T15:10:29
|
|
Merge pull request #737 from nulltoken/topic/git_remote_add_refspec
Remotes and refspecs
|
|
d27bf665
|
2012-05-30T00:50:39
|
|
remote: Make git_remote_add() generate a default refspec with a force update specifier
|
|
36c88422
|
2012-06-02T16:48:12
|
|
Add a failing test case for git_remote_disconnect/git_remote_connected.
|
|
734efe4b
|
2012-06-01T14:18:52
|
|
Rev-parse: implement ":/foo" syntax.
|
|
2497106f
|
2012-06-01T11:41:54
|
|
Rev-parse: add test with deeper path.
|
|
244d2f6b
|
2012-05-30T16:52:11
|
|
Rev-parse: add "tag:README" syntax.
|
|
dd9e4abc
|
2012-05-30T11:46:42
|
|
Approxidate: use libgit2 naming/calling conventions.
Also use git_time_t (64-bit integer) for time
values, although the 2038 problem is still present
on 32-bit machines.
|
|
d05e2c64
|
2012-05-30T00:27:22
|
|
refspec: expose the force update specifier through git_refspec_force() accessor
|
|
dbab0459
|
2012-05-26T14:59:07
|
|
tests-clar/core: fix non-null warning
gcc 4.7.0 apparently doesn't see that we won't call setenv with NULL as
second argument.
|
|
29ef309e
|
2012-05-25T09:44:56
|
|
Make errors for system and global files consistent
The error codes from failed lookups of system and global files
on Windows were not consistent with the codes returned on other
platforms. This makes the error detection patterns match and
adds a unit test for the various errors.
|
|
2a99df69
|
2012-05-24T17:14:56
|
|
Fix bugs for status with spaces and reloaded attrs
This fixes two bugs:
* Issue #728 where git_status_file was not working for files
that contain spaces. This was caused by reusing the "fnmatch"
parsing code from ignore and attribute files to interpret the
"pathspec" that constrained the files to apply the status to.
In that code, unescaped whitespace was considered terminal to
the pattern, so a file with internal whitespace was excluded
from the matched files. The fix was to add a mode to that code
that allows spaces and tabs inside patterns. This mode only
comes into play when parsing in-memory strings.
* The other issue was undetected, but it was in the recently
added code to reload gitattributes / gitignores when they were
changed on disk. That code was not clearing out the old values
from the cached file content before reparsing which meant that
newly added patterns would be read in, but deleted patterns
would not be removed. The fix was to clear the vector of
patterns in a cached file before reparsing the file.
|
|
9cde607c
|
2012-05-24T15:08:55
|
|
Clean up system file finding tests on Win32
|
|
9e35d7fd
|
2012-05-24T13:44:24
|
|
Fix bugs in UTF-8 <-> UTF-16 conversion
The function to convert UTF-16 to UTF-8 was only allocating a
buffer of wcslen(utf16str) bytes for the UTF-8 string, but that
is not sufficient if you have multibyte characters, and so when
those occured, the conversion was failing. This updates the
conversion functions to use the Win APIs to calculate the correct
buffer lengths.
Also fixes a comparison in the unit tests that would fail if
you did not have a particular environment variable set.
|
|
23059130
|
2012-05-24T12:45:20
|
|
Get user's home dir in UTF-16 clean manner
On Windows, we are having problems with home directories
that have non-ascii characters in them. This rewrites the
relevant code to fetch environment variables as UTF-16 and
then explicitly map then into UTF-8 for our internal usage.
|
|
59d91979
|
2012-05-18T13:53:38
|
|
Merge pull request #710 from libgit2/breaking-changes
Break everything before the release
|
|
904b67e6
|
2012-05-18T01:48:50
|
|
errors: Rename error codes
|
|
e172cf08
|
2012-05-18T01:21:06
|
|
errors: Rename the generic return codes
|
|
2e2e9785
|
2012-05-18T00:42:24
|
|
Properly tag all `enums` with a `_t`
|
|
4fbd1c00
|
2012-05-17T20:35:48
|
|
refs: git_reference_listall -> git_reference_list
|
|
255c38c5
|
2012-05-10T11:50:29
|
|
global: Fix unit tests after reordering
|
|
392eced6
|
2012-05-11T22:22:14
|
|
branch: retrieve symbolic references when listing the branches
|
|
6e5c4af0
|
2012-05-17T14:21:10
|
|
Fix workdir iterators on empty directories
Creating a workdir iterator on a directory with absolutely
no files was returning an error (GIT_ENOTFOUND) instead of
an iterator for nothing. This fixes that and includes two
new tests that cover that case.
|
|
bd4ca902
|
2012-05-16T17:02:06
|
|
Fix status for files under ignored dirs
There was a bug where tracked files inside directories that were
inside ignored directories where not being found by status. To
make that a little clearer, if you have a .gitignore with:
ignore/
And then have the following files:
ignore/dir/tracked <-- actually a tracked file
ignore/dir/untracked <-- should be ignored
Then we would show the tracked file as being removed (because
when we got the to contained item "dir/" inside the ignored
directory, we decided it was safe to skip -- bzzt, wrong!).
This update is much more careful about checking that we are
not skipping over any prefix of a tracked item, regardless of
whether it is ignored or not.
As documented in diff.c, this commit does create behavior that
still differs from core git with regards to the handling of
untracked files contained inside ignored directories. With
libgit2, those files will just not show up in status or diff.
With core git, those files don't show up in status or diff
either *unless* they are explicitly ignored by a .gitignore
pattern in which case they show up as ignored files.
Needless to say, this is a local behavior difference only, so
it should not be important and (to me) the libgit2 behavior
seems more consistent.
|
|
ee7680d5
|
2012-05-16T21:21:24
|
|
notes: make git_note_foreach() callback signature easier to cope with from a binding perspective
|
|
cedf9ca9
|
2012-05-16T19:16:35
|
|
tree: Kill the `git_tree_diff` functions
These are deprecated and replaced with the diffing code in git2/diff.h
|
|
9d0011fd
|
2012-05-16T19:23:47
|
|
tree: Naming conventions
|
|
eb270884
|
2012-05-16T19:17:32
|
|
clar: Fix warning
|
|
41a82592
|
2012-05-15T14:17:39
|
|
Ranged iterators and rewritten git_status_file
The goal of this work is to rewrite git_status_file to use the
same underlying code as git_status_foreach.
This is done in 3 phases:
1. Extend iterators to allow ranged iteration with start and
end prefixes for the range of file names to be covered.
2. Improve diff so that when there is a pathspec and there is
a common non-wildcard prefix of the pathspec, it will use
ranged iterators to minimize excess iteration.
3. Rewrite git_status_file to call git_status_foreach_ext
with a pathspec that covers just the one file being checked.
Since ranged iterators underlie the status & diff implementation,
this is actually fairly efficient. The workdir iterator does
end up loading the contents of all the directories down to the
single file, which should ideally be avoided, but it is pretty
good.
|
|
d5ed6348
|
2012-05-14T22:24:58
|
|
Fix compilation warnings
|
|
86ecd844
|
2012-05-08T17:58:40
|
|
notes: add git_notes_foreach()
|
|
1c3a5a03
|
2012-05-14T11:25:55
|
|
Merge pull request #693 from nulltoken/topic/enhance_branch_move_test_coverage
branch: cover with test that moving a non existing branch returns ENOTFOUND
|
|
8c6329ee
|
2012-05-14T11:25:40
|
|
Merge pull request #692 from nulltoken/fix/delete-branch_ENOTFOUND
branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
|
|
c9e9ec97
|
2012-05-14T11:24:37
|
|
Merge pull request #688 from hanwen/master
See issue https://github.com/libgit2/libgit2/issues/680
|
|
e49cb168
|
2012-05-14T11:03:30
|
|
Merge pull request #671 from nulltoken/topic/blob_create_fromdisk
Add git_blob_create_fromdisk()
|
|
72bfde97
|
2012-05-14T11:01:14
|
|
Merge pull request #681 from scottjg/solaris-fixes
Fix build/runtime issues on Solaris
|
|
27f5b7cf
|
2012-05-14T10:58:23
|
|
Merge pull request #682 from arrbee/attribute-cache-buster
Attribute cache buster
|
|
212eb09d
|
2012-05-13T23:12:51
|
|
Add a test to verify FILENAME_MAX
Since we now rely on it (at least under Solaris), I figured we probably
want to make sure it's accurate. The new test makes sure that creating a
file with a name of length FILENAME_MAX+1 fails.
|
|
7327a090
|
2012-05-13T12:21:00
|
|
mergebase: enhance test code coverage
|
|
f0b350eb
|
2012-05-07T11:48:39
|
|
tests: make sure we clean up in objects/blob/write.c
|
|
6ca9643c
|
2012-05-06T21:00:20
|
|
blob: Add git_blob_create_fromdisk()
This function will create blobs in the object database from files anywhere on the filesystem. This can be run against bare and non-bare repositories.
|
|
48ce97dd
|
2012-05-13T11:03:29
|
|
branch: cover with test that moving a non existing branch returns ENOTFOUND
|
|
341a7136
|
2012-05-13T10:17:52
|
|
branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
|
|
24634c6f
|
2012-05-12T15:01:39
|
|
Handle duplicate objects from different backends in git_odb_read_prefix().
|
|
b72969e0
|
2012-05-12T01:51:58
|
|
Merge pull request #683 from arrbee/better-repo-init
Improve repo initialization to be more like git
|
|
e28c3776
|
2012-05-11T23:56:23
|
|
object: make git_object_lookup() return GIT_ENOTFOUND when searching for an existing object by specifying an incorrect type
This fix complements cb0ce16bbe8efe2098ef9cfffcf158301b036565 and cover the following additional use cases
- retrieving an object which has been previously searched, found and cached
- retrieving an object through an non ambiguous abbreviated id
|
|
7c22e72b
|
2012-05-11T12:21:58
|
|
Removing test whose results are platform-dependent.
|
|
db628072
|
2012-05-11T12:16:19
|
|
Fixed leaks and added tests
|
|
72b86bae
|
2012-05-11T11:58:02
|
|
Rev-parse: better error handling for chaining.
Fixed an error where "nonexistant^N" or similar
would fall into an assert. This now properly returns
an error.
|
|
92ad5a5c
|
2012-05-11T11:50:54
|
|
Rebasing onto libgit2/development: cleanup.
|
|
c8a33547
|
2012-05-10T14:12:30
|
|
Rev-parse: now capturing and reporting regex errors.
|
|
46c2ead0
|
2012-05-10T13:39:34
|
|
Now properly handling branches with "-g" in their names.
|
|
d13c1a8b
|
2012-05-10T09:48:14
|
|
Fixing broken tests.
|
|
a346992f
|
2012-05-10T09:47:14
|
|
Rev-parse: @{time} syntax.
Ported date.c (for approxidate_careful) from git.git
revision aa39b85. Trimmed out the parts we're not
using.
|
|
886f183a
|
2012-05-07T14:26:40
|
|
Rev-parse: "ref^{/regex}" syntax.
|
|
a6346302
|
2012-05-03T13:58:46
|
|
Rev-parse: "ref@{upstream}" syntax.
Added tracking configuration to the test repo's
config to support unit tests.
|
|
27ee8483
|
2012-05-02T14:41:19
|
|
Rev-parse: plugging (most) memory leaks.
|
|
5748fdee
|
2012-05-01T14:34:05
|
|
Rev-parse chaining: adding the longest chain
in the test repo.
|
|
a51bdbcf
|
2012-04-30T20:21:45
|
|
Implementing rev-parse's ref@{n} and @{-n} syntaxes.
Added some reflags to the test repo to support
unit tests.
|
|
38533d5a
|
2012-04-27T14:11:12
|
|
Implementing rev-parse's "ref~2" syntax.
Also extended the test suite to include chaining
operators, e.g. "master^2~3^4".
|
|
7149a625
|
2012-04-27T13:53:28
|
|
Returning error if dereferencing operation fails.
|
|
387d01b8
|
2012-04-27T11:47:29
|
|
Implemented rev-parse "^{type}" syntax.
|
|
9d7bdf71
|
2012-04-26T18:15:43
|
|
Implemented rev-parse's "^{}" syntax.
|
|
f597ea89
|
2012-04-26T13:06:46
|
|
Implemented partial caret syntax for rev-parse.
Supported forms:
- "^n"
- "^0"
- "^"
Still missing: all of the "^{…}" variants.
|
|
023c6f69
|
2012-04-25T19:08:17
|
|
Simpler states and initial structure.
New tests for "foo^2" syntax, but they don't pass
yet. Support for chaining these, i.e.
"foo^2~3^{u}~1' is starting to shape up.
|
|
ac250c56
|
2012-04-25T16:24:22
|
|
First stab at implementation of rev-parse.
This version supports refspecs of these kinds:
- Full & partial SHAs
- Output from "git describe"
- "/refs/heads/master" (full ref names)
- "master" (partial ref names)
- "FETCH_HEAD" (named heads)
|
|
a7c09c0d
|
2012-05-10T11:15:37
|
|
Fixed mode on clar
|
|
dc13f1f7
|
2012-05-10T11:08:59
|
|
Add cache busting to attribute cache
This makes the git attributes and git ignores cache check
stat information before using the file contents from the
cache. For cached files from the index, it checks the SHA
of the file instead. This should reduce the need to ever
call `git_attr_cache_flush()` in most situations.
This commit also fixes the `git_status_should_ignore` API
to use the libgit2 standard parameter ordering.
|
|
a9d9965b
|
2012-05-09T22:54:24
|
|
clar: Update from upstream
|
|
1956693f
|
2012-05-09T21:14:49
|
|
Fix MSVC compilation issue
exp() is already defined in math.h. This leads to LMSVC complaining
..\..\libgit2\tests-clar\diff\blob.c(5): error C2365: 'exp' : redefinition; previous definition was 'function'
Renaming the variable fixes this issue.
|
|
b470019f
|
2012-05-09T18:01:23
|
|
tests-clar/diff: fix missing-prototype warning
|
|
e65752bb
|
2012-05-08T16:06:27
|
|
Merge pull request #677 from arrbee/status-without-head
Add support for diffing index with no HEAD
|
|
7e000ab2
|
2012-05-08T15:03:59
|
|
Add support for diffing index with no HEAD
When a repo is first created, there is no HEAD yet and attempting
to diff files in the index was showing nothing because a tree
iterator could not be constructed. This adds an "empty" iterator
and falls back on that when the head cannot be looked up.
|
|
c99bdacf
|
2012-05-08T14:13:43
|
|
Merge pull request #670 from nulltoken/ntk/topic/clean-commit_message
Clean commit and tag messages
|
|
364f51bd
|
2012-05-08T13:56:21
|
|
Merge pull request #668 from nulltoken/topic/binary-blobs
Enhancing the blob diffing experience
|
|
1f796cd1
|
2012-05-08T13:42:11
|
|
Merge pull request #676 from carlosmn/remotes
Add git_remote_add() and change signature for _new()
|
|
19579847
|
2012-05-08T13:23:00
|
|
Clean up warnings and tests
|
|
baaa8a44
|
2012-05-03T20:25:56
|
|
remotes: change git_remote_new's signature
Add a fetch refspec arguemnt and make the arguments (name, url,
refspec), as that order makes more sense.
|
|
a209a025
|
2012-05-03T16:08:33
|
|
remote: add git_remote_add()
Helper function to create a remote with the default settings
|
|
722c08af
|
2012-05-07T21:21:48
|
|
status: Prevent git_status_file() from returning ENOTFOUND when not applicable
|