Commit Graph

5622 Commits

Author SHA1 Message Date
Edward Thomson
4f7897ab19 Prevent checkout_tree when conflicts exist, clear NAME on checkout tree
Prevent checkout tree when unresolved changes exist (unless FORCE flag
is specified).  Clear NAME table when checking out, to avoid
checkout_conflicts from attempting to manipulate it.  Ensure that NAME
is also cleared at reset.
2013-10-16 16:20:08 -04:00
Edward Thomson
629b661caa checkout (from index) can write conflicts 2013-10-16 16:20:06 -04:00
Edward Thomson
3acf44d6cb tests for checkout index with conflicts 2013-10-16 16:20:04 -04:00
Vicent Martí
2c2b0ebb4a Merge pull request #1562 from libgit2/cmn/refs-namespace-lookup
Provide the user with a more useful error code when a looking up a reference which name points to a namepace
2013-10-11 09:47:05 -07:00
Carlos Martín Nieto
7c9f5bec51 futils: return GIT_ENOTFOUND when trying to read a directory
This lets the reference code return not-found when the user asks to
look up a reference when in fact they pass a namespace.
2013-10-11 16:29:59 +02:00
Ben Straub
4d43e6300c Merge pull request #1898 from arthurschreiber/patch-2
Fix a typo in the rpm build instructions.
2013-10-10 15:29:57 -07:00
Arthur Schreiber
84c469814e Fix a typo in the rpm build instructions. 2013-10-11 00:06:08 +02:00
Russell Belfer
743531372a After iconv init reset ref normalize error
The iconv init was accidentally clearing the default error state
during reference normalization. This resets so that normalization
errors will be detected correctly.
2013-10-09 11:57:03 -07:00
Vicent Martí
95c148b2c7 Merge pull request #1886 from libgit2/precompose-utf8
Add support for core.precomposeunicode on Mac
2013-10-08 17:03:12 -07:00
Russell Belfer
867f7c9b33 Rename new fn to git_repository_reinit_filesystem 2013-10-08 16:59:59 -07:00
Russell Belfer
92dac97586 Make reference lookups apply precomposeunicode
Before these changes, looking up a reference would return the
same precomposed or decomposed form of the reference name that
was used to look it up, so on MacOS which ignores the difference
between the two, a single reference could be looked up either way
and git_reference_name would return the form of the name that was
used to look it up!  This change makes lookup always return the
precomposed name if core.precomposeunicode is set regardless of
which version was used to look it up.  The reference iterator was
already returning the precomposed form from earlier work.

This also updates the CMakeLists.txt rules for enabling iconv
usage because the clar tests for this code were actually not being
activated properly with the old version.

Finally, this moves git_repository_reset_filesystem from include/
git2/repository.h to include/git2/sys/repository.h since it is not
really a function that normal library users should have to think
about very often.
2013-10-08 16:35:57 -07:00
Vicent Martí
062c95c2a9 Merge pull request #1895 from libgit2/winhttp-accept
WinHTTP: set Accept header for POSTs
2013-10-08 16:32:06 -07:00
Ben Straub
3dc3c723da Combine WinHTTP API calls 2013-10-08 15:52:37 -07:00
Russell Belfer
d5e83627e4 Case sensitivity issues on Linux
A couple of tests were actually dealing incorrectly with case
sensitivity issues on Linux because they were relying on having
core.ignorecase set to true.  Now that the fixture initialization
sets the case sensitivity to be accurate for the platform, it
exposed bugs in these tests.
2013-10-08 14:41:32 -07:00
Ben Straub
1fd21b0342 Add Assembla unit test 2013-10-08 13:59:43 -07:00
Ben Straub
a58eecd436 WinHTTP: set Accept header for POSTs 2013-10-08 13:40:52 -07:00
Russell Belfer
14997dc5f6 More filemode cleanups for FAT on MacOS
This cleans up some additional issues.  The main change is that
on a filesystem that doesn't support mode bits, libgit2 will now
create new blobs with GIT_FILEMODE_BLOB always instead of being
at the mercy to the filesystem driver to report executable or not.
This means that if "core.filemode" lies and claims that filemode
is not supported, then we will ignore the executable bit from the
filesystem.  Previously we would have allowed it.

This adds an option to the new git_repository_reset_filesystem to
recurse through submodules if desired.  There may be other types
of APIs that would like a "recurse submodules" option, but this
one is particularly useful.

This also has a number of cleanups, etc., for related things
including trying to give better error messages when problems come
up from the filesystem.  For example, the FAT filesystem driver on
MacOS appears to return errno EINVAL if you attempt to write a
filename with invalid UTF-8 in it.  We try to capture that with a
better error message now.
2013-10-08 12:45:43 -07:00
Vicent Martí
ca27ae4859 Merge pull request #1894 from libgit2/cmn/tree-raw
tree: allow retrieval of raw attributes
2013-10-08 04:31:26 -07:00
Carlos Martín Nieto
13f670a5d9 tree: allow retrieval of raw attributes
When a tool needs to recreate the tree object (for example an
interface to another VCS), it needs to use the raw attributes,
forgoing any normalization.
2013-10-08 10:07:31 +02:00
Vicent Martí
711333efe1 Merge pull request #1890 from libgit2/multiple-init
Multiple init
2013-10-05 07:56:03 -07:00
Ben Straub
2266144897 Don't use git_atomic as an integer 2013-10-04 19:35:32 -07:00
Philip Kelley
cdc95a0d93 Use InterlockedCompareExchange for the lock 2013-10-04 19:34:08 -07:00
Ben Straub
e411b74ebd Posix synchronized init, prototype win32 version 2013-10-04 19:33:48 -07:00
Ben Straub
cfd192b014 Add test for multiple thread init/shutdown 2013-10-04 19:27:12 -07:00
Russell Belfer
5173ea921d Add git_repository_reset_filesystem and fix tests
When a repository is transferred from one file system to another,
many of the config settings that represent the properties of the
file system may be wrong.  This adds a new public API that will
refresh the config settings of the repository to account for the
change of file system.  This doesn't do a full "reinitialize" and
operates on a existing git_repository object refreshing the config
when done.

This commit then makes use of the new API in clar as each test
repository is set up.

This commit also has a number of other clar test fixes where we
were making assumptions about the type of filesystem, either based
on outdated config data or based on the OS instead of the FS.
2013-10-04 16:32:16 -07:00
Vicent Martí
ec5fe2da8b Merge pull request #1892 from libgit2/ntk/topic/index_read
Make git_index_read() cope with external additions and removals of the index file
2013-10-04 08:50:44 -07:00
nulltoken
da7b78fa44 index: Make _read() cope with index file creation 2013-10-04 15:54:36 +02:00
nulltoken
6445ae994c index: Enhance documentation 2013-10-04 13:49:26 +02:00
nulltoken
34b8eafcae Tabify indentations 2013-10-04 11:36:40 +02:00
Russell Belfer
b8f9059d63 More cleanups to remove WIN assumptions
This cleans up more of the test suite to check actual filesystem
behavior instead of relying on Windows vs. Mac vs. Linux to test.
2013-10-03 15:16:06 -07:00
Russell Belfer
840fb4fc43 Update repo init with fewer platform assumptions
The repo init code was assuming Windows == no filemode, and
Mac or Windows == no case sensitivity.  Those assumptions are not
consistently true depending on the mounted file system.  This is a
first step to removing those assumptions.  It focuses on the repo
init code and the tests of that code.  There are still many other
tests that are broken when those assumptions don't hold true, but
this clears up one area of the code.

Also, this moves the core.precomposeunicode logic to be closer to
the current logic in core Git where it will be set to true on any
filesystem where composed unicode is decomposed when read back.
2013-10-03 14:42:37 -07:00
Russell Belfer
af302acaee Clean up annoying warnings
The indexer code was generating warnings on Windows 64-bit.  I
looked closely at the logic and was able to simplify it a bit.

Also this fixes some other Windows and Linux warnings.
2013-10-03 10:45:04 -07:00
Russell Belfer
618b7689e1 Wrap iconv stuff and write tests
This adds a simple wrapper around the iconv APIs and uses it
instead of the old code that was inlining the iconv stuff.  This
makes it possible for me to test the iconv logic in isolation.
A "no iconv" version of the API was defined with macros so that
I could have fewer ifdefs in the code itself.
2013-10-03 10:44:13 -07:00
Russell Belfer
d0849f830f Simplify git_path_is_empty_dir implementation
This simplifies git_path_is_empty_dir on both Windows (getting rid
of git_buf allocation inside the function) and other platforms (by
just using git_path_direach), and adds tests for the function, and
uses the function to simplify some existing tests.
2013-10-03 10:44:13 -07:00
Russell Belfer
966bb17a57 Add to Git authors who have agreed to relicense
In email, Torsten Bögershausen agreed that we could use his code
from core Git in libgit2 under the modified license.  Also, since
his work is the basis for much of the precompose unicode support,
I have added him to the AUTHORS file as well.
2013-10-03 10:44:13 -07:00
Russell Belfer
219d345732 Initial iconv hookup for precomposed unicode
This hooks up git_path_direach and git_path_dirload so that they
will take a flag indicating if directory entry names should be
tested and converted from decomposed unicode to precomposed form.
This code will only come into play on the Apple platform and even
then, only when certain types of filesystems are used.

This involved adding a flag to these functions which involved
changing a lot of places in the code.

This was an opportunity to do a bit of code cleanup here and there,
for example, getting rid of the git_futils_cleanupdir_r function in
favor of a simple flag to git_futils_rmdir_r to not remove the top
level entry.  That ended up adding depth tracking during rmdir_r
which led to a safety check for infinite directory recursion.  Yay.

This hasn't actually been tested on the Mac filesystems where the
issue occurs.  I still need to get test environment for that.
2013-10-03 10:44:13 -07:00
Russell Belfer
2fe54afa2a Put hooks in place for precompose in dirload fn
This doesn't actual do string precompose but it puts the hooks in
place into the iterators and the git_path_dirload function so that
the actual precompose work is ready to go.
2013-10-03 10:44:13 -07:00
Russell Belfer
6b7991e264 Add check if we need to precompose unicode on Mac
This adds initialization of core.precomposeunicode to repo init
on Mac.  This is necessary because when a Mac accesses a repo on
a VFAT or SAMBA file system, it will return directory entries in
decomposed unicode even if the filesystem entry is precomposed.

This also removes caching of a number of repo properties from the
repo init pipeline because these are properties of the specific
filesystem on which the repo is created, not of the system as a
whole.
2013-10-03 10:44:13 -07:00
Vicent Martí
146b4d1c5f Merge pull request #1888 from jamill/network_cancellation
network cancellation improvements
2013-10-03 08:18:41 -07:00
Jameson Miller
7baa7631ea Style tweaks and changes for code review feedback 2013-10-03 09:51:21 -04:00
Vicent Martí
ab13687662 Merge pull request #1887 from libgit2/ntk/topic/git_message_raw
commit: Introduce git_commit_message_raw()
2013-10-03 04:36:29 -07:00
nulltoken
598f069b99 commit: Introduce git_commit_message_raw() 2013-10-03 07:59:55 +02:00
Russell Belfer
c8f2ba9944 Merge pull request #1889 from libgit2/relative-redirect
HTTP: handle "relative" redirects
2013-10-02 15:26:20 -07:00
Ben Straub
41a6de289f HTTP: handle "relative" redirects 2013-10-02 14:45:57 -07:00
Jameson Miller
83db7e09e2 Fix broken online push tests 2013-10-02 15:19:40 -04:00
Jameson Miller
5b18822545 Support cancellation in push operation
This commit adds cancellation for the push operation. This work consists of:

1) Support cancellation during push operation
    - During object counting phase
    - During network transfer phase
        - Propagate GIT_EUSER error code out to caller
2) Improve cancellation support during fetch
    - Handle cancellation request during network transfer phase
    - Clear error string when cancelled during indexing
3) Fix error handling in git_smart__download_pack

Cancellation during push is still only handled in the pack building and
network transfer stages of push (and not during packbuilding).
2013-10-02 15:12:44 -04:00
Vicent Martí
5bfead1dba Merge pull request #1855 from libgit2/cmn/clone-into
An alternative for 'clone' with options
2013-10-02 05:56:37 -07:00
Carlos Martín Nieto
0e0cf78773 clone: put the callbacks struct directly in the clone options
There's no need for this to be a pointer to somewhere else.
2013-10-02 14:04:44 +02:00
Carlos Martín Nieto
ffc97d5126 remote: add some comments to the callback struct
Hopefully clear up what they're for.
2013-10-02 06:42:27 +02:00
Carlos Martín Nieto
36a241acbb clone: mention clone_into in the clone documentation
Make the difference more explicit.
2013-10-02 06:42:27 +02:00