git2r 0.21.0
------------

* Added methods 'odb_blobs' and 'odb_objects' with missing repository
  signature. Internally, they use 'getwd' and 'discover_repository' to
  open a repository.

BUG FIXES

* The bundled libgit2 source code has been reverted to libgit2 v0.26.0
  (15e1193) from 14 June 2017 (same as in git2r v0.19.0) to fix memory
  alignment errors.

git2r 0.20.0
------------

IMPROVEMENTS

* Updated the bundled libgit2 source code to commit (fa8cf14) from 16
  December 2017.

* Improvements to the build configuration script.

BUG FIXES

* Fixed the internal callback for remote host authentication from
  hanging indefinitely when querying an ssh-agent for
  credentials. Now, the callback signals an error instead of trying
  again if the authentication failed the first time.

git2r 0.19.0
------------

IMPROVEMENTS

* Updated the bundled libgit2 source code to commit (15e1193)
  (v0.26.0) from 14 June 2017.

* Added 'checkout' argument to 'clone()'. Allows to control whether
  checkout of HEAD is performed after the clone is complete. Setting
  'checkout=FALSE' has similar effect as the git command line option
  '--no-checkout'. Andrzej K. Oles in #282.

BUG FIXES

* Fixed memory protection errors in the git2r C source code reported
  by the 'rchk' tool.

* Added missing calls to 'R_forceSymbols' and 'R_useDynamicSymbols' in
  the C init function.

* Enable argument 'all' to commit multiple modified (or deleted)
  files. John Blischak in #283

* Changed the configure script to determine the architecture of the
  machine earlier in order to fix an unsupported architecture error
  encountered on CentOS (#268, #288).

git2r 0.18.0
------------

BUG FIXES

* This is a bug-fix release to solve an error introduced in the build
  configuration on mac in version 0.17.0. The package failed with
  'unable to load shared object', see issue #267.

git2r 0.17.0
------------

IMPROVEMENTS

* Updated the bundled libgit2 source code to commit (6b0510e) from 20
  December 2016.

* Static linking of LibSSH2 on mac to support redistributable binary
  package with SSH transport enabled. Version 1.8.0 of LibSSH2 is
  downloaded and built from 'https://www.libssh2.org/download/'.

git2r 0.16.0
------------

IMPROVEMENTS

* Updated libgit2 source code to commit (6b0510e) from
  17 November 2016.

* Add the option 'all_untracked' to the 'status' method to show
  individual files in untracked directories if the 'untracked' option
  is TRUE.

* Add the 'tag_delete' method to delete an existing tag reference.

* Update build configuration to support OpenSSL 1.1.0.

* If the the 'getPass' package is installed the 'cred_ssh_key' method
  to create a new passphrase-protected ssh key credential object will
  call the 'getPass::getPass()' method if the private key is
  passphrase protected to allow for interactive input of the
  passphrase. The 'getPass' package is a suggested package. (Peter
  Meissner in PR #254)

* Add 'path' argument to the 'reset' method to enable path-specific
  unstage, i.e. resets the index entries for all paths to their state
  at HEAD

BUG FIXES

* Build configuration: use portable string equality comparison
  operator. This fixes the build e.g. for those without Bash as
  /bin/sh. (Sander Maijers in PR #243).

git2r 0.15.0
------------

IMPROVEMENTS

* Build configuration: 'pkg-config' is now used to find 'libssl', if
  possible (Elias Pipping in PR #231).

* Added a method to coerce a 'git_commit' object to a 'data.frame'.

* Added the method 'is_branch' to check if an object is a
  'git_branch'.

BUG FIXES

* Build configuration: fixed installation with parallel make (Kirill
  Müller in PR #228).

git2r 0.14.0
------------

IMPROVEMENTS

* Updated libgit2 source code to commit (785d8c48) from
  2016-03-04. This is release v0.24.0 of libgit2.

* Refactoring of the build scripts.

* Added a check that the configuration key is valid when setting a
  configuration variable and output a warning if the key is invalid.

* The status method now prints "working directory clean" instead of
  nothing when the working directory is clean.

* Added the 'refspec' argument to the 'fetch' method to specify the
  refs to fetch and which local refs to update.

* Added a workaround to the 'commit' method to list commits in a
  shallow clone since the libgit2 library does not yet support this.

git2r 0.13.1
------------

BUG FIXES

* This is a bug-fix release to solve problems introduced in version
  0.12.1:

  - The bundled libgit2 source code has been reverted to commit
    (98f7bd2) from 2015-08-05 (same as in v0.11.0) to fix memory
    alignment errors (clang-UBSAN and gcc-UBSAN).

  - OpenSSL is now used again on OS X to provide the cryptographic
    support for HTTPS connections to fix a significant compiler
    warning (arithmetic on a pointer to void is a GNU extension
    [-Wpointer-arith]) on r-devel-osx-x86_64-clang.

  - Several fixes to the build configuration on non-Windows platforms.

git2r 0.12.1
------------

NEW FEATURES

* Add 'remote_ls' method to list references in a remote repository akin to the
  `git ls-remote` command.

* Add 'remote_set_url' method to set the remote's url in the
  configuration.

* Add 'cred_token' S4 class to hold the name of the environmental
  variable with the secret. Default value for the name is GITHUB_PAT.

* It is now possible to checkout a specific file with the 'checkout'
  method.

* Add 'ssl_cert_locations' method to set libgit2 global option
  'GIT_OPT_SET_SSL_CERT_LOCATIONS'

* Add 'ceiling' argument to 'discover_repository' method to prevent
  search from walking up the parent directories.

CHANGES

* Improvments to the cred_* functions documentation.

* Add the following default arguments to the 'cred_ssh_key' method:
  publickey = '~/.ssh/id_rsa.pub' and privatekey = '~/.ssh/id_rsa'

* On OSX, cascade CPPFLAGS and LDFLAGS to libssh2 build to allow
  libssh2 to be built against a user-installed openssl, discovered by
  configure or from R's Makeconf. Necessary to build on OS X ≥ 10.11

* On OS X, SecureTransport is now used to provide the cryptographic
  support for HTTPS connections insead of OpenSSL.

* The search for libssh2 during configuration (non Windows) is now
  done via pkg-config.

* Update OpenSSL on Windows to v1.0.2d

* Update libgit2 source code to commit (3f5877d) from 2015-11-12.

BUG FIXES

* Add missing credentials argument to pull method.

* Fix config failure when user.name or user.email are passed as
  variables.

* Include 'configure.ac' in the distribution.

git2r 0.11.0
------------

NEW FEATURES

* Add punch card plot.

* Add branch argument to clone with name of the branch to checkout.

* Add 'force' argument to 'add' method to add ignored files.

* The following methods can now be called without the repository
  argument: 'branches', 'references', 'remotes', 'tags' and 'workdir'.
  When these methods are called without the repository argument, the
  repository is searched for with 'discover_repository' in the current
  working directory.

* Add name of branch to each item in branch_list.

* Add name of tag to each item in tags list.

* Add S4 class 'cred_env' to pass credentials in environment
  variables.

* SSH transport on Windows. This requires 'LibSSH2' and
  'OpenSSL'. These two libraries are downloaded from
  'https://github.com/rwinlib' during configuration of the package.

* Static linking of LibSSH2 on OSX to support redistributable binary
  package with SSH transport enabled. Version 1.6.0 of LibSSH2 is
  downloaded and built from 'https://github.com/libssh2/libssh2'.

IMPROVEMENTS

* Better summary output from S4 classes 'git_commit' and
  'git_repository'.

* Updated libgit2 source code to commit (98f7bd2) from 2015-08-05.

BUG FIXES

* Add imports to DESCRIPTION to fix CRAN notes.

* Fix plot function to use the repository argument 'x'

* Update configuration to build on OpenBSD.

* Fix checkout branch in empty repository.

* Fix path argument in rm_file.

* Internal refactoring of C code that raise error to prevent segfault.

git2r 0.10.1
------------

CHANGES

* Rename 'bundle_repo' method to 'bundle_r_package'

git2r 0.10.0
------------

NEW FEATURES

* Added method libgit2_sha that returns the commit id of the libgit2
  library that the bundled source code is based on.

* Added the method in_repository to determine if a directory is in a
  git repository.

CHANGES

* Add brief summary of the five latest commits when summarizing a
  git_respository.

* Added argument 'n' to the commits method to limit the number of
  commits in the output.

* Added the following methods with missing repository signature;
  commits, is_shallow, is_empty, is_detached, repository and
  status. Internally, these methods use getwd and discover_repository
  to open a repository.

* Changed configuration to raise error if the OpenSSL library is not
  found on non-Windows systems.

* Changed configuration to raise error if the iconv library is not
  found on OSX.

* Removed print of the configuration in the config method. Changed to
  return S3 class git_config.

* Removed print of the status in the status method. Changed to return
  S3 class git_status.

BUG FIXES

* Use OPENSSL_INCLUDES variable to build on Solaris.

* Use bundled regex library on Solaris.

git2 0.9
--------

CHANGES

* Single quote 'libgit2' and 'Git' in Description field

git2 0.8
--------

CHANGES

* Added bare argument to clone method to create a bare repository

* Added force argument to push to force local revision to the remote
  repo

* Updated libgit2 source code (2a0f67f)

* Internal refactoring of push

NEW FEATURES

* Added method rm_file to remove files

* Added 'all' argument to commit method to stage modified and deleted
  files

* Added shortcut to checkout previous branch with "-" which is
  synonymous with "@{-1}"

* Added session argument to commit method to add sessionInfo to commit
  message

* Added session argument to tag method to add sessionInfo to tag
  message

* Added  method to coerce POSIXlt to S4 class git_time

* Added method 'revparse_single' to find object specified by revision

* Added plot method

git2 0.7
---------

CHANGES

* Update libgit2 source code to commit (366e53d)

* Fix configuration of compiler options when the OpenSSL library is
  found on non-Windows platforms

git2r 0.6
---------

CHANGES

* Update Title and Description field in DESCRIPTION file.

git2r 0.5
---------

CHANGES

* Update libgit2 source code to commit (a291790)

* Use Alice and Bob as placeholder names in examples.

* Add COPYRIGHTS file to list all copyright holders.

* Fix significant compiler warnings from R CMD check with pedantic
  flag.

git2r 0.4
---------

CHANGES

* Fix build on Windows

git2r 0.3
---------

CHANGES

* Internal refactoring of merge method and merge tests.

* Update libgit2 source code to version v0.22.0

BUG FIXES

* Fix build on OSX.

git2r 0.2
---------

NEW FEATURES

* Add method 'odb_objects' to list all objects available in the
  database as a data.frame

* Add method 'odb_blobs' to list all blobs reachable from the commits
  in the object database.

DOCUMENTATION

* Added examples to all exported methods.

CHANGES

* Removed ggplot2 dependency. Moved plot functionality to the ggit
  package (https://github.com/ropensci/ggit).

* Renamed note_list method to notes

* Removed markdown_link method

* Renamed diff and merge arguments

IMPROVMENTS

* Better performance when summarizing contributions.

* Improved build of package.

BUG FIXES

* Fixed memory leaks.

* Fixed use of allocVector without protection.

* Added unload hook to unload DLL.

* Fix tree and blob tests to use writeChar instead of writeLines to
  have more control over line endings.

git2r 0.1
---------

NEW FEATURES

* Many new features and methods added, see the documention for a
  description of the methods below:

  - Blob: content, blob_create, hash, hashfile, is_binary, is_blob,
          length, show, summary.
  - Branch: branch_create, branch_delete, branch_get_upstream,
            branch_remote_name, branch_remote_url, branch_rename,
            branch_set_upstream and branch_target.
  - Commit: is_commit and parents.
  - Diff: diff and diff_print.
  - Fetch: fetch and fetch_heads.
  - Libgit2: libgit2_features and libgit2_version.
  - Merge: merge.
  - Note: note_create, note_default_ref, note_list and note_remove.
  - Pull: pull.
  - Push: push.
  - Remote: remote_add, remote_remove, remote_rename and remote_url.
  - Repository: discover_repository and is_shallow
  - Reset: reset.
  - Stash: stash, stash_drop, stash_list, show and summary.

* Improved error messages to give more detailed information including
  which function raised the error.

NEW S4 CLASSES

* The following new S4 classes to handle the libgit2 data structures:
  - cred_ssh_key
  - cred_user_pass
  - git_blame
  - git_blame_hunk
  - git_blob
  - git_diff
  - git_diff_file
  - git_diff_hunk
  - git_diff_line
  - git_fetch_head
  - git_merge_result
  - git_note
  - git_reflog_entry
  - git_stash
  - git_transfer_progress
  - git_tree

CHANGES

* Renamed methods:
  - is.bare to is_bare
  - is.empty to is_empty
  - is.head to is_head
  - is.local to is_local

* Rename hex to sha for the 40-character SHA-1 hash in method
  arguments and S4 class slots.

git2r 0.0.8
-----------

NEW FEATURES

* Added method to clone repository

* Added method config to set user.name and user.email in a repository

* Added method status to display state of a repository

git2r 0.0.7
-----------

NEW FEATURES

* Added method to create a commit

CHANGES

* Improved error checking

git2r 0.0.6
-----------

NEW FEATURES

* Added method init to create a new Git repository

CHANGES

* Removed usage of testthat package when testing the package

* Removed bundled zlib in src/zlib and instead link against zlib
  shipped with R.

* Dropped usage of external pointers, S4 git_repository now keeps
  track of the path of the repository.

git2r 0.0.5
-----------

CHANGES

* Renamed S4 class repository to git_repository

NEW FEATURES

* Added method commits to list all commits in repository

* Added S4 class git_commit to hold infformation of a commit

* Added S4 class git_time to hold time of an action

* Added slot walker to S4 class git_repository

git2r 0.0.4
-----------

NEW FEATURES

* Added method remote_url to get the url a remote in a repository

* Added method workdir to get workdir of a repository

* Added method remotes to list remotes of a repository

* Added S4 class git_signature to hold information of an action
  signature (e.g. for committers, taggers, etc)

CHANGES

* Renamed S4 class tag to git_tag

* Renamed S4 class branch to git_branch

* Renamed S4 class reference to git_reference

git2r 0.0.3
-----------

NEW FEATURES

* Added method branches to list branches

* Added method head to retrieve head

* Added method is.head to check if a branch is head

* Added method is.local to check if a branch is local

* Added S4 class branch to hold information of a git branch

* Added method to show a reference

* Added method to list all references in a repository

* Added S4 class reference to hold information of a git reference

git2r 0.0.2
-----------

NEW FEATURES

* Added is.bare method to check if a repository is bare

* Added is.empty method to check if a repository is empty

git2r 0.0.1
-----------

NEW FEATURES

* Added S4 class repository to work with a git repository

* Initial package structure
