summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* errors: Rename error codesbreaking-changesVicent Martí2012-05-1837-121/+121
|
* errors: Rename the generic return codesVicent Martí2012-05-1844-166/+166
|
* Properly tag all `enums` with a `_t`Vicent Martí2012-05-182-4/+4
|
* refs: git_reference_listall -> git_reference_listVicent Martí2012-05-183-3/+3
|
* global: Change parameter ordering in APIVicent Martí2012-05-1812-69/+90
| | | | Consistency is good.
* Merge pull request #709 from arrbee/profiling-with-scottgVicent Martí2012-05-173-23/+39
|\ | | | | Profiling with scottg
| * No point in keeping commented out fnRussell Belfer2012-05-171-9/+0
| |
| * Other optimization and warning fixesRussell Belfer2012-05-172-14/+23
| | | | | | | | | | This fixes a warning left by the earlier optimization and addresses one of the other hotspots identified by GProf.
| * Optimize away git_text_gather_stats in diffRussell Belfer2012-05-173-7/+23
| | | | | | | | | | | | | | | | 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.
* | Fix workdir iterators on empty directoriesRussell Belfer2012-05-171-4/+12
|/ | | | | | | 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.
* Fix status for files under ignored dirsRussell Belfer2012-05-161-20/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* notes: make git_note_foreach() callback signature easier to cope with from a ↵nulltoken2012-05-161-7/+9
| | | | binding perspective
* tree: Naming conventionsVicent Martí2012-05-164-12/+15
|
* tree: Kill the `git_tree_diff` functionsVicent Martí2012-05-161-270/+0
| | | | These are deprecated and replaced with the diffing code in git2/diff.h
* Merge pull request #700 from cholin/revwalk_resetVicent Martí2012-05-161-0/+3
|\ | | | | really reset walker with git_revwalk_reset
| * really reset walker with git_revwalk_resetNico von Geyso2012-05-151-0/+3
| | | | | | | | | | | | | | | | 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.
* | Merge pull request #702 from arrbee/fix-status-fileVicent Martí2012-05-1615-305/+481
|\ \ | | | | | | Update git_status_file and add ranged iterators
| * | Document git_buf_common_prefixRussell Belfer2012-05-152-0/+4
| | | | | | | | | | | | | | | 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.
| * | Fix notes to use new fixed iterator signatureRussell Belfer2012-05-151-1/+1
| | |
| * | Ranged iterators and rewritten git_status_fileRussell Belfer2012-05-1514-304/+476
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | indexer: add more consistency checksCarlos Martín Nieto2012-05-161-0/+11
| | | | | | | | | | | | | | | Error out in finalize if there is junk after the packfile hash or we couldn't process all the objects.
* | | Introduce GITERR_INDEXERCarlos Martín Nieto2012-05-151-5/+5
|/ /
* | Fix compilation warningsnulltoken2012-05-141-4/+1
| |
* | notes: add git_notes_foreach()nulltoken2012-05-141-23/+135
| |
* | Merge pull request #692 from nulltoken/fix/delete-branch_ENOTFOUNDVicent Martí2012-05-141-1/+1
|\ \ | | | | | | branch: make git_branch_delete() return GIT_ENOTFOUND when the branch doesn't exist
| * | branch: make git_branch_delete() return GIT_ENOTFOUND when the branch ↵nulltoken2012-05-131-1/+1
| |/ | | | | | | doesn't exist
* | Merge pull request #688 from hanwen/masterVicent Martí2012-05-141-10/+15
|\ \ | | | | | | See issue https://github.com/libgit2/libgit2/issues/680
| * | Handle duplicate objects from different backends in git_odb_read_prefix().Han-Wen Nienhuys2012-05-121-10/+15
| |/
* | Merge pull request #671 from nulltoken/topic/blob_create_fromdiskVicent Martí2012-05-141-16/+40
|\ \ | | | | | | Add git_blob_create_fromdisk()
| * | blob: Add git_blob_create_fromdisk()nulltoken2012-05-131-16/+40
| |/ | | | | | | 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.
* | Merge pull request #681 from scottjg/solaris-fixesVicent Martí2012-05-146-12/+39
|\ \ | | | | | | Fix build/runtime issues on Solaris
| * | Fix readdir_r() usage for SolarisScott J. Goldman2012-05-122-6/+29
| | | | | | | | | | | | | | | | | | | | | | | | On Solaris, struct dirent is defined differently than Linux. The field containing the path name is of size 0, rather than NAME_MAX. So, we need to use a properly sized buffer on Solaris to avoid a stack overflow. Also fix some DIR* leaks on cleanup.
| * | Fix rmdir() usage on SolarisScott J. Goldman2012-05-101-1/+1
| | | | | | | | | | | | | | | On Solaris, rmdir() throws EEXIST if the folder is not empty, so just add one more case to check for that, alongside ENOTEMPTY.
| * | Hook up Windows compat fnmatch() for SolarisScott J. Goldman2012-05-104-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | Since Solaris does not support some of the same flags as glibc fnmatch(), we just use the implementation we have for Windows. Now that it's no longer a windows-specific thing, I moved it into compat/ instead of win32/
* | | Merge pull request #682 from arrbee/attribute-cache-busterVicent Martí2012-05-144-34/+100
|\ \ \ | | | | | | | | Attribute cache buster
| * | | Add cache busting to attribute cacheRussell Belfer2012-05-104-34/+100
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | iterator: prevent git_iterator_free() from segfaulting when being passed a ↵nulltoken2012-05-131-0/+3
| |/ |/| | | | | NULL iterator
* | Merge pull request #683 from arrbee/better-repo-initVicent Martí2012-05-121-1/+68
|\ \ | | | | | | Improve repo initialization to be more like git
| * | Fixed leaks and added testsRussell Belfer2012-05-111-16/+13
| | |
| * | Improve repo initialization to be more like gitRussell Belfer2012-05-091-1/+71
| |/ | | | | | | | | | | This adds a bunch of template files to the initialization for hooks, info/exclude, and description. This makes our initialized repo look more like core gits.
* | object: make git_object_lookup() return GIT_ENOTFOUND when searching for an ↵nulltoken2012-05-111-2/+2
|/ | | | | | | | | 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
* Fix 64-bit build warningRussell Belfer2012-05-091-1/+1
|
* Merge pull request #679 from nulltoken/fix/git__isspaceRussell Belfer2012-05-091-1/+1
|\ | | | | util: Fix git__isspace() implementation
| * util: Fix git__isspace() implementationnulltoken2012-05-091-1/+1
| | | | | | | | | | | | The characters <space>, <form-feed>, <newline>, <carriage-return>, <tab>, and <vertical-tab> are part of the "space" definition. cf. http://www.kernel.org/doc/man-pages/online/pages/man5/locale.5.html
* | fetch: filter tag annotation pseudo-refs while generating wantsCarlos Martín Nieto2012-05-092-4/+4
| | | | | | | | | | | | | | These objects aren't considered as being advertised, so asking for them will cause the remote end to close the connection. This makes the checking in update_tips() unnecessary, because they don't get inserted in the list.
* | remote: don't try to create tag annotations as refs/tags/v0.1.0^{}Carlos Martín Nieto2012-05-091-0/+4
| | | | | | | | | | Skip them for now. Eventually we might want to filter these out earler.
* | indexer: close the pack's fd before renaming itCarlos Martín Nieto2012-05-091-1/+2
|/ | | | Windows gets upset if we rename a file with an open descriptor.
* msvc: Do not use `isspace` Vicent Martí2012-05-097-18/+33
| | | | Locale-aware bullshit bitting my ass again yo
* Merge pull request #677 from arrbee/status-without-headVicent Martí2012-05-084-3/+53
|\ | | | | Add support for diffing index with no HEAD
| * Add support for diffing index with no HEADRussell Belfer2012-05-084-3/+53
| | | | | | | | | | | | | | 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.