Commit Graph

488 Commits

Author SHA1 Message Date
Carlos Martín Nieto
14e1bc157a tests: plug a leak in the config stress 2012-07-21 17:55:35 +02:00
Vicent Martí
5b78696334 Merge pull request #818 from nulltoken/rework
Revparse rework
2012-07-21 07:56:59 -07:00
Carlos Martín Nieto
507523c32f odb: allow creating an ODB backend from a packfile index
git_odb_backend_one_packfile() allows us to create an ODB backend out
of an .idx file.
2012-07-21 16:23:49 +02:00
Carlos Martín Nieto
5d9cfa07ac config: escape subsection names when creating them
This allows us to set options like "some.foo\\ish.var".

This closes #830
2012-07-21 02:28:46 +02:00
Russell Belfer
71d2735837 Fix bug with merging diffs with null options
A diff that is created with a NULL options parameter could result
in a NULL prefix string, but diff merge was unconditionally
strdup'ing it.  I added a test to replicate the issue and then a
new method that does the right thing with NULL values.
2012-07-19 10:23:45 -07:00
Ben Straub
09a03995e0 Checkout: make core.symlinks test work on OSX. 2012-07-17 20:20:34 -07:00
Ben Straub
8651c10f1e Checkout: obey core.symlinks. 2012-07-17 19:57:37 -07:00
nulltoken
db9be9457d object: introduce git_object_peel()
Partially fix #530
2012-07-17 20:32:40 +02:00
Ben Straub
3e026f1b45 Update master-tip to fix unit test. 2012-07-17 09:00:38 -07:00
Ben Straub
bfc6563405 Merge branch 'development' into clone 2012-07-17 08:08:34 -07:00
Ben Straub
1d68fcd04b Checkout: handle symlinks.
Includes unfinished win32 implementation.
2012-07-16 16:22:41 -07:00
nulltoken
d448392e5d revparse: extend test coverage 2012-07-15 18:41:55 +02:00
nulltoken
b0f1533867 revparse: add reflog test data 2012-07-15 18:41:54 +02:00
Ben Straub
71bc89b9b6 Disable test that aren't quite ready yet. 2012-07-13 20:24:40 -07:00
Ben Straub
280c7bbf13 Add checkout test suite.
Removed 'bare' option from test repository to 
allow checkout tests.
2012-07-13 15:52:27 -07:00
nulltoken
d1b7921a48 revparse: fix disambiguation of refs and abbrev oids 2012-07-12 22:30:00 +02:00
nulltoken
bb89cf9478 revparse: simplify handling of the colon syntax 2012-07-12 22:29:58 +02:00
nulltoken
dc1f4b32d3 tree: unfound tree entry returns GIT_ENOTFOUND 2012-07-12 22:29:55 +02:00
Russell Belfer
465092ce3f Fix memory leak in test 2012-07-12 11:56:50 -07:00
Carlos Martín Nieto
eca67c585e tests: fix git_odb_foreach() object count
Some objects were added in another PR
2012-07-12 20:40:09 +02:00
Vicent Martí
dd4345b424 Merge pull request #789 from carlosmn/odb-foreach
odb: add git_odb_foreach()
2012-07-12 09:42:54 -07:00
Vicent Martí
0cf6b2f29e Merge pull request #805 from nulltoken/fix/revwalk-email-parsing
Fix revwalk email parsing
2012-07-12 09:37:09 -07:00
Vicent Martí
db2d4061f6 Merge pull request #814 from nulltoken/topic/revparse-refac
Revparse refactoring: a start
2012-07-12 09:35:35 -07:00
Vicent Martí
48bcf81dd2 Merge pull request #812 from arrbee/assorted-tweaks
Assorted goodies
2012-07-12 09:32:44 -07:00
nulltoken
84f18e3587 refs: introduce git_reference_remote_tracking_from_branch() 2012-07-12 01:06:13 +02:00
nulltoken
874303d468 refs: readonly tests don't need a sandboxed repo 2012-07-12 01:06:12 +02:00
nulltoken
b1aca6eae0 commit: introduce git_commit_nth_gen_ancestor() 2012-07-12 01:06:11 +02:00
Ben Straub
81167385e9 Fix compile and workings on msvc.
Signed-off-by: Ben Straub <bstraub@github.com>
2012-07-11 15:41:37 -07:00
nulltoken
8aedf1d558 signature: prevent angle bracket usage in identity 2012-07-11 20:40:13 +02:00
nulltoken
118cf57d42 revwalk: relax the parsing of the commit time 2012-07-11 20:40:12 +02:00
nulltoken
5b07111529 tests: add test commit with angle brackets in the author name 2012-07-11 20:40:12 +02:00
Ben Straub
d024419f16 Add git_path_is_empty_dir. 2012-07-11 10:40:53 -07:00
Ben Straub
822d9dd51f Remove duplicate of git_repository_head_tree. 2012-07-11 09:50:12 -07:00
Vicent Martí
a13a30ac30 Merge pull request #801 from nulltoken/fix/ref-renaming
refs and revparse love <3
2012-07-11 05:29:51 -07:00
Russell Belfer
991a56c704 Add flag to write gitlink on setting repo workdir
This added a flag to the `git_repository_set_workdir()` function
that enables generation of a `.git` gitlink file that links the
new workdir to the parent repository.  Essentially, the flag tells
the function to write out the changes to disk to permanently set
the workdir of the repository to the new path.

If you pass this flag as true, then setting the workdir to something
other than the default workdir (i.e. the parent of the .git repo
directory), will create a plain file named ".git" with the standard
gitlink contents "gitdir: <repo-path>", and also update the
"core.worktree" and "core.bare" config values.

Setting the workdir to the default repo workdir will clear the
core.worktree flag (but still permanently set core.bare to false).

BTW, the libgit2 API does not currently provide a function for
clearing the workdir and converting a non-bare repo into a bare one.
2012-07-10 23:19:47 -07:00
Russell Belfer
b3ff1dab31 Adding git_config_foreach_match() iteration fn
Adding a new config iteration function that let's you iterate
over just the config entries that match a particular regular
expression.  The old foreach becomes a simple use of this with
an empty pattern.

This also fixes an apparent bug in the existing `git_config_foreach`
where returning a non-zero value from the iteration callback was
not correctly aborting the iteration and the returned value was
not being propogated back to the caller of foreach.

Added to tests to cover all these changes.
2012-07-10 23:19:47 -07:00
Russell Belfer
b0fe112922 Add path utilities to resolve relative paths
This makes it easy to take a buffer containing a path with relative
references (i.e. .. or . path segments) and resolve all of those
into a clean path.  This can be applied to URLs as well as file
paths which can be useful.

As part of this, I made the drive-letter detection apply on all
platforms, not just windows.  If you give a path that looks like
"c:/..." on any platform, it seems like we might as well detect
that as a rooted path.  I suppose if you create a directory named
"x:" on another platform and want to use that as the beginning
of a relative path under the root directory of your repo, this
could cause a problem, but then it seems like you're asking for
trouble.
2012-07-10 23:19:47 -07:00
Russell Belfer
039fc40679 Add a couple of useful git_buf utilities
* `git_buf_rfind` (with tests and tests for `git_buf_rfind_next`)
* `git_buf_puts_escaped` and `git_buf_puts_escaped_regex` (with tests)
  to copy strings into a buffer while injecting an escape sequence
  (e.g. '\') in front of particular characters.
2012-07-10 23:19:47 -07:00
Russell Belfer
4d3a7b7846 Merge pull request #793 from libgit2/tree-entry-by-path
Bring back `entry_bypath`
2012-07-10 21:45:16 -07:00
Russell Belfer
19017a24e3 Merge pull request #797 from yorah/fix/inter-hunk-context
diff: make inter-hunk-context default value git-compliant
2012-07-10 16:24:17 -07:00
Ben Straub
1c7eb971ac Reindent. 2012-07-10 12:04:23 -07:00
nulltoken
3e82d6c6f0 revparse: unfound reference return ENOTFOUND 2012-07-07 12:16:15 +02:00
nulltoken
ce9e8e11ca revparse: fix invalid test reference name 2012-07-07 12:16:14 +02:00
nulltoken
b8460c2015 revparse: do not segfault when retrieving the last entry 2012-07-07 12:16:14 +02:00
nulltoken
3d78ab6427 revparse: split reflog test per feature 2012-07-07 12:16:12 +02:00
nulltoken
3cd90893a0 revparse: enhance upstream reflog test coverage 2012-07-07 12:16:11 +02:00
nulltoken
35bed94fd5 revparse: enhance refs/<name> coverage 2012-07-07 12:16:10 +02:00
nulltoken
cab65c2b23 revparse: detect incorrect "refname@{-n}" syntax 2012-07-07 12:16:08 +02:00
nulltoken
1decf88bc1 revparse: slightly improve readability of tests 2012-07-07 12:16:08 +02:00
nulltoken
34922eeeed revparse: readonly tests don't need a sandboxed repo 2012-07-07 12:16:07 +02:00
nulltoken
d0a920a6fd refs: deep unfound ref returns ENOTFOUND 2012-07-07 12:15:30 +02:00
nulltoken
75261421ec refs: add git_reference_has_log() 2012-07-07 12:15:28 +02:00
nulltoken
b6bfd96fdd refs: fix moving of the reflog when renaming a ref 2012-07-07 12:15:28 +02:00
Vicent Martí
b00e921605 Merge pull request #798 from nulltoken/fix/revparse-date
revparse: fix parsing of date specifiers
2012-07-03 12:38:09 -07:00
Carlos Martín Nieto
521aedad30 odb: add git_odb_foreach()
Go through each backend and list every objects that exists in
them. This allows fsck-like uses.
2012-07-03 12:50:51 +02:00
Carlos Martín Nieto
973ed4c9f0 repo tests: do cleanup reinit tests 2012-07-03 12:11:19 +02:00
nulltoken
494ae940a0 revparse: fix parsing of date specifiers 2012-07-02 19:56:41 +02:00
yorah
29f9186d1b diff: make inter-hunk-context default value git-compliant
Default in git core is 0, not 3
2012-07-02 17:27:49 +02:00
nulltoken
52b938d55a revparse: unfound reflog entry returns ENOTFOUND 2012-06-29 17:23:18 +02:00
nulltoken
08ac23a5fd revparse: unfound reflog ref returns ENOTFOUND 2012-06-29 17:23:10 +02:00
nulltoken
4de89ce72a revparse: unfound partially-named ref returns ENOTFOUND 2012-06-29 17:22:43 +02:00
Scott J. Goldman
7e8c146c6b Don't rmdir() nonexistent dirs in object::tree::frompath tests
It causes the clar testsuite to abort on Windows, and isn't necessary.
2012-06-29 00:47:46 -07:00
Vicent Marti
0e2fcca850 tree: Bring back entry_bypath
Smaller, simpler, faster.
2012-06-29 02:21:12 +02:00
nulltoken
0e7af9e758 revparse: unfound nth parent returns ENOTFOUND 2012-06-28 19:12:42 +02:00
nulltoken
0d23c62c48 revparse: handle specs with caret and colon 2012-06-28 19:12:41 +02:00
nulltoken
5b68ba7e15 revparse: unfound treepath returns ENOTFOUND 2012-06-28 19:12:40 +02:00
nulltoken
faaa7c517c revparse: return trees through the "colon" syntax 2012-06-28 19:12:40 +02:00
nulltoken
e28dd29b6e revparse: replace spaces with tabs 2012-06-28 19:12:39 +02:00
Vicent Martí
ed754a75e1 Merge pull request #783 from nulltoken/topic/reinit-coverage
Repo reinit fix + enhanced test coverage
2012-06-25 23:28:17 -07:00
nulltoken
527ed55448 references: introduce git_reference_foreach_glob() 2012-06-22 21:40:24 +02:00
nulltoken
d046945cef Fix MSVC compilation errors 2012-06-22 16:42:37 +03:00
nulltoken
d6d8cc276d tests-clar: fix isolation of repo initialization tests 2012-06-22 13:42:35 +02:00
nulltoken
dbb24a3962 repository: enhance reinitialization test coverage 2012-06-22 11:32:50 +02:00
Michael Schubert
f7292a990c tests-clar: mark unused variables 2012-06-22 10:13:50 +02:00
Vicent Martí
fb8aa9e11b Merge pull request #782 from nulltoken/topic/branch-foreach
Branch foreach
2012-06-21 20:12:50 -07:00
Ben Straub
acdd3d959b Clone: allow empty dirs. 2012-06-21 19:51:56 -07:00
Ben Straub
5a20196f2d Fix warning on msvc build. 2012-06-21 15:11:13 -07:00
Ben Straub
941611153a Clone: minor cleanup and whitespace. 2012-06-21 10:34:11 -07:00
Ben Straub
8340dd5d5f Clone: remove fragile path-handling code.
Also standardized on 3-space indentation. Sorry
about that.
2012-06-21 09:53:45 -07:00
Ben Straub
da73fb70de Disable long-running test. 2012-06-21 09:53:45 -07:00
Ben Straub
3c4b008c4d Disable failing test (for now). 2012-06-21 09:53:45 -07:00
Ben Straub
f2a855d5fe Clone: restructure. 2012-06-21 09:53:44 -07:00
Ben Straub
bb1f6087e4 Add progress reporting to clone. 2012-06-21 09:53:44 -07:00
Ben Straub
764df57e82 Add git_clone and git_clone_bare.
So far they only create a repo, setup the "origin"
remote, and fetch. The API probably needs work as
well; there's no way to get progress information
at this point.

Also uncovered a shortcoming; git_remote_download
doesn't fetch over local transport.
2012-06-21 09:53:44 -07:00
nulltoken
d4827081ea branch: drop git_branch_list() 2012-06-21 18:51:32 +02:00
nulltoken
a8fd805e2f branch: add git_branch_foreach() 2012-06-21 18:51:27 +02:00
Michael Schubert
dca6b228d1 notes: fix memory leaks 2012-06-21 10:33:24 +02:00
Carlos Martín Nieto
9311423c34 tests: plug a leak in the repo tests
The second call to assert_config_entry_on_init_bytype is cleaned up by
the main cleanup function, but that overwrites the first _repo. Make
sure that one doesn't leak.
2012-06-21 02:30:30 +02:00
Ben Straub
eb6bc45f6d Avoid uninitialized variable error. 2012-06-19 21:11:48 -07:00
Carlos Martín Nieto
cdca82c784 Plug a few leaks 2012-06-20 00:46:34 +02:00
Vicent Martí
c3ce8d0c9a Merge pull request #775 from arrbee/fix-index-filemodes
Make index add/append support core.filemode flag
2012-06-19 15:17:35 -07:00
Vicent Martí
5232994072 Merge pull request #768 from nulltoken/topic/expose-message-prettify
message: Expose git_message_prettify()
2012-06-19 15:04:45 -07:00
Russell Belfer
da825c92d9 Make index add/append support core.filemode flag
This fixes git_index_add and git_index_append to behave more like
core git, preserving old filemode data in the index when adding
and/or appending with core.filemode = false.

This also has placeholder support for core.symlinks and
core.ignorecase, but those flags are not implemented (well,
symlinks has partial support for preserving mode information in
the same way that git does, but it isn't tested).
2012-06-19 14:27:02 -07:00
Ben Straub
2c90145aad Fix potential segfault in revparse. 2012-06-19 09:25:55 -07:00
nulltoken
743a4b3bdd message: Expose git_message_prettify()
git_commit() and git_tag() no longer prettify the
message by default. This has to be taken care of
by the caller.

This has the nice side effect of putting the
caller in position to actually choose to strip
the comments or not.
2012-06-19 10:02:22 +02:00
Vicent Martí
68f527c448 Merge pull request #758 from libgit2/config-values-containing-quotes
Quotes inside config values don't survive serialization/deserialization
2012-06-18 17:50:12 -07:00
Vicent Marti
8c4c357f18 clar: Fix warnings 2012-06-19 02:43:36 +02:00
Vicent Martí
31eed56b9e Merge pull request #753 from nulltoken/topic/merge-base-many
Expose git_merge_base_many()
2012-06-18 17:36:14 -07:00
Vicent Marti
b93688d06d Merge remote-tracking branch 'yorah/fix/notes-creation' into development
Conflicts:
	src/notes.c
2012-06-19 02:33:03 +02:00
Vicent Marti
515a4c7c06 tree: Proper path comparison logic 2012-06-19 00:59:04 +02:00
Tim Clem
e00b56eb04 Fix broken tests caused by no longer prettifying by default 2012-06-15 10:18:08 -07:00
Carlos Martín Nieto
67d334c1cd config: add more tests for writing escaped chars 2012-06-13 23:26:00 +02:00
Adam Roben
750be86aed Add a test that shows we don't preserve quotes in config values 2012-06-13 21:43:34 +02:00
Frederick Ros
fa45d25f38 Fix issue #763 2012-06-13 17:35:13 +02:00
yorah
027d77ee5c notes: simplify tests 2012-06-12 14:30:33 +02:00
nulltoken
7623b1b63f repository: make git_repository_init() value the core.logallrefupdates config entry 2012-06-12 06:42:46 +02:00
nulltoken
976b69bdbb repository: widen test coverage regarding initialization and configuration entries 2012-06-12 06:42:46 +02:00
Adam Roben
cfc17dc41b Add a test showing that git_status_file gets confused by spaces in .gitignore 2012-06-09 17:43:18 -04:00
Russell Belfer
145e696b49 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`.
2012-06-08 12:11:13 -07:00
Russell Belfer
0abd724454 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.
2012-06-08 12:09:10 -07:00
yorah
a02e724978 notes: simplify the handling of fanouts
- Do not create new levels of fanout when creating notes from libgit2
 - Insert a note in an existing matching fanout
 - Remove a note from an existing fanout
 - Cleanup git_note_read, git_note_remove, git_note_foreach, git_note_create methods in order use tree structures instead of tree_oids
2012-06-08 20:34:24 +02:00
Ben Straub
e272efcb20 Tests: wrap 'getenv' and friends for Win32 tests. 2012-06-08 11:24:37 -07:00
yorah
3a0d1e12db notes: add failing test 2012-06-08 00:17:09 +02:00
yorah
454cc829f3 notes: add test resource with faked two-level fanout 2012-06-08 00:17:08 +02:00
Vicent Martí
3f0358604e misc: Fix warnings from PVS Studio trial 2012-06-07 22:43:48 +02:00
Ben Straub
763b838152 Fixing rev-parse-induced Travis errors. 2012-06-07 13:22:50 -07:00
Vicent Martí
6c08e69fd9 Merge pull request #669 from nulltoken/topic/reset
Add git_reset()
2012-06-07 12:30:20 -07:00
Vicent Martí
b9ebcc59e7 Merge pull request #684 from benstraub/rev-parse
Rev parse
2012-06-07 12:29:31 -07:00
nulltoken
edebceffef Add git_reset()
Currently supports Soft and Mixed modes.
2012-06-07 21:27:30 +02:00
Vicent Martí
cddb8efe56 Merge pull request #704 from nulltoken/topic/blob_fromchunks
Add the ability to create blob given a provider of chunks of bytes
2012-06-07 11:34:48 -07:00
nulltoken
cd44576790 blob: add git_blob_create_fromchunks() 2012-06-07 20:33:22 +02:00
Vicent Martí
5bb545822d Merge pull request #752 from nulltoken/fix/warning
Fix compilation warning and failing test
2012-06-07 09:44:08 -07:00
nulltoken
b46bdb2204 merge: Expose git_merge_base_many() 2012-06-07 16:25:37 +02:00
Adam Roben
8e60c712ac 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.
2012-06-07 09:50:19 -04:00
nulltoken
6183f0e2b2 merge: cleanup tests 2012-06-07 14:55:24 +02:00
nulltoken
6654dbe320 tests: fix assertion 2012-06-07 14:09:25 +02:00
Ben Straub
36c0802245 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.
2012-06-06 12:39:29 -07:00
Ben Straub
8a385c0482 Move git__date_parse declaration to util.h. 2012-06-06 12:25:22 -07:00
Vicent Martí
eadc0e03f1 Merge pull request #747 from nulltoken/topic/init-filemode
Make git_repository_init() value "core.filemode" and "core.ignorecase"
2012-06-05 13:41:13 -07:00
nulltoken
693b23c09a repository: make git_repository_init() value the core.ignorecase config entry 2012-06-05 22:33:34 +02:00
Vicent Marti
a146ba9e5b tests: Fix warning with nested comments 2012-06-05 22:16:08 +02:00
Ben Straub
56a5000d58 Merge branch 'development' into rev-parse
Conflicts:
	src/util.h
	tests-clar/refs/branches/listall.c
2012-06-05 12:52:44 -07:00
nulltoken
fac66990b6 repository: make git_repository_init() value the core.filemode config entry 2012-06-05 14:01:44 +02:00
Carlos Martín Nieto
01dbe273c9 Merge pull request #737 from nulltoken/topic/git_remote_add_refspec
Remotes and refspecs
2012-06-04 15:10:29 -07:00
nulltoken
d27bf66561 remote: Make git_remote_add() generate a default refspec with a force update specifier 2012-06-04 23:47:09 +02:00
Arthur Schreiber
36c88422ef Add a failing test case for git_remote_disconnect/git_remote_connected. 2012-06-02 16:48:12 +02:00
Ben Straub
734efe4b8e Rev-parse: implement ":/foo" syntax. 2012-06-01 14:18:52 -07:00
Ben Straub
2497106f91 Rev-parse: add test with deeper path. 2012-06-01 11:41:54 -07:00
Ben Straub
244d2f6b80 Rev-parse: add "tag:README" syntax. 2012-05-30 16:52:11 -07:00
Ben Straub
dd9e4abc1b 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.
2012-05-30 11:46:42 -07:00
nulltoken
d05e2c64dd refspec: expose the force update specifier through git_refspec_force() accessor 2012-05-30 01:05:17 +02:00
Michael Schubert
dbab04594c 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.
2012-05-26 14:59:07 +02:00
Russell Belfer
29ef309e2c 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.
2012-05-25 09:44:56 -07:00
Russell Belfer
2a99df6909 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.
2012-05-24 17:14:56 -07:00
Russell Belfer
9cde607c95 Clean up system file finding tests on Win32 2012-05-24 15:08:55 -07:00
Russell Belfer
9e35d7fd6e 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.
2012-05-24 13:44:24 -07:00
Russell Belfer
2305913007 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.
2012-05-24 12:45:20 -07:00
Vicent Martí
59d91979d8 Merge pull request #710 from libgit2/breaking-changes
Break everything before the release
2012-05-18 13:53:38 -07:00
Vicent Martí
904b67e69f errors: Rename error codes 2012-05-18 01:48:50 +02:00
Vicent Martí
e172cf082e errors: Rename the generic return codes 2012-05-18 01:26:26 +02:00