Commit Graph

3272 Commits

Author SHA1 Message Date
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
Vicent Martí
2e2e97858d Properly tag all enums with a _t 2012-05-18 01:26:23 +02:00
Vicent Martí
4fbd1c007e refs: git_reference_listall -> git_reference_list 2012-05-18 01:26:16 +02:00
Vicent Martí
fe3bcf7d7a errors: Remove old comments 2012-05-18 01:25:57 +02:00
Vicent Martí
255c38c500 global: Fix unit tests after reordering 2012-05-18 01:25:57 +02:00
Vicent Martí
29e948debe global: Change parameter ordering in API
Consistency is good.
2012-05-18 01:25:57 +02:00
nulltoken
392eced6f0 branch: retrieve symbolic references when listing the branches 2012-05-18 00:26:04 +02:00
Vicent Martí
52695898e5 Merge pull request #709 from arrbee/profiling-with-scottg
Profiling with scottg
2012-05-17 14:46:44 -07:00
Russell Belfer
e3557172af No point in keeping commented out fn 2012-05-17 14:44:17 -07:00
Vicent Martí
88d6e04408 Merge pull request #708 from arrbee/fix-empty-workdir-iterator
Fix workdir iterators on empty directories
2012-05-17 14:25:42 -07:00
Russell Belfer
6e5c4af00e 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.
2012-05-17 14:21:10 -07:00
Russell Belfer
a0d959628f Other optimization and warning fixes
This fixes a warning left by the earlier optimization and
addresses one of the other hotspots identified by GProf.
2012-05-17 13:14:17 -07:00
Russell Belfer
b59c73d39a Optimize away git_text_gather_stats in diff
GProf shows `git_text_gather_stats` as the most expensive call
in large diffs.  The function calculates a lot of information
that is not actually used and does not do so in a optimal
order.  This introduces a tuned `git_buf_is_binary` function
that executes the same algorithm in a fraction of the time.
2012-05-17 13:06:20 -07:00
Russell Belfer
706a9974a2 Basic setup for profiling
This fixes the examples so they will build and adds a PROFILE
option to the CMakeFile that enabled gprof info on non-Windows
2012-05-17 13:05:17 -07:00
Vicent Martí
db756d5898 Merge pull request #706 from arrbee/fix_592_again
Fix status for files under ignored dirs
2012-05-16 17:18:17 -07:00
Russell Belfer
bd4ca902b5 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.
2012-05-16 17:08:59 -07:00
Vicent Martí
38f4f15824 Merge pull request #705 from nulltoken/fix/note_list_callback_signature
notes: make git_note_foreach() callback signature easier to cope with from a binding perspective
2012-05-16 13:43:16 -07:00
nulltoken
ee7680d53b notes: make git_note_foreach() callback signature easier to cope with from a binding perspective 2012-05-16 21:51:45 +02:00
Vicent Martí
9d0011fd83 tree: Naming conventions 2012-05-16 19:24:35 +02:00
Vicent Martí
eb27088462 clar: Fix warning 2012-05-16 19:24:35 +02:00
Vicent Martí
cedf9ca955 tree: Kill the git_tree_diff functions
These are deprecated and replaced with the diffing code in git2/diff.h
2012-05-16 19:24:35 +02:00
Vicent Martí
9bd5a99fea Merge pull request #700 from cholin/revwalk_reset
really reset walker with git_revwalk_reset
2012-05-16 10:22:49 -07:00
Vicent Martí
c261c272af Merge pull request #702 from arrbee/fix-status-file
Update git_status_file and add ranged iterators
2012-05-16 09:57:45 -07:00
Vicent Martí
b206d74cca Merge pull request #703 from carlosmn/consistency
A few indexer consistency checks
2012-05-16 04:40:32 -07:00
Russell Belfer
2c83391728 Document git_buf_common_prefix
This function fills in a git_buf with the common prefix of
an array of strings, but let's make that a little more clear.
2012-05-15 16:33:05 -07:00
Carlos Martín Nieto
6a9d61ef50 indexer: add more consistency checks
Error out in finalize if there is junk after the packfile hash or we
couldn't process all the objects.
2012-05-16 01:22:25 +02:00
Ben Straub
1ce4cc0164 Fix date.c build in msvc.
Ported the win32 implementations of gmtime_r,
localtime_r, and gettimeofday to be part of the 
posix compatibility layer, and fixed
git_signature_now to use them.
2012-05-15 15:41:05 -07:00
Russell Belfer
58ffeb9cde Fix notes to use new fixed iterator signature 2012-05-15 14:51:30 -07:00
Russell Belfer
41a82592ef 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.
2012-05-15 14:34:15 -07:00
Carlos Martín Nieto
73d87a091c Introduce GITERR_INDEXER 2012-05-15 21:42:20 +02:00
Nico von Geyso
0b86fdf96e really reset walker with git_revwalk_reset
From the description  of git_revwalk_reset in revwalk.h the function should
clear all pushed and hidden commits, and leave the walker in a blank state (just like at creation).
Apparently everything gets reseted appart of pushed commits (walk->one and walk->twos)

This fix should reset the walker properly.
2012-05-15 17:09:34 +02:00
Vicent Martí
54695f4098 Merge pull request #699 from nulltoken/fix/compilation-warnings
Fix compilation warnings
2012-05-14 13:28:13 -07:00
nulltoken
d5ed6348c7 Fix compilation warnings 2012-05-14 22:24:58 +02:00
Vicent Martí
87d6138e2e Merge pull request #696 from nulltoken/topic/notes-list
Add git_note_foreach()
2012-05-14 13:17:19 -07:00
Vicent Martí
79fdde494f Revert "Specifiy dllimport to MSVC if we're not building libgit2.dll"
This reverts commit 1093e2de22.
2012-05-14 22:15:53 +02:00
nulltoken
86ecd84427 notes: add git_notes_foreach() 2012-05-14 22:07:42 +02:00
Vicent Martí
1c3a5a0302 Merge pull request #693 from nulltoken/topic/enhance_branch_move_test_coverage
branch: cover with test that moving a non existing branch returns ENOTFOUND
2012-05-14 11:25:55 -07:00
Vicent Martí
8c6329eec9 Merge pull request #692 from nulltoken/fix/delete-branch_ENOTFOUND
branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
2012-05-14 11:25:40 -07:00
Vicent Martí
c9e9ec97d2 Merge pull request #688 from hanwen/master
See issue https://github.com/libgit2/libgit2/issues/680
2012-05-14 11:24:37 -07:00
Sascha Cunz
1093e2de22 Specifiy dllimport to MSVC if we're not building libgit2.dll
Building a "shared object" (DLL) in Windows includes 2 steps:

- specify __declspec(dllexport)
  when building the library itself. MSVC will disallow itself from
  optimizing these symbols out and reference them in the PE's
  Exports-Table.
  Further, a static link library will be generated. This library
  contains the symbols which are exported via the declsepc above.
  The __declspec(dllexport) becomes part of the symbol-signature
  (like parameter types in C++ are 'mangled' into the symbol name,
  the export specifier is mingled with the name)

- specify __declspec(dllimport)
  when using the library. This again mingles the declspec into the
  name and declares the function / variable with external linkage.

cmake automatically adds -Dgit2_EXPORTS to the compiler arguments
when compiling the libgit2 project.
The 'git2' is the name specified via PROJECT() in CMakeLists.txt.
2012-05-14 20:22:50 +02:00
Vicent Martí
e49cb1687e Merge pull request #671 from nulltoken/topic/blob_create_fromdisk
Add git_blob_create_fromdisk()
2012-05-14 11:03:30 -07:00
Vicent Martí
72bfde9790 Merge pull request #681 from scottjg/solaris-fixes
Fix build/runtime issues on Solaris
2012-05-14 11:01:14 -07:00
Vicent Martí
27f5b7cfed Merge pull request #682 from arrbee/attribute-cache-buster
Attribute cache buster
2012-05-14 10:58:23 -07:00
Sascha Cunz
0c9a5565f7 Add missing GIT_EXTERN declarations 2012-05-14 19:56:35 +02:00
Vicent Martí
546ca93993 Merge pull request #689 from scunz/visibility-gcc
Use -fvisibility=hidden in GCC builds
2012-05-14 10:50:20 -07:00
Vicent Martí
0d6b776cb9 Merge pull request #694 from nulltoken/topic/mergebase-test-coverage
mergebase: enhance test code coverage
2012-05-14 10:49:42 -07:00
Russell Belfer
8f12d136c9 Merge pull request #695 from nulltoken/topic/iterator_free_null_tolerant
iterator: prevent git_iterator_free() from segfaulting when being passed a NULL iterator
2012-05-14 09:37:13 -07:00
Scott J. Goldman
212eb09d5f 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.
2012-05-13 23:12:51 -07:00
nulltoken
87fe3507bb iterator: prevent git_iterator_free() from segfaulting when being passed a NULL iterator 2012-05-13 19:09:57 +02:00