1. 26 Nov, 2011 2 commits
    • Rename all `_close` methods · 45e79e37
      There's no difference between `_free` and `_close` semantics: keep
      everything with the same name to avoid confusions.
      Vicent Marti committed
    • repository: Change ownership semantics · 9462c471
      The ownership semantics have been changed all over the library to be
      consistent. There are no more "borrowed" or duplicated references.
      
      Main changes:
      
      	- `git_repository_open2` and `3` have been dropped.
      
      	- Added setters and getters to hotswap all the repository owned
      	objects:
      
      		`git_repository_index`
      		`git_repository_set_index`
      		`git_repository_odb`
      		`git_repository_set_odb`
      		`git_repository_config`
      		`git_repository_set_config`
      		`git_repository_workdir`
      		`git_repository_set_workdir`
      
      	Now working directories/index files/ODBs and so on can be
      	hot-swapped after creating a repository and between operations.
      
      	- All these objects now have proper ownership semantics with
      	refcounting: they all require freeing after they are no longer
      	needed (the repository always keeps its internal reference).
      
      	- Repository open and initialization has been updated to keep in
      	mind the configuration files. Bare repositories are now always
      	detected, and a default config file is created on init.
      
      	- All the tests affected by these changes have been dropped from the
      	old test suite and ported to the new one.
      Vicent Marti committed
  2. 22 Nov, 2011 3 commits
  3. 21 Nov, 2011 4 commits
  4. 18 Nov, 2011 6 commits
  5. 16 Nov, 2011 1 commit
  6. 06 Nov, 2011 2 commits
    • refs: Partial rewrite for read-only refs · d4a0b124
      This new version of the references code is significantly faster and
      hopefully easier to read.
      
      External API stays the same. A new method `git_reference_reload()` has
      been added to force updating a memory reference from disk. In-memory
      references are no longer updated automagically -- this was killing us.
      
      If a reference is deleted externally and the user doesn't reload the
      memory object, nothing critical happens: any functions using that
      reference should fail gracefully (e.g. deletion, renaming, and so on).
      
      All generated references from the API are read only and must be free'd
      by the user. There is no reference counting and no traces of generated
      references are kept in the library.
      
      There is no longer an internal representation for references. There is
      only one reference struct `git_reference`, and symbolic/oid targets are
      stored inside an union.
      
      Packfile references are stored using an optimized struct with flex array
      for reference names. This should significantly reduce the memory cost of
      loading the packfile from disk.
      Vicent Marti committed
    • refs: split internal and external references · a46ec457
      Currently libgit2 shares pointers to its internal reference cache with
      the user. This leads to several problems like invalidation of reference
      pointers when reordering the cache or manipulation of the cache from
      user side.
      
      Give each user its own git_reference instead of leaking the internal
      representation (struct reference).
      
      Add the following new API functions:
      
      	* git_reference_free
      	* git_reference_is_packed
      
      Signed-off-by: schu <schu-github@schulog.org>
      schu committed
  7. 29 Oct, 2011 1 commit
  8. 28 Oct, 2011 1 commit
  9. 27 Oct, 2011 1 commit
    • windows: Add support for non-UTF codepages · 11d51ca6
      Our previous assumption that all paths in Windows are encoded in UTF-8
      is rather weak, specially when considering that Git is
      encoding-agnostic.
      
      These set of functions allow the user to change the library's active
      codepage globally, so it is possible to access paths and files on all
      international versions of Windows.
      
      Note that the default encoding here is UTF-8 because we assume that 99%
      of all Git repositories will be in UTF-8.
      
      Also, if you use non-ascii characters in paths, anywhere, please burn on
      a fire.
      Vicent Marti committed
  10. 20 Oct, 2011 1 commit
  11. 18 Oct, 2011 1 commit
  12. 13 Oct, 2011 2 commits
  13. 09 Oct, 2011 2 commits
  14. 05 Oct, 2011 3 commits
    • libgit2 v0.15.0 "Das Wunderbar Release" · 3eaf34f4
      I am aware the codename is not gramatically correct in any language.
      
      Check the COPYING file for the detailed terms on libgit2's license. Check
      the AUTHORS file for the full list of guilty parties.
      
      As we slowly stabilize the API, we've dropped 1 function from the library,
      and changed the signature of only 5 of them. There's of course a good
      chunk of new functionality, and a thousand bug fixes.
      
      In this release of libgit2:
      
      	- Changed `git_blob_rawsize`: Now returns `size_t` instead of int, allowing
      	files >4GB in 64 bit systems.
      
      	- Removed `git_commit_message_short`: Please use `git_commit_message`
      	to get the full message and decide which is the "short view" according
      	to your needs (first line, first 80 chars...)
      
      	- Added `git_commit_message_encoding`: Returns the encoding field of a commit
      	message, if it exists.
      
      	- Changed `git_commit_create`, `git_commit_create_v`: New argument `encoding`, which
      	adds a encoding field to the generated commit object.
      
      	- Added `git_config_find_system`: Returns the path to the system's global config
      	file (according to the Core Git standards).
      
      	- Changed `git_config_get_XX`, `git_config_set_XX`: the `long` and `int` types have
      	been replaced by `int64` and `int32` respectively, to make their meaning more
      	obvious.
      
      	- Added `git_indexer`: An interface to index Git Packfiles has been added in the
      	`git2/indexer.h` header.
      
      	- Changed `git_reflog_entry_XX`: Reflog entries are now returned as `git_oid *` objects
      	instead of hexadecimal OIDs.
      
      	- Added `git_remote`: More fetch functionality has been added to the `git2/remote.h`
      	functionality. Local, Smart HTTP and Git protocols are now supported.
      
      	- Added `git_repository_head`: Returns the HEAD of the repository.
      
      	- Added `git_repository_config_autoload`: Opens the configuration file of a repository,
      	including the user's and the system's global config files, if they can be found.
      
      	- Changed `git_signature_now`: Now returns an error code; the signature is stored by
      	reference.
      Vicent Marti committed
  15. 01 Oct, 2011 1 commit
  16. 30 Sep, 2011 2 commits
  17. 29 Sep, 2011 1 commit
  18. 27 Sep, 2011 2 commits
  19. 22 Sep, 2011 1 commit
  20. 19 Sep, 2011 2 commits
  21. 18 Sep, 2011 1 commit
    • Cleanup legal data · bb742ede
      1. The license header is technically not valid if it doesn't have a
      copyright signature.
      
      2. The COPYING file has been updated with the different licenses used in
      the project.
      
      3. The full GPLv2 header in each file annoys me.
      Vicent Marti committed