include/git2


Log

Author Commit Date CI Message
Russell Belfer 5dca2010 2012-08-03T17:08:01 Update iterators for consistency across library This updates all the `foreach()` type functions across the library that take callbacks from the user to have a consistent behavior. The rules are: * A callback terminates the loop by returning any non-zero value * Once the callback returns non-zero, it will not be called again (i.e. the loop stops all iteration regardless of state) * If the callback returns non-zero, the parent fn returns GIT_EUSER * Although the parent returns GIT_EUSER, no error will be set in the library and `giterr_last()` will return NULL if called. This commit makes those changes across the library and adds tests for most of the iteration APIs to make sure that they follow the above rules.
Russell Belfer 2031760c 2012-07-26T16:10:22 Fix git_tree_walk to return user error This makes sure that an error code returned by the callback function of `git_tree_walk` will stop the iteration and get propagated back to the caller verbatim. Also, this adds a minor helper function `git_tree_entry_byoid` that searches a `git_tree` for an entry with the given OID. This isn't a fast function, but it's easier than writing the loop yourself as an external user of the library.
yorah a1773f9d 2012-07-23T18:16:09 Add flag to turn off pathspec testing for diff and status
Vicent Martí 5b786963 2012-07-21T07:56:59 Merge pull request #818 from nulltoken/rework Revparse rework
nulltoken db9be945 2012-07-15T11:06:15 object: introduce git_object_peel() Partially fix #530
Vicent Marti 227f3131 2012-07-15T14:11:58 attr: Rename the `git_attr__` exports Pevents collisions with the original libgit, which also exports those exact symbols. Fixes #822
Carlos Martín Nieto 1ebe432e 2012-07-12T20:33:30 commit: properly export git_commit_nth_gen_ancestor()
Vicent Martí dd4345b4 2012-07-12T09:42:54 Merge pull request #789 from carlosmn/odb-foreach odb: add git_odb_foreach()
Vicent Martí 0cf6b2f2 2012-07-12T09:37:09 Merge pull request #805 from nulltoken/fix/revwalk-email-parsing Fix revwalk email parsing
Vicent Martí db2d4061 2012-07-12T09:35:35 Merge pull request #814 from nulltoken/topic/revparse-refac Revparse refactoring: a start
Vicent Martí 48bcf81d 2012-07-12T09:32:44 Merge pull request #812 from arrbee/assorted-tweaks Assorted goodies
nulltoken 84f18e35 2012-07-12T00:44:07 refs: introduce git_reference_remote_tracking_from_branch()
nulltoken b1aca6ea 2012-07-11T16:14:12 commit: introduce git_commit_nth_gen_ancestor()
nulltoken 8aedf1d5 2012-07-05T17:02:03 signature: prevent angle bracket usage in identity
Vicent Martí a13a30ac 2012-07-11T05:29:51 Merge pull request #801 from nulltoken/fix/ref-renaming refs and revparse love <3
Russell Belfer 991a56c7 2012-07-10T15:35:38 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.
Russell Belfer b3ff1dab 2012-07-10T15:22:39 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.
Russell Belfer 4d3a7b78 2012-07-10T21:45:16 Merge pull request #793 from libgit2/tree-entry-by-path Bring back `entry_bypath`
Russell Belfer 19017a24 2012-07-10T16:24:17 Merge pull request #797 from yorah/fix/inter-hunk-context diff: make inter-hunk-context default value git-compliant
nulltoken 33c33707 2012-07-04T12:20:43 refs: deploy git_reference_has_log()
nulltoken 75261421 2012-07-04T11:58:04 refs: add git_reference_has_log()
Kevin Sawicki 4ea7c8c6 2012-07-03T12:35:33 Replace incorrect 'it' with 'if' in documentation
Carlos Martín Nieto 521aedad 2012-06-05T14:48:51 odb: add git_odb_foreach() Go through each backend and list every objects that exists in them. This allows fsck-like uses.
yorah 29f9186d 2012-07-02T11:18:01 diff: make inter-hunk-context default value git-compliant Default in git core is 0, not 3
Vicent Marti 46ea40d9 2012-06-29T17:08:36 tree: Rename `entry_copy` to `entry_dup`
Vicent Marti 0e2fcca8 2012-06-29T02:21:12 tree: Bring back `entry_bypath` Smaller, simpler, faster.
Carlos Martín Nieto 37159957 2012-06-28T09:33:08 indexer: don't use '/objects/pack/' unconditionally Not everyone who indexes a packfile wants to put it in the standard git repository location.
Vicent Martí c6713398 2012-06-25T23:27:35 Merge pull request #785 from nulltoken/topic/refs-fromglob Topic/refs fromglob
nulltoken 527ed554 2012-06-22T15:51:44 references: introduce git_reference_foreach_glob()
Vicent Marti 798e4d53 2012-06-22T21:25:17 amigaos: Cleanup
Vicent Marti 2ae052d1 2012-06-22T20:48:50 Merge branch 'pull-req' of https://github.com/chris-y/libgit2 into amigaos
nulltoken d4827081 2012-06-21T18:48:36 branch: drop git_branch_list()
nulltoken a8fd805e 2012-06-21T18:29:38 branch: add git_branch_foreach()
Vicent Martí c3ce8d0c 2012-06-19T15:17:35 Merge pull request #775 from arrbee/fix-index-filemodes Make index add/append support core.filemode flag
Russell Belfer 77d65af4 2012-06-19T15:16:38 Nicer constant
Russell Belfer da825c92 2012-06-19T14:27:02 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).
nulltoken 743a4b3b 2012-06-15T22:24:59 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.
Vicent Martí 31eed56b 2012-06-18T17:36:14 Merge pull request #753 from nulltoken/topic/merge-base-many Expose git_merge_base_many()
Chris Young a8df98c6 2012-06-14T18:57:24 Updates from comments on OS4 compatibility pull request http://github.com/libgit2/libgit2/pull/766
Chris Young a21bb1aa 2012-06-13T23:28:51 Merge remote-tracking branch 'source/development' into development
Carlos Martín Nieto 14ebe518 2012-06-12T15:23:00 Expose git_refspec_parse() This function has been available for some time, but never in a header. Expose it so we can use it from outside the library.
Chris Young 327fb51c 2012-06-09T18:13:07 Fix gethostbyname compatibility
Russell Belfer 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`.
Russell Belfer 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.
Chris Young fa56478f 2012-06-08T19:15:11 Generic needs compat files
Chris Young aa5a92d1 2012-06-08T18:57:35 OS4 compatibility
Chris Young 51975727 2012-06-07T23:13:39 Fix double-defines when using GIT_OLD_ERRORS
Chris Young 0f5e1f3b 2012-06-07T21:56:19 Network byte order is big-endian - the way it should be :)
Vicent Martí 3f035860 2012-06-07T22:43:03 misc: Fix warnings from PVS Studio trial
Vicent Martí 6c08e69f 2012-06-07T12:30:20 Merge pull request #669 from nulltoken/topic/reset Add git_reset()
Vicent Martí b9ebcc59 2012-06-07T12:29:31 Merge pull request #684 from benstraub/rev-parse Rev parse
Chris Young c3f35902 2012-06-07T20:29:22 Merge remote-tracking branch 'source/development' into update-test Merging main libgit2! Conflicts: CMakeLists.txt src/unix/map.c
nulltoken edebceff 2012-05-01T13:57:45 Add git_reset() Currently supports Soft and Mixed modes.
Vicent Martí 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
nulltoken cd445767 2012-05-27T15:00:05 blob: add git_blob_create_fromchunks()
nulltoken b46bdb22 2012-05-25T16:28:53 merge: Expose git_merge_base_many()
Vicent Martí 966fbdcb 2012-06-05T13:53:33 Merge pull request #697 from carlosmn/ssl Add HTTPS support
Ben Straub 56a5000d 2012-06-05T12:52:44 Merge branch 'development' into rev-parse Conflicts: src/util.h tests-clar/refs/branches/listall.c
Chris Young d0517805 2012-06-05T11:47:17 Required include for OS4 to typedef int64_t
nulltoken d05e2c64 2012-05-30T00:27:22 refspec: expose the force update specifier through git_refspec_force() accessor
Carlos Martín Nieto 250b95b2 2012-05-26T21:17:08 ssl: allow skipping the server certificate check Sometimes it's useful not to perform the check. Allow it to be configurable.
Carlos Martín Nieto dbb36e1b 2012-05-17T17:56:49 ssl: check certificates against the system's trusted CAs
Bruce Mitchener d73c94b2 2012-05-19T20:24:55 Fix spelling errors.
Vicent Marti ad5df35a 2012-05-19T01:40:46 libgit2 v0.17.0 "Lord of Diffstruction" Welcome to yet another libgit2 release, this one being the biggest we've shipped so far. Highlights on this release include diff, branches, notes and submodules support. The new diff API is shiny and powerful. Check it out. Apologies, one more time, to all the early adopters for the breaking API changes. We've been iterating on the error handling for the library until we reached its current state, which we believe it's significantly more usable both for normal users and for developers of bindings to other languages. Also, we've renamed a few legacy calls to ensure that the whole external API uses a consistent naming scheme. As always, check the API docs for the full list of new API calls and backwards-incompatible changes. http://libgit2.github.com/libgit2/ Changelog of new features follows: Attributes: - Added function macros to check attribute values instead of having to manually compare them - Added support for choosing the attribute loading order (workdir files vs index) and to skip the systems' default `.gitattributes` - Fixed issues when fetching attribute data on bare repositories Blob: - Added support for creating blobs from any file on disk (not restricted to the repository's working directory) - Aded support for smudge filters when writing blobs to the ODB - So far only CRLF normalization is available Branches: - Added a high-level branch API: - git_branch_create - git_branch_delete - git_branch_list - git_branch_move Commit: - Commit messages are now filtered to match Git rules (stripping comments and adding proper whitespacing rules) Config: - Added support for setting and getting multivars - Added `git_config_get_mapped` to map the value of a config variable based on its defaults Diff: - Added full diff API: - tree to tree - index to tree - workdir to index - workdir to tree - blob to blob - Added helper functions to print the diffs as valid patchfiles Error handling: - New design for the error handling API, taking into consideration the requirements of dynamic languages Indexer: - Added streaming packfile indexer Merge: - Added support for finding the merge base between two commits Notes: - Full git-notes support: - git_note_read - git_note_message/git_note_oid - git_note_create - git_note_remove - git_note_free - git_note_foreach References: - Added `git_reference_name_to_oid` helper to resolve a reference to its final OID - Added `git_reference_cmp` to compare two references with a stable order Remotes: - Added support for writing and saving remotes - `git_remote_add` - `git_remote_save` - Setters for all the attributes of a remote - Switched remote download to the new streaming packfile indexer - Fixed fetch on HTTP and Git under Windows - Added `git_remote_supported_url` helper to check if a protocol can be accessed by the library - Added `git_remote_list` Repository: - Made `git_repository_open` smarter when finding the `.git` folder. - Added `git_repository_open_ext` with extra options when opening a repository Revwalk: - Added support for pushing/hiding several references through a glob - Added helper to push/hide the current HEAD to the walker - Added helper to push/hide a single reference to the walker Status: - Greatly improved Status implementation using the new `diff` code as a backend Submodules: - Added a partial submodules API to get information about a submodule and list all the submodules in a repository - git_submodule_foreach - git_submodule_lookup Tag: - Added `git_tag_peel` helper to peel a tag to its pointed object - Tag messages are now filtered to match Git rules (stripping comments and adding proper whitespacing rules) Tree: - Killed the old `git_tree_diff` API, which is replaced by the new diff code. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Martí 904b67e6 2012-05-18T01:48:50 errors: Rename error codes
Vicent Martí e172cf08 2012-05-18T01:21:06 errors: Rename the generic return codes
Vicent Martí 2e2e9785 2012-05-18T00:42:24 Properly tag all `enums` with a `_t`
Vicent Martí 4fbd1c00 2012-05-17T20:35:48 refs: git_reference_listall -> git_reference_list
Vicent Martí fe3bcf7d 2012-05-11T12:20:19 errors: Remove old comments
Vicent Martí 29e948de 2012-05-10T10:38:10 global: Change parameter ordering in API Consistency is good.
nulltoken ee7680d5 2012-05-16T21:21:24 notes: make git_note_foreach() callback signature easier to cope with from a binding perspective
Vicent Martí 9d0011fd 2012-05-16T19:23:47 tree: Naming conventions
Vicent Martí 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
Vicent Martí c261c272 2012-05-16T09:57:45 Merge pull request #702 from arrbee/fix-status-file Update git_status_file and add ranged iterators
Russell Belfer 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.
Carlos Martín Nieto 73d87a09 2012-05-15T21:42:01 Introduce GITERR_INDEXER
Vicent Martí 87d6138e 2012-05-14T13:17:19 Merge pull request #696 from nulltoken/topic/notes-list Add git_note_foreach()
Vicent Martí 79fdde49 2012-05-14T22:15:53 Revert "Specifiy dllimport to MSVC if we're not building libgit2.dll" This reverts commit 1093e2de22f6ca245b09d758a3510899a8362048.
nulltoken 86ecd844 2012-05-08T17:58:40 notes: add git_notes_foreach()
Sascha Cunz 1093e2de 2012-05-11T04:25:23 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.
Vicent Martí e49cb168 2012-05-14T11:03:30 Merge pull request #671 from nulltoken/topic/blob_create_fromdisk Add git_blob_create_fromdisk()
Vicent Martí 72bfde97 2012-05-14T11:01:14 Merge pull request #681 from scottjg/solaris-fixes Fix build/runtime issues on Solaris
Vicent Martí 27f5b7cf 2012-05-14T10:58:23 Merge pull request #682 from arrbee/attribute-cache-buster Attribute cache buster
Sascha Cunz 0c9a5565 2012-05-11T04:12:18 Add missing GIT_EXTERN declarations
nulltoken 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.
Ben Straub bfc13e79 2012-04-30T09:58:43 Adding comment documentation for rev-parse api.
Ben Straub 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)
Scott J. Goldman b1ec25fa 2012-05-10T17:16:24 Fix comment typo in common.h
Russell Belfer 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.
Vicent Martí c99bdacf 2012-05-08T14:13:43 Merge pull request #670 from nulltoken/ntk/topic/clean-commit_message Clean commit and tag messages
Russell Belfer 364f51bd 2012-05-08T13:56:21 Merge pull request #668 from nulltoken/topic/binary-blobs Enhancing the blob diffing experience
Carlos Martín Nieto 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.
Carlos Martín Nieto a209a025 2012-05-03T16:08:33 remote: add git_remote_add() Helper function to create a remote with the default settings
nulltoken d1c4312a 2012-05-03T22:21:08 diff: improve git_diff_blobs() documentation
nulltoken 28ef7f9b 2012-05-03T17:25:01 diff: make git_diff_blobs() able to detect binary blobs
nulltoken 458b9450 2012-03-01T17:03:32 commit/tag: ensure the message is cleaned up 'git commit' and 'git tag -a' enforce some conventions, like cleaning up excess whitespace and making sure that the last line ends with a '\n'. This fix replicates this behavior. Fix libgit2/libgit2sharp#117
Vicent Martí 4ef14af9 2012-05-05T14:22:06 Merge pull request #664 from arrbee/attrs-from-index Support git attrs from index (and bare repo)
Russell Belfer b709e951 2012-05-04T11:06:12 Fix memory leaks and use after free
Russell Belfer f917481e 2012-05-03T16:37:25 Support reading attributes from index Depending on the operation, we need to consider gitattributes in both the work dir and the index. This adds a parameter to all of the gitattributes related functions that allows user control of attribute reading behavior (i.e. prefer workdir, prefer index, only use index). This fix also covers allowing us to check attributes (and hence do diff and status) on bare repositories. This was a somewhat larger change that I hoped because it had to change the cache key used for gitattributes files.
Michael Schubert 630c5a4a 2012-04-30T14:29:34 notes: add git_note_default_ref() Add git_note_default_ref to allow easy retrieval of the currently set default notes reference.