diff --git a/.travis.yml b/.travis.yml index 362b8822..85ea5801 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,68 +1,36 @@ -# Travis-CI Build for libgit2 -# see travis-ci.org for details +language: perl -language: c +perl: + - "5.10" + - "5.12" + - "5.14" + - "5.16" + - "5.18" + - "5.19" -os: - - linux - - osx - -compiler: - - gcc - - clang - -# Settings to try env: - global: - - secure: "YnhS+8n6B+uoyaYfaJ3Lei7cSJqHDPiKJCKFIF2c87YDfmCvAJke8QtE7IzjYDs7UFkTCM4ox+ph2bERUrxZbSCyEkHdjIZpKuMJfYWja/jgMqTMxdyOH9y8JLFbZsSXDIXDwqBlC6vVyl1fP90M35wuWcNTs6tctfVWVofEFbs=" - matrix: - - OPTIONS="-DTHREADSAFE=ON -DCMAKE_BUILD_TYPE=Release" - - OPTIONS="-DBUILD_CLAR=ON -DBUILD_EXAMPLES=ON" + - RELEASE_TESTING=1 NETWORK_TESTING=1 AUTOMATED_TESTING=1 -matrix: - fast_finish: true - exclude: - - os: osx - compiler: gcc - include: - - compiler: i586-mingw32msvc-gcc - env: OPTIONS="-DBUILD_CLAR=OFF -DWIN32=ON -DMINGW=ON -DUSE_SSH=OFF" - os: linux - - compiler: gcc - env: COVERITY=1 - os: linux - allow_failures: - - env: COVERITY=1 +cache: + - apt install: - - ./script/install-deps-${TRAVIS_OS_NAME}.sh + - sudo apt-get -qq update + - sudo apt-get -qq install libssl-dev libssh2-1-dev openssh-client openssh-server + - cpanm --quiet --notest Dist::Zilla Dist::Zilla::PluginBundle::Author::ALEXBIO Pod::Coverage::TrustPod + - cpanm --quiet --notest Devel::Cover::Report::Coveralls Dist::Zilla::App::Command::cover + - dzil listdeps --missing | cpanm --quiet --notest -# Run the Build script and tests script: - - script/cibuild.sh - -# Run Tests -after_success: - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install valgrind; fi - - if [ "$TRAVIS_OS_NAME" = "linux" ]; then valgrind --leak-check=full --show-reachable=yes --suppressions=./libgit2_clar.supp _build/libgit2_clar -ionline; fi - -# Only watch the development and master branches -branches: - only: - - development - - master + - ssh-keygen -t rsa -f ~/.ssh/id_rsa -N "" -q + - cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + - ssh-keyscan -t rsa localhost >> ~/.ssh/known_hosts + - dzil cover -ignore_re ^deps -ignore_re CORE -ignore_re ^const -test -report coveralls -# Notify development list when needed notifications: - irc: - channels: - - irc.freenode.net#libgit2 - on_success: change - on_failure: always - use_notice: true - skip_join: true - campfire: - on_success: always - on_failure: always - rooms: - - secure: "sH0dpPWMirbEe7AvLddZ2yOp8rzHalGmv0bYL/LIhVw3JDI589HCYckeLMSB\n3e/FeXw4bn0EqXWEXijVa4ijbilVY6d8oprdqMdWHEodng4KvY5vID3iZSGT\nxylhahO1XHmRynKQLOAvxlc93IlpVW38vQfby8giIY1nkpspb2w=" + recipient: + - alessandro@ghedini.me + - jacquesg@cpan.org + email: + on_success: change + on_failure: always diff --git a/Changes b/Changes new file mode 100644 index 00000000..6113f519 --- /dev/null +++ b/Changes @@ -0,0 +1,501 @@ +Revision history for Git-Raw + +{{$NEXT}} + + - Update libgit2 to 16e7596 + - Remote -> name() now accepts an optional "problems" parameter + +0.40 2014-06-25 21:05:55SAST+0200 Africa/Johannesburg + + - Tag -> tagger() now returns undef if a tag doesn't have a tagger instead + of crashing (GH#103, GH#104) + +0.39 2014-06-12 18:06:58SAST+0200 Africa/Johannesburg + + - Fixed Windows specific path comparison test case (verified this time) + +0.38 2014-06-11 20:03:53SAST+0200 Africa/Johannesburg + + - Fixed Windows specific path comparison test case + - (Possibly) Fix cross-compilation issues with ARM architectures + +0.37 2014-06-08 17:25:17SAST+0200 Africa/Johannesburg (TRIAL RELEASE) + + - Removed Index -> add_conflict() (Incompatible change) (GH#97) + - Index -> read() now takes an optional force argument (GH#97) + - Added Raw -> features() method. This may be used to query the features + built into libgit2 (and thus Git::Raw). + - Added Repository methods (GH#97): + + Repository -> cherry_pick() + + Repository -> revert() + - Update libgit2 to df19219 (GH#99,GH#102) + - Added Index methods (GH#100): + + Index -> capabilities() + + Index -> path() + + Index -> add_all() + + Index -> remove_all() + - Improved documentation (GH#101) + - Improved the error model (GH#101) + All errors are now Git::Raw::Error objects. Extended error information + provided by libgit2 may be queried (code/category/message) via the + corresponding accessor. All existing code should continue to work as is + (via "" and bool overloads). + - Added Error methods (GH#101): + + Error -> code() + + Error -> category() + + Error -> message() + - Removed constants from Filter (Incompatible change) (GH#101): + They are now located in the Error namespace. + +0.36 2014-05-02 15:59:18SAST+0200 Africa/Johannesburg (TRIAL RELEASE) + + - Repository -> reset() now understands a 'hard' reset (GH #96) + - Removed the unused/unimplemented 'completion' callback type from Repository + and Remote (GH #96) + - Update libgit2 to 89e9c16 + - Threaded libgit2 is now disabled when using the SunPro compiler (even with pthreads) + - Should now build on older versions of MidnightBSD and Cygwin + - Hopefully now builds against libssh2 if its available on OpenBSD + +0.35 2014-04-28 18:43:14SAST+0200 Africa/Johannesburg + + - Added support for building with compilers other than gcc/clang (GH #93): + + Windows: MSVC + + Solaris: SunPro + - Silenced a number of warnings (GH #93) + - libgit2 is now built with the correct bits setting when building a 32-bit + version on a 64-bit system (GH #93) + - Remote -> is_url_supported() test cases only run when network testing + is enabled. (GH #93) + - Set core.autocrlf to "true" in the test repository for diff tests. This + fixes test cases failures on Windows (GH #93) + - Use file:/// on Windows for local push tests. (GH #93) + - Users can now specify the OpenSSL and/or libssh2 to use as argument + to Makefile.PL (GH #94): + + --with-openssl-include + + --with-openssl-libs + + --with-libssh2-include + + --with-libssh2-lib + - Improve reliability of time-dependent tests + +0.34 2014-04-27 12:38:41SAST+0200 Africa/Johannesburg (TRIAL RELEASE) + + - Add Repository -> message() method (GH#72) (thanks, @jacquesg!) + - Add Reference methods (GH#73) (thanks, @jacquesg!): + + Reference -> shorthand() + + Reference -> is_tag() + + Reference -> is_note() + - Enable libgit2 threading support (GH#74) (thanks, @jacquesg!) + - Add support for push callbacks (GH#75) (thanks, @jacquesg!) + - Update to libgit2 4f9d541 (GH#76) (GH#78) (GH#85) (thanks, @jacquesg!) + - Add support for SSH interactive login (GH#78) (thanks, @jacquesg!) + - Add Push -> update_tips() method (GH#79) (thanks, @jacquesg!) + - Make clone tests more robust (GH#79) (thanks, @jacquesg!) + - Add Repository -> is_head_detached() (GH#83) (thanks, @jacquesg!) + - Allow "tree" parameter to be undef in Repository -> tree() + (GH#81) (thanks, @jacquesg!) + - Added additional diff flags (GH#86): + + include_typechange + + include_typechange_trees + + ignore_case + + skip_binary_check + + enable_fast_untracked_dirs + + show_untracked_content + + show_unmodified + - Repository -> branches() now takes an optional branch + type argument (GH#85) + - Add Remote methods (GH#87): + + Remote -> pushurl() + + Remote -> check_cert() + + Remote -> clear_refspecs() + + Remote -> refspec_count() + + Remote -> refspecs() + + Remote -> fetch() + + Remote -> is_url_valid() + + Remote -> is_url_supported() + - Add RefSpec methods (GH#87): + + RefSpec -> dst_matches() + + RefSpec -> src_matches() + + RefSpec -> string() + + RefSpec -> direction() + + RefSpec -> transform() + + RefSpec -> rtransform() + + RefSpec -> is_force() + - Add Branch methods (GH#84): + + Branch -> remote_name() + + Branch -> upstream_name() + - The Reference returned by Branch -> remote() now has enough information + to be used as a real Reference. Previously it didn't capture the owning + Repository. (GH#84) + - Add Commit methods (GH#88): + + Commit -> ancestor() + - Add Graph methods (GH#88): + + Graph -> is_ancestor_of() + - Repository -> merge_base() now accepts a "commitish" (GH#88) + - Add Diff methods (GH#77): + + Diff -> find_similar() + + Diff -> stats() + - Add Diff::Stats methods (GH#77): + + Diff::Stats -> insertions() + + Diff::Stats -> deletions() + + Diff::Stats -> files_changed() + + Diff::Stats -> buffer() + - Add PathSpec methods (GH#89): + + PathSpec -> new() + + PathSpec -> match() + - Add PathSpec::MatchList methods (GH#89): + + PathSpec::MatchList -> count() + + PathSpec::MatchList -> entries() + + PathSpec::MatchList -> failed_count() + + PathSpec::MatchList -> failed_entries() + - Fixed branch test cases: + There may be a 1-2 second difference in time between commiting and + comparing against the current signature. + - Fixed internal callback leaks (GH#90) + - Cred -> sshkey() now doesn't require a passphrase (GH#90) + - 'progress' callback for Repository -> clone() and Remote -> set_callbacks() + has been renamed to 'sideband_progress' (incompatible change). + - Add Walker methods (GH#91): + + Walker -> push_range() + - Compiler options should be determined in Makefile.PL context (GH#91) + Fixes problems building a 32-bit perl on a 64-bit system + +0.33 2014-04-14 12:28:23+02:00 Europe/Rome + + - Fix segfaults caused by invalid object creation (GH#66) (thanks, @pipcet!) + - Add Config -> default() method (GH#67) (thanks, @magnolia-k!) + - Do not fail when a lightweight tag is found in the Tag->foreach() callback + (GH#68) (thanks, @pipcet!) + - Add Tree::Entry -> file_mode() method (GH#69) (thanks, @pipcet!) + - Repository -> merge() now takes %merge_opts and %checkout_opts as 2 + separate parameters. (incompatible change) (GH#70) + - Merge options parameter member 'automerge' has been renamed to 'favor', + inline with libgit2 API changes. (incompatible changes) (GH#70) + It has also learned about a 'union' merge. + - Checkout options has learned new options: 'target_directory', 'ancestor_label', + 'our_label' and 'their_label'. (GH#70) + - Checkout strategy has additional options: (GH#70) + 'use_ours', 'use_theirs', 'skip_locked_directories', 'dont_overwrite_ignored', + 'conflict_style_merge', 'conflict_style_diff3' and 'disable_pathspec_match'. + - Added new Repository methods (#GH70): + + Repository -> merge_analysis() + + Repository -> merge_base() + - Added new Index methods (#GH70): + + Index -> write_tree_to() + + Index -> checkout() + + Index -> entries() + + Index -> add_conflict() + + Index -> remove_conflict() + - Added new Commit method (#GH70): + + Commit -> merge() + - Added new Tree method (#GH70): + + Tree -> merge() + - Index -> add() now either takes a path or a Index::Entry (GH#70) + - Remote->create_inmemory() has been replaced by Remote->create_anonymous() + (incompatible change) (GH#71). + The order of 'url' and 'fetchspec' has also been reversed to bring it + inline with the upstream changes. + - Update libgit2 to bcc6229 + +0.32 2014-03-16 15:02:47+01:00 Europe/Rome + + - Update libgit2 to 648a985 (GH#53, GH#56) (thanks, @jacquesg!) + - Minor Win32 build fix + - Add Reflog class (GH#55) (thanks, @jacquesg!) + - Suport non-default stash flags (GH#56) (thanks, @jacquesg!) + - Clean-up test repositories after test run (GH#59) (thanks, @jacquesg!) + - Rename classes (incompatible changes): + + Git::Raw::TreeBuilder -> Git::Raw::Tree::Builder + + Git::Raw::TreeEntry -> Git::Raw::Tree::Entry + - Improve patch and diff support (GH#61) (thanks, @jacquesg!) + + New classes: Git::Raw::Patch, Git::Raw::Diff::Delta, + Git::Raw::Diff::Hunk, Git::Raw::Diff::File + - Improve index conflicts handling (GH#62) (thanks, @jacquesg!) + - Add support for filters (GH#57) (thanks, @jacquesg!) + - Add support for blame (GH#63) (thanks, @jacquesg!) + - Visual Studio build fixes (GH#64) (thanks, @jacquesg!) + - Correctly handle Git::Raw::Remote refcount (GH#65) (thanks, @jacquesg!) + +0.31 2014-02-08 19:07:55 Europe/Rome + + - Fix include paths on FreeBSD (GH#49) (GH#50) (thanks, @jacquesg!) + - (Try to) support building libgit2 on Windows + - Properly create Commit objects in Walker -> next() + (GH#52) (thanks, @karel-m for the test case!) + +0.30 2014-01-26 14:39:08 Europe/Rome (TRIAL RELEASE) + + - Add "paths" checkout option (GH#23) (thanks, @jacquesg!) + - Various fixes to make it possible to build with MSVC + (GH#24, GH#25, GH#26, GH#27, GH#28) (thanks, @jacquesg!) + - Repository -> remotes() now returns a list like branches() and refs() + (incompatible change) + - Repository -> tags() now returns a list like branches() and refs() + (incompatible change) + - Add Commit -> summary() method (GH#32) (thanks, @jacquesg!) + - Add new Repository methods (GH#33) (thanks, @jacquesg!): + + Repository -> state() + + Repository -> state_cleanup() + + Repository -> is_shallow() + - Add new clone options (GH#34) (thanks, @jacquesg!): + + "remote_name" + + "checkout_branch" + + "ignore_cert_errors" + + "disable_checkout" + - Update to libgit2 426d845 + - Move Blob/Tree -> is_blob() and -> is_tree() to XS + (GH#36) (thanks, @magnolia-k!) + - Add Repository -> new() (GH#37) (thanks, @jacquesg!) + - Add Remote -> create_inmemory() and Remote -> ls() + (GH#37) (thanks, @jacquesg!) + - Add support for more callbacks for: + + Remote -> callbacks() + + Repository -> clone() + + Repository -> checkout() + (GH#39) (thanks, @jacquesg!) (incompatible change) + - Add Repository -> path_is_ignored() (GH#38) (thanks, @jacquesg!) + - Improve Repository -> status() (incompatible change): + + It can now return the statuses of multiple files (GH#29) + + It can now detect file renames (GH#30) (thanks, @jacquesg!) + - Improve Repository -> diff() and Tree -> diff(), they can now take options + and flags (GH#42) (thanks, @jacquesg!) (incompatible change) + - Add Signature -> default() method (GH#43) (thanks, @jacquesg!) + - Repository -> reset() now takes an %opts argument, which can also be used + to specify the entries that should be updated (like "git reset -- file") + (GH#44) (thanks, @jacquesg!) (incompatible change) + - Reference -> target() now takes an additional optional parameter $new_target + used to change the reference's target (GH#47) (thanks, @jacquesg!) + - Add Index -> has_conflicts() and Index -> conflict_cleanup() methods + (GH#46) (thanks, @jacquesg!) + - Add Repository -> merge() method (GH#31) (thanks, @jacquesg!) + +0.29 2013-11-24 20:17:02 Europe/Rome + + - Update to libgit2 v0.20 + + Remove Branch -> foreach() (incompatible change) + + Repository -> branches() now returns a "real" list instead of an array + reference + - Rename Cred -> plaintext() to Cred -> userpass() and Cred -> keyfile() + to Cred -> sshkey() (incompatible change) + - Add Cred -> sshagent() method + - Add is_tree() and is_blob() to Tree and Blob (GH#22) (thanks, @ap!) + +0.28 2013-11-18 15:00:10 Europe/Rome + + - Add Blob -> id() (GH#15) (thanks, @hoelzro!) + - Add TreeBuilder API (GH#16) (thanks, @hoelzro!) + - Add Reference -> create() (GH#17) (thanks, @hoelzro!) + - Add Repository -> refs() method (GH#19) (thanks, @hoelzro!) + - Make Commit -> create() take an optional parameter indicating the name + of a reference to update (GH#19) (thanks, @hoelzro!) + +0.27 2013-10-23 12:34:13 Europe/Rome + + - Update to libgit2 1c74686 + - Add Diff -> print() which replaces Diff -> patch() and Diff -> compact() + - Remove deprecated methods (incompatible change): + + Remote -> cred_acquire() + + Diff -> patch() + + Diff -> compact() + +0.26 2013-10-09 16:11:42 Europe/Rome + + - Fix build with glibc < 2.17 + +0.25 2013-10-09 15:17:56 Europe/Rome + + - Update to libgit2 711333e + + Rename Branch -> tracking() to upstream() (incompatible change) + + Rename Remote -> fetchspec() to add_fetch and pushspec to add_push() + They will not return the remote spec anymore (incompatible change) + - Enable support for libssh2 at build-time + - Add support for SSH key credentials via Cred -> keyfile() + - Add Remote -> callbacks() method + - Add Remote -> load() method + +0.24 2013-03-31 13:06:30 Europe/Rome + + - Update libgit2 to d2a4a54 + - Config -> bool()/int()/str() now return undef when a configuration variable + is not found, instead of segfaulting (GH#13) + +0.23 2013-03-25 14:09:09 Europe/Rome + + - Update libgit2 to 3f21a23 + + The Branch -> move() method does not modify the Branch object anymore, as + per the new underlying libgit2 implementation. An additional lookup is + needed in order to get the new object (incompatible change) + + Remove Reference -> is_packed() method since it disappeared from libgit2 + - Add Branch -> tracking() method + +0.22 2013-02-23 15:19:30 Europe/Rome + + - Remove test_repo after tests, to allow "make test" to run multiple times + (should fix OpenBSD CPAN Testers) + - Update libgit2 to 5eeb357 + +0.21 2013-02-20 17:41:56 Europe/Rome + + - Reference -> target(), Tree -> diff() and TreeEntry -> object() methods do + not accept a Repository argument anymore (incompatible change) + - Fix memory leak in Tree -> entry_bypath() (GH#11) + - Tag -> delete() is now an object method just like other delete() methods + (incompatible change) + - Do not use Makefile.embed to build libgit2 to avoid FTBFS on *BSD + - Update libgit2 to fd69c7b + +0.20 2013-01-26 13:46:00 Europe/Rome + + - Documentation fixes (GH#6) (thanks, @daknok!) + - Add note in the documentation about the API being unstable + - Update libgit2 to f42beff + + Update checkout strategies' names: "update_unmodified", "update_missing", + "update_modified" and "update_untracked" have been removed (incompatible + change) + - Repository -> head() now takes an additional optional parameter $new_head + used to change the repository's HEAD (GH#7) + - Repository -> workdir() now takes an additional optional parameter $new_dir + used to change the repository's working directory + (GH#8, #9) (thanks, @thaljef) + - Add Tree -> entry_by{name,path}() methods (GH#10) (thanks, @keedi!) + +0.19 2013-01-03 19:24:50 Europe/Rome + + - Fix errors in the Push and Repository examples (no functional changes) + - Reference -> target() does not need a Repository argument anymore (its + documentation was also incorrect) (thanks, @ruz!) + - Repository -> head() now returns a Reference like the underlying libgit2 API + instead of a Commit (incompatible change) (thanks, @ruz!) + - Update libgit2 to 07871d3 + + Rename Remote -> add() method to Remote -> create() and remove + Remote -> new() (incompatible changes) + + Update Repository -> clone() to take an URL again (instead of a remote) + and a generic %opts parameter (incompatible changes) + - Update Repository -> checkout() to take a generic %opts parameter and improve + its documentation (incompatible change) + +0.18 2012-12-14 18:39:16 Europe/Rome + + - Add Walker -> push_*() and hide_*() methods (thanks, @ruz!) + - Update libgit2 to 37ac443 + - Add Push and Cred classes + + Now pushing to remote HTTP(S) repositories is supported + - Fix a double-free bug in Reference -> delete() method (GH#4) + - Add Reference -> owner() method (thanks, @ruz) + - Now Repository -> clone() takes a Remote argument instead of a URL to support + authentication while cloning over HTTP(S) (incompatible change) + +0.17 2012-12-04 13:49:35 Europe/Rome + + - Update libgit2 to da82043 + + Add Tag -> foreach() method + - Documentation fixes (no functional changes) + - Add Branch -> is_head() method + - Add Config -> new(), add_file(), refresh() and foreach() methods + - Add Index -> read_tree() and remove() methods + - Add Repository -> checkout() method + - Support custom checkout strategies in Repository -> clone() and checkout() + methods + + This adds an additional parameter to Repository -> clone() + (incompatible change) + - SSL support is now enabled if OpenSSL is present at build time + +0.16 2012-11-30 12:43:50 Europe/Rome + + - Load Git::Raw from other modules too (thanks, @ruz!) + - Make Branch ISA Reference (thanks, @ruz!) + - Add Branch -> foreach() method (thanks, @ruz!) + + Add Repository -> branches() method + - Add Repository -> ignore() method + - Add Stash class + - The Remote -> name() and url() methods now take an optional argument that + is used to change the name/url of a remote. + - Add RefSpec class + + Add Remote -> {fetch,push}spec() methods + - Add Blob -> size() method + - Add Blob -> create() method + + Add Repository -> blob() method + - Add Reference -> is_{branch,packed,remote}() methods (thanks, @ruz!) + - Add Branch -> move() method + +0.15 2012-10-30 22:39:50 Europe/Rome + + - The $is_bare check in Repository -> clone() was inverted + - Update libgit2 to 6c21358a8 + + Remove Index -> uniq() and append() methods + +0.14 2012-10-19 12:26:40 Europe/Rome + + - Test fixes (GH#2) (thanks, @vlet) + - Update libgit2 to b2b571ce0 + +0.13 2012-10-02 18:27:05 Europe/Rome + + - Fix test failures + +0.12 2012-09-22 19:24:45 Europe/Rome + + - Fix typo in Reference's docs + - Add a proper Changes file + - Update libgit2 to d75074: + + Remove Branch -> delete() method (incompatible change) + + Add Repository -> clone() method + +0.11 2012-08-23 09:41:38 Europe/Rome + + - Various documentation fixes (no functional changes) + +0.10 2012-08-22 18:53:04 Europe/Rome + + - Add delete() method for all the objects that support it + - Move Repository -> tag(), branch() and walker() functionality to the + respective object constructors + +0.09 2012-08-22 17:56:59 Europe/Rome + + - Add lookup() method for all the objects that support it + - Add Diff class + +0.08 2012-08-21 15:15:17 Europe/Rome + + - Add Repository -> reset() method + - Add Branch class and Repository -> branch() method + - Embed libgit2 sources to ease building + +0.07 2012-08-20 19:02:44 Europe/Rome + + - Add Repository -> discover() method + +0.06 2012-08-17 14:13:05 Europe/Rome + + - Add Remote class + - Add Repository -> tags() method + +0.05 2012-08-09 15:56:21 Europe/Rome + + - Add Reference class + +0.04 2012-08-08 21:42:46 Europe/Rome + + - Add Blob class + - Add TreeEntry class and Tree -> id() method + - Add Commit -> tree() method + - Rename Config -> string() method to Config -> str() + +0.03 2012-08-06 16:45:57 Europe/Rome + + - Add proper support for commit parents + - Add Walker class + - Add Repository -> status() method + - Add more Config methods + +0.02 2012-08-05 20:18:56 Europe/Rome + + - Improve exception messages + - Add Commit -> id() method + - Add Repository -> lookup() and -> head() methods + - Add Tag class + +0.01 2012-08-05 11:43:13 Europe/Rome + + - Initial version diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP new file mode 100644 index 00000000..7685dbe3 --- /dev/null +++ b/MANIFEST.SKIP @@ -0,0 +1,29 @@ +Raw.bs +Raw.c +Raw.o +const-c-category.inc +const-c-error.inc +const-xs-category.inc +const-xs-error.inc +t/test_repo +t/merge_repo +t/callbacks_repo +.*\.o +.*\.a +.*\.pc$ +deps/libgit2/cmake +deps/libgit2/docs +deps/libgit2/tests +deps/libgit2/examples +deps/libgit2/script +deps/libgit2/CMakeLists.txt +deps/libgit2/libgit2.pc.in +deps/libgit2/libgit2_clar.supp +deps/libgit2/api.docurium +deps/libgit2/Makefile.embed +deps/libgit2/CONVENTIONS.md +deps/libgit2/CONTRIBUTING.md +deps/libgit2/PROJECTS.md +cover_db/ +.*\.gcda +.*\.gcno diff --git a/README.pod b/README.pod new file mode 120000 index 00000000..3e662d97 --- /dev/null +++ b/README.pod @@ -0,0 +1 @@ +lib/Git/Raw.pm \ No newline at end of file diff --git a/Raw.xs b/Raw.xs new file mode 100644 index 00000000..c7afa5d8 --- /dev/null +++ b/Raw.xs @@ -0,0 +1,1761 @@ +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" + +#define NEED_sv_2pv_flags +#define NEED_sv_2pvbyte_GLOBAL +#define NEED_newRV_noinc_GLOBAL + +#include "ppport.h" + +#ifdef GIT_SSH +#include +#endif + +#include +#include +#include + +/* internally generated errors */ +#define ASSERT -10000 +#define USAGE -10001 +#define RESOLVE -10002 + +/* internally generated classes */ +#define INTERNAL -20000 + +#ifdef _MSC_VER +#undef ERROR +#undef PASSTHROUGH +#undef CALLBACK +#endif + +/* remap libgit2 error enum's to defines */ +#define OK GIT_OK +#define ERROR GIT_ERROR +#define ENOTFOUND GIT_ENOTFOUND +#define EEXISTS GIT_EEXISTS +#define EAMBIGUOUS GIT_EAMBIGUOUS +#define EBUFS GIT_EBUFS +#define EUSER GIT_EUSER +#define EBAREREPO GIT_EBAREREPO +#define EUNBORNBRANCH GIT_EUNBORNBRANCH +#define EUNMERGED GIT_EUNMERGED +#define ENONFASTFORWARD GIT_ENONFASTFORWARD +#define EINVALIDSPEC GIT_EINVALIDSPEC +#define EMERGECONFLICT GIT_EMERGECONFLICT +#define ELOCKED GIT_ELOCKED +#define EMODIFIED GIT_EMODIFIED +#define PASSTHROUGH GIT_PASSTHROUGH +#define ITEROVER GIT_ITEROVER + +/* remap libgit2 class enum's to defines */ +#define NONE GITERR_NONE +#define NOMEMORY GITERR_NOMEMORY +#define OS GITERR_OS +#define INVALID GITERR_INVALID +#define REFERENCE GITERR_REFERENCE +#define ZLIB GITERR_ZLIB +#define REPOSITORY GITERR_REPOSITORY +#define CONFIG GITERR_CONFIG +#define REGEX GITERR_REGEX +#define ODB GITERR_ODB +#define INDEX GITERR_INDEX +#define OBJECT GITERR_OBJECT +#define NET GITERR_NET +#define TAG GITERR_TAG +#define TREE GITERR_TREE +#define INDEXER GITERR_INDEXER +#define SSL GITERR_SSL +#define SUBMODULE GITERR_SUBMODULE +#define THREAD GITERR_THREAD +#define STASH GITERR_STASH +#define CHECKOUT GITERR_CHECKOUT +#define FETCHHEAD GITERR_FETCHHEAD +#define MERGE GITERR_MERGE +#define SSH GITERR_SSH +#define FILTER GITERR_FILTER +#define REVERT GITERR_REVERT +#define CALLBACK GITERR_CALLBACK +#define CHERRYPICK GITERR_CHERRYPICK + +#include "const-c-error.inc" +#include "const-c-category.inc" + +#ifdef _MSC_VER +#pragma warning (disable : 4244 4267 ) +#endif + +typedef struct { + SV *progress; + SV *credentials; + SV *transfer_progress; + SV *update_tips; +} git_raw_remote_callbacks; + +typedef struct { + SV *packbuilder_progress; + SV *transfer_progress; + SV *status; +} git_raw_push_callbacks; + +typedef struct { + SV *initialize; + SV *shutdown; + SV *check; + SV *apply; + SV *cleanup; +} git_filter_callbacks; + +typedef git_blame * Blame; +typedef git_blame_hunk * Blame_Hunk; +typedef git_blob * Blob; +typedef git_reference * Branch; +typedef git_commit * Commit; +typedef git_config * Config; +typedef git_diff * Diff; +typedef git_diff_delta * Diff_Delta; +typedef git_diff_file * Diff_File; +typedef git_diff_hunk * Diff_Hunk; +typedef git_diff_stats * Diff_Stats; +typedef git_index * Index; +typedef git_index_entry * Index_Entry; +typedef git_patch * Patch; +typedef git_pathspec * PathSpec; +typedef git_pathspec_match_list * PathSpec_MatchList; +typedef git_reference * Reference; +typedef git_reflog * Reflog; +typedef git_refspec * RefSpec; +typedef git_signature * Signature; +typedef git_tag * Tag; +typedef git_tree * Tree; +typedef git_treebuilder * Tree_Builder; +typedef git_tree_entry * Tree_Entry; +typedef git_revwalk * Walker; + +typedef struct { + int code; + int category; + SV *message; +} git_raw_error; + +typedef git_raw_error * Error; + +typedef struct { + git_filter filter; + git_filter_callbacks callbacks; + char *name; + char *attributes; +} git_raw_filter; + +typedef git_raw_filter * Filter; +typedef git_filter_source * Filter_Source; + +typedef struct { + git_remote *remote; + git_raw_remote_callbacks callbacks; + int owned; +} git_raw_remote; + +typedef git_raw_remote * Remote; + +typedef struct { + git_repository *repository; + int owned; +} git_raw_repository; + +typedef git_raw_repository * Repository; + +typedef struct { + git_push *push; + git_raw_push_callbacks callbacks; +} git_raw_push; + +typedef git_raw_push * Push; + +typedef struct { + git_cred *cred; + SV *callback; +} git_raw_cred; + +typedef git_raw_cred * Cred; + +#ifndef GIT_SSH +/* Reduces further conditional compile problems */ +typedef struct _LIBSSH2_USERAUTH_KBDINT_PROMPT +{ + char* text; + unsigned int length; + unsigned char echo; +} LIBSSH2_USERAUTH_KBDINT_PROMPT; + +typedef struct _LIBSSH2_USERAUTH_KBDINT_RESPONSE +{ + char* text; + unsigned int length; +} LIBSSH2_USERAUTH_KBDINT_RESPONSE; +#endif + +/* printf format specifier for size_t */ +#if defined(_MSC_VER) || defined(__MINGW32__) +# define PRIuZ "Iu" +# define PRIxZ "Ix" +#else +# define PRIuZ "zu" +# define PRIxZ "zx" +#endif + +STATIC MGVTBL null_mg_vtbl = { + NULL, /* get */ + NULL, /* set */ + NULL, /* len */ + NULL, /* clear */ + NULL, /* free */ +#if MGf_COPY + NULL, /* copy */ +#endif /* MGf_COPY */ +#if MGf_DUP + NULL, /* dup */ +#endif /* MGf_DUP */ +#if MGf_LOCAL + NULL, /* local */ +#endif /* MGf_LOCAL */ +}; + +STATIC void xs_object_magic_attach_struct(pTHX_ SV *sv, void *ptr) { + sv_magicext(sv, NULL, PERL_MAGIC_ext, &null_mg_vtbl, ptr, 0); +} + +STATIC void *xs_object_magic_get_struct(pTHX_ SV *sv) { + MAGIC *mg = NULL; + + if (SvTYPE(sv) >= SVt_PVMG) { + MAGIC *tmp; + + for (tmp = SvMAGIC(sv); tmp; + tmp = tmp -> mg_moremagic) { + if ((tmp -> mg_type == PERL_MAGIC_ext) && + (tmp -> mg_virtual == &null_mg_vtbl)) + mg = tmp; + } + } + + return (mg) ? mg -> mg_ptr : NULL; +} + +#define GIT_SV_TO_MAGIC(SV) \ + xs_object_magic_get_struct(aTHX_ SvRV(SV)) + +#define GIT_NEW_OBJ(rv, class, sv) \ + STMT_START { \ + (rv) = sv_setref_pv(newSV(0), class, sv); \ + } STMT_END + +#define GIT_NEW_OBJ_WITH_MAGIC(rv, class, sv, magic) \ + STMT_START { \ + (rv) = sv_setref_pv(newSV(0), class, sv); \ + \ + xs_object_magic_attach_struct( \ + aTHX_ SvRV(rv), SvREFCNT_inc_NN(magic) \ + ); \ + } STMT_END + +STATIC Error create_error_obj(int code, int category, SV *message) { + Error e; + + Newxz(e, 1, git_raw_error); + e -> code = code; + e -> category = category; + + if (message) + e -> message = message; + + return e; +} + +STATIC Error create_error_obj_fmt(int code, int category, const char *prefix, const char *pat, va_list *list) { + Error e; + + e = create_error_obj(code, category, newSVpv(prefix, 0)); + sv_vcatpvf(e -> message, pat, list); + + return e; +} + +STATIC void croak_error_obj(Error e) { + SV *res = NULL; + GIT_NEW_OBJ(res, "Git::Raw::Error", e); + croak_sv(res); +} + +STATIC void git_check_error(int err) { + if (err != GIT_OK && err != GIT_ITEROVER) { + const git_error *error; + Error e; + + e = create_error_obj(err, NONE, NULL); + + if ((error = giterr_last()) != NULL) { + e -> category = error -> klass; + e -> message = newSVpv(error -> message, 0); + } else if (SvTRUE(ERRSV)) { + e -> message = newSVpv(SvPVbyte_nolen(ERRSV), 0); + } else { + e -> message = newSVpv("Unknown error!", 0); + } + + croak_error_obj(e); + } +} + +STATIC void croak_assert(const char *pat, ...) { + Error e; + va_list list; + + va_start(list, pat); + e = create_error_obj_fmt(ASSERT, INTERNAL, "Assertion failed. Please file a bug report: ", pat, &list); + va_end(list); + + croak_error_obj(e); +} + +STATIC void croak_usage(const char *pat, ...) { + Error e; + va_list list; + + va_start(list, pat); + e = create_error_obj_fmt(USAGE, INTERNAL, "", pat, &list); + va_end(list); + + croak_error_obj(e); +} + +STATIC void croak_resolve(const char *pat, ...) { + Error e; + va_list list; + + va_start(list, pat); + e = create_error_obj_fmt(RESOLVE, INTERNAL, "", pat, &list); + va_end(list); + + croak_error_obj(e); +} + +STATIC SV *git_obj_to_sv(git_object *o, SV *repo) { + SV *res = NULL; + + switch (git_object_type(o)) { + case GIT_OBJ_BLOB: + GIT_NEW_OBJ_WITH_MAGIC( + res, "Git::Raw::Blob", o, repo + ); + break; + + case GIT_OBJ_COMMIT: + GIT_NEW_OBJ_WITH_MAGIC( + res, "Git::Raw::Commit", o, repo + ); + break; + + case GIT_OBJ_TAG: + GIT_NEW_OBJ_WITH_MAGIC( + res, "Git::Raw::Tag", o, repo + ); + break; + + case GIT_OBJ_TREE: + GIT_NEW_OBJ_WITH_MAGIC( + res, "Git::Raw::Tree", o, repo + ); + break; + + default: + croak_usage("Invalid object type"); + break; + } + + return res; +} + +STATIC git_object *git_sv_to_obj(SV *sv) { + if (sv_isobject(sv) && ( + sv_derived_from(sv, "Git::Raw::Blob") || + sv_derived_from(sv, "Git::Raw::Commit") || + sv_derived_from(sv, "Git::Raw::Tag") || + sv_derived_from(sv, "Git::Raw::Tree") + )) + return INT2PTR(git_object *, SvIV((SV *) SvRV(sv))); + + return NULL; +} + +STATIC void *git_sv_to_ptr(const char *type, SV *sv) { + SV *full_type = sv_2mortal(newSVpvf("Git::Raw::%s", type)); + + if (sv_isobject(sv) && sv_derived_from(sv, SvPV_nolen(full_type))) + return INT2PTR(void *, SvIV((SV *) SvRV(sv))); + + croak_usage("Argument is not of type %s", SvPV_nolen(full_type)); + + return NULL; +} + +#define GIT_SV_TO_PTR(type, sv) \ + git_sv_to_ptr(#type, sv) + +STATIC SV *git_oid_to_sv(const git_oid *oid) { + char out[41]; + + git_oid_fmt(out, oid); + out[40] = '\0'; + + return newSVpv(out, 0); +} + +STATIC git_oid *git_sv_to_commitish(git_repository *repo, SV *sv, git_oid *oid) { + git_oid *result = NULL; + git_reference *ref = NULL; + git_object *obj = NULL; + + if (sv_isobject(sv)) { + if (sv_derived_from(sv, "Git::Raw::Reference")) { + int rc = git_reference_peel(&obj, + GIT_SV_TO_PTR(Reference, sv), + GIT_OBJ_COMMIT + ); + git_check_error(rc); + + git_oid_cpy(oid, git_object_id(obj)); + } else if (sv_derived_from(sv, "Git::Raw::Commit")) { + git_oid_cpy(oid, git_commit_id(GIT_SV_TO_PTR(Commit, sv))); + } else + goto on_error; + } else { + STRLEN len; + const char *commitish_name = NULL; + + /* substr() may return a SVt_PVLV, need to perform some force majeur */ + if (SvPOK(sv)) { + commitish_name = SvPVbyte(sv, len); + } else if (SvTYPE(sv) == SVt_PVLV) { + commitish_name = SvPVbyte_force(sv, len); + } + + if (commitish_name) { + /* first try and see if its a commit id, or if its a reference */ + if (git_oid_fromstrn(oid, commitish_name, len) >= 0) { + if (len < GIT_OID_MINPREFIXLEN) + goto on_error; + + if (len != GIT_OID_HEXSZ) { + if (git_object_lookup_prefix(&obj, repo, oid, + len, GIT_OBJ_COMMIT) < 0) + goto on_error; + + git_oid_cpy(oid, git_object_id(obj)); + } + } else { + if (git_reference_lookup(&ref, repo, commitish_name) < 0 && + git_reference_dwim(&ref, repo, commitish_name) < 0) + goto on_error; + + if (git_reference_peel(&obj, ref, GIT_OBJ_COMMIT) < 0) + goto on_error; + + git_oid_cpy(oid, git_object_id(obj)); + } + } else + goto on_error; + } + + result = oid; + +on_error: + git_object_free(obj); + git_reference_free(ref); + return result; +} + +STATIC void git_init_remote_callbacks(git_raw_remote_callbacks *cbs) { + cbs -> credentials = NULL; + cbs -> progress = NULL; + cbs -> transfer_progress = NULL; + cbs -> update_tips = NULL; +} + +STATIC void git_clean_remote_callbacks(git_raw_remote_callbacks *cbs) { + if (cbs -> credentials) { + SvREFCNT_dec(cbs -> credentials); + cbs -> credentials = NULL; + } + + if (cbs -> progress) { + SvREFCNT_dec(cbs -> progress); + cbs -> progress = NULL; + } + + if (cbs -> transfer_progress) { + SvREFCNT_dec(cbs -> transfer_progress); + cbs -> transfer_progress = NULL; + } + + if (cbs -> update_tips) { + SvREFCNT_dec(cbs -> update_tips); + cbs -> update_tips = NULL; + } +} + +STATIC void git_init_push_callbacks(git_raw_push_callbacks *cbs) { + cbs -> packbuilder_progress = NULL; + cbs -> transfer_progress = NULL; + cbs -> status = NULL; +} + +STATIC void git_clean_push_callbacks(git_raw_push_callbacks *cbs) { + if (cbs -> packbuilder_progress) { + SvREFCNT_dec(cbs -> packbuilder_progress); + cbs -> packbuilder_progress = NULL; + } + + if (cbs -> transfer_progress) { + SvREFCNT_dec(cbs -> transfer_progress); + cbs -> transfer_progress = NULL; + } + + if (cbs -> status) { + SvREFCNT_dec(cbs -> status); + cbs -> status = NULL; + } +} + +STATIC void git_clean_filter_callbacks(git_filter_callbacks *cbs) { + if (cbs -> initialize) { + SvREFCNT_dec(cbs -> initialize); + cbs -> initialize = NULL; + } + + if (cbs -> shutdown) { + SvREFCNT_dec(cbs -> shutdown); + cbs -> shutdown = NULL; + } + + if (cbs -> check) { + SvREFCNT_dec(cbs -> check); + cbs -> check = NULL; + } + + if (cbs -> apply) { + SvREFCNT_dec(cbs -> apply); + cbs -> apply = NULL; + } + + if (cbs -> cleanup) { + SvREFCNT_dec(cbs -> cleanup); + cbs -> cleanup = NULL; + } +} + +STATIC SV *git_hv_sv_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) + return *opt; + + return NULL; +} + +STATIC SV *git_hv_int_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) { + if (!SvIOK(*opt)) + croak_usage("Expected an integer for '%s'", name); + + return *opt; + } + + return NULL; +} + +STATIC SV *git_hv_string_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) { + if (!SvPOK(*opt)) + croak_usage("Expected a string for '%s'", name); + + return *opt; + } + + return NULL; +} + +STATIC AV *git_ensure_av(SV *sv, const char *identifier) { + if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVAV) + croak_usage("Invalid type for '%s', expected a list", identifier); + + return (AV *) SvRV(sv); +} + +STATIC HV *git_ensure_hv(SV *sv, const char *identifier) { + if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVHV) + croak_usage("Invalid type for '%s', expected a hash", identifier); + + return (HV *) SvRV(sv); +} + +STATIC SV *git_ensure_cv(SV *sv, const char *identifier) { + if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) + croak_usage("Invalid type for '%s', expected a code reference", identifier); + + return sv; +} + +STATIC I32 git_ensure_iv(SV *sv, const char *identifier) { + if (!SvIOK(sv)) + croak_usage("Invalid type for '%s', expected an integer", identifier); + + return SvIV(sv); +} + +STATIC const char *git_ensure_pv_with_len(SV *sv, const char *identifier, STRLEN *len) { + const char *pv = NULL; + STRLEN real_len; + + if (SvPOK(sv)) { + pv = SvPVbyte(sv, real_len); + } else if (SvTYPE(sv) == SVt_PVLV) { + pv = SvPVbyte_force(sv, real_len); + } else + croak_usage("Invalid type for '%s', expected a string", identifier); + + if (len) + *len = real_len; + + return pv; +} + +STATIC const char *git_ensure_pv(SV *sv, const char *identifier) { + return git_ensure_pv_with_len(sv, identifier, NULL); +} + +STATIC SV *git_hv_code_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) + return git_ensure_cv(*opt, name); + + return NULL; +} + +STATIC HV *git_hv_hash_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) + return git_ensure_hv(*opt, name); + + return NULL; +} + +STATIC AV *git_hv_list_entry(HV *hv, const char *name) { + SV **opt; + + if ((opt = hv_fetch(hv, name, strlen(name), 0))) + return git_ensure_av(*opt, name); + + return NULL; +} + +STATIC void git_flag_opt(HV *value, const char *name, int mask, unsigned *out) { + SV *opt; + + if ((opt = git_hv_int_entry(value, name)) && SvIV(opt)) + *out |= mask; +} + +STATIC SV *get_callback_option(HV *callbacks, const char *name) { + SV *cb = NULL; + + if ((cb = git_hv_code_entry(callbacks, name))) + SvREFCNT_inc(cb); + + return cb; +} + +STATIC unsigned git_hv_to_diff_flag(HV *flags) { + unsigned out = 0; + + git_flag_opt(flags, "reverse", GIT_DIFF_REVERSE, &out); + + git_flag_opt(flags, "include_ignored", GIT_DIFF_INCLUDE_IGNORED, &out); + + git_flag_opt(flags, "include_typechange", GIT_DIFF_INCLUDE_TYPECHANGE, &out); + + git_flag_opt( + flags, "include_typechange_trees", + GIT_DIFF_INCLUDE_TYPECHANGE_TREES, &out); + + git_flag_opt( + flags, "recurse_ignored_dirs", + GIT_DIFF_RECURSE_IGNORED_DIRS, &out + ); + + git_flag_opt( + flags, "include_untracked", + GIT_DIFF_INCLUDE_UNTRACKED, &out + ); + + git_flag_opt( + flags, "recurse_untracked_dirs", + GIT_DIFF_RECURSE_UNTRACKED_DIRS, &out + ); + + git_flag_opt(flags, "ignore_filemode", GIT_DIFF_IGNORE_FILEMODE, &out); + + git_flag_opt(flags, "ignore_case", GIT_DIFF_IGNORE_CASE, &out); + + git_flag_opt( + flags, "ignore_submodules", + GIT_DIFF_IGNORE_SUBMODULES, &out + ); + + git_flag_opt( + flags, "ignore_whitespace", + GIT_DIFF_IGNORE_WHITESPACE, &out + ); + + git_flag_opt( + flags, "ignore_whitespace_change", + GIT_DIFF_IGNORE_WHITESPACE_CHANGE, &out + ); + + git_flag_opt( + flags, "ignore_whitespace_eol", + GIT_DIFF_IGNORE_WHITESPACE_EOL, &out + ); + + git_flag_opt( + flags, "skip_binary_check", + GIT_DIFF_SKIP_BINARY_CHECK, &out + ); + + git_flag_opt( + flags, "enable_fast_untracked_dirs", + GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS, &out + ); + + git_flag_opt( + flags, "show_untracked_content", + GIT_DIFF_SHOW_UNTRACKED_CONTENT, &out + ); + + git_flag_opt( + flags, "show_unmodified", + GIT_DIFF_SHOW_UNMODIFIED, &out + ); + + git_flag_opt(flags, "patience", GIT_DIFF_PATIENCE, &out); + + git_flag_opt(flags, "minimal", GIT_DIFF_MINIMAL, &out); + + return out; +} + +STATIC unsigned git_hv_to_diff_find_flag(HV *flags) { + unsigned out = 0; + + git_flag_opt(flags, "renames", GIT_DIFF_FIND_RENAMES, &out); + + git_flag_opt( + flags, + "renames_from_rewrites", + GIT_DIFF_FIND_RENAMES_FROM_REWRITES, &out + ); + + git_flag_opt(flags, "copies", GIT_DIFF_FIND_COPIES, &out); + + git_flag_opt( + flags, + "copies_from_unmodified", + GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED, &out + ); + + git_flag_opt(flags, "rewrites", GIT_DIFF_FIND_REWRITES, &out); + + git_flag_opt(flags, "break_rewrites", GIT_DIFF_BREAK_REWRITES, &out); + + git_flag_opt(flags, "untracked", GIT_DIFF_FIND_FOR_UNTRACKED, &out); + + git_flag_opt(flags, "all", GIT_DIFF_FIND_ALL, &out); + + git_flag_opt( + flags, + "ignore_leading_whitespace", + GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE, &out + ); + + git_flag_opt( + flags, + "ignore_whitespace", + GIT_DIFF_FIND_IGNORE_WHITESPACE, &out + ); + + git_flag_opt( + flags, + "dont_ignore_whitespace", GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE, &out + ); + + git_flag_opt( + flags, + "exact_match_only", GIT_DIFF_FIND_EXACT_MATCH_ONLY, &out + ); + + git_flag_opt( + flags, + "break_rewrites_for_renames_only", GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY, + &out + ); + + git_flag_opt(flags, + "remove_unmodified", GIT_DIFF_FIND_REMOVE_UNMODIFIED, + &out + ); + + return out; +} + +STATIC unsigned git_hv_to_checkout_strategy(HV *strategy) { + unsigned out = 0; + + git_flag_opt(strategy, "none", GIT_CHECKOUT_NONE, &out); + + git_flag_opt(strategy, "force", GIT_CHECKOUT_FORCE, &out); + + git_flag_opt(strategy, "safe", GIT_CHECKOUT_SAFE, &out); + + git_flag_opt(strategy, "safe_create", GIT_CHECKOUT_SAFE_CREATE, &out); + + git_flag_opt( + strategy, "allow_conflicts", + GIT_CHECKOUT_ALLOW_CONFLICTS, &out + ); + + git_flag_opt( + strategy, "remove_untracked", + GIT_CHECKOUT_REMOVE_UNTRACKED, &out + ); + + git_flag_opt( + strategy, "remove_ignored", + GIT_CHECKOUT_REMOVE_IGNORED, &out + ); + + git_flag_opt(strategy, "update_only", GIT_CHECKOUT_UPDATE_ONLY, &out); + + git_flag_opt( + strategy, "dont_update_index", + GIT_CHECKOUT_DONT_UPDATE_INDEX, &out + ); + + git_flag_opt(strategy, "no_refresh", GIT_CHECKOUT_NO_REFRESH, &out); + + git_flag_opt( + strategy, "skip_unmerged", + GIT_CHECKOUT_SKIP_UNMERGED, &out + ); + + git_flag_opt(strategy, "use_ours", GIT_CHECKOUT_USE_OURS, &out); + + git_flag_opt(strategy, "use_theirs", GIT_CHECKOUT_USE_THEIRS, &out); + + git_flag_opt( + strategy, "skip_locked_directories", + GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES, &out); + + git_flag_opt( + strategy, "dont_overwrite_ignored", + GIT_CHECKOUT_DONT_OVERWRITE_IGNORED, &out); + + git_flag_opt( + strategy, "conflict_style_merge", + GIT_CHECKOUT_CONFLICT_STYLE_MERGE, &out); + + git_flag_opt( + strategy, "conflict_style_diff3", + GIT_CHECKOUT_CONFLICT_STYLE_DIFF3, &out); + + git_flag_opt( + strategy, "disable_pathspec_match", + GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH, &out); + + return out; +} + +STATIC int git_diff_cb(const git_diff_delta *delta, const git_diff_hunk *hunk, + const git_diff_line *line, void *data) { + dSP; + + SV *coderef = data; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + switch (line -> origin) { + case GIT_DIFF_LINE_CONTEXT: + XPUSHs(sv_2mortal(newSVpv("ctx", 0))); + break; + + case GIT_DIFF_LINE_ADDITION: + case GIT_DIFF_LINE_ADD_EOFNL: + XPUSHs(sv_2mortal(newSVpv("add", 0))); + break; + + case GIT_DIFF_LINE_DELETION: + case GIT_DIFF_LINE_DEL_EOFNL: + XPUSHs(sv_2mortal(newSVpv("del", 0))); + break; + + case GIT_DIFF_LINE_FILE_HDR: + XPUSHs(sv_2mortal(newSVpv("file", 0))); + break; + + case GIT_DIFF_LINE_HUNK_HDR: + XPUSHs(sv_2mortal(newSVpv("hunk", 0))); + break; + + case GIT_DIFF_LINE_BINARY: + XPUSHs(sv_2mortal(newSVpv("bin", 0))); + break; + + default: + croak_assert("Unexpected diff origin: %d", line -> origin); + break; + } + + XPUSHs(sv_2mortal(newSVpv(line -> content, line -> content_len))); + PUTBACK; + + call_sv(coderef, G_DISCARD); + + FREETMPS; + LEAVE; + + return 0; +} + +typedef struct { + Repository repo_ptr; + SV *repo; + SV *cb; + const char *class; +} git_foreach_payload; + +STATIC int git_config_foreach_cbb(const git_config_entry *entry, void *payload) { + dSP; + int rv = 0; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(entry -> name, 0)); + mXPUSHs(newSVpv(entry -> value, 0)); + mXPUSHs(newSVuv(entry -> level)); + PUTBACK; + + call_sv(((git_foreach_payload *) payload) -> cb, G_SCALAR); + + SPAGAIN; + + rv = POPi; + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC int git_stash_foreach_cb(size_t i, const char *msg, const git_oid *oid, void *payload) { + dSP; + int rv = 0; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVuv(i)); + mXPUSHs(newSVpv(msg, 0)); + mXPUSHs(git_oid_to_sv((git_oid *) oid)); + PUTBACK; + + call_sv(((git_foreach_payload *) payload) -> cb, G_SCALAR); + + SPAGAIN; + + rv = POPi; + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC int git_tag_foreach_cbb(const char *name, git_oid *oid, void *payload) { + dSP; + int rv = 0; + git_object *tag; + + SV *cb_arg = NULL; + git_foreach_payload *pl = payload; + + int rc = git_object_lookup(&tag, pl -> repo_ptr -> repository, oid, GIT_OBJ_ANY); + git_check_error(rc); + + if (git_object_type(tag) != GIT_OBJ_TAG) { + git_object_free(tag); + + return 0; + } + + GIT_NEW_OBJ_WITH_MAGIC( + cb_arg, pl -> class, (void *) tag, SvRV(pl -> repo) + ); + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + XPUSHs(cb_arg); + PUTBACK; + + call_sv(pl -> cb, G_SCALAR); + + SPAGAIN; + + rv = POPi; + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC int git_checkout_notify_cbb(git_checkout_notify_t why, const char *path, const git_diff_file *baseline, + const git_diff_file *target, const git_diff_file *workdir, void *payload) { + dSP; + + int rv = 0; + AV *w = newAV(); + + if (why & GIT_CHECKOUT_NOTIFY_NONE) + av_push(w, newSVpv("none", 0)); + + if (why & GIT_CHECKOUT_NOTIFY_CONFLICT) + av_push(w, newSVpv("conflict", 0)); + + if (why & GIT_CHECKOUT_NOTIFY_DIRTY) + av_push(w, newSVpv("dirty", 0)); + + if (why & GIT_CHECKOUT_NOTIFY_UPDATED) + av_push(w, newSVpv("updated", 0)); + + if (why & GIT_CHECKOUT_NOTIFY_UNTRACKED) + av_push(w, newSVpv("untracked", 0)); + + if (why & GIT_CHECKOUT_NOTIFY_IGNORED) + av_push(w, newSVpv("ignored", 0)); + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(path, 0)); + mXPUSHs(newRV_noinc((SV *) w)); + PUTBACK; + + call_sv(payload, G_SCALAR); + + SPAGAIN; + + rv = POPi; + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC void git_checkout_progress_cbb(const char *path, size_t completed_steps, + size_t total_steps, void *payload) { + dSP; + + SV *coderef = payload; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(path ? newSVpv(path, 0) : &PL_sv_undef); + mXPUSHs(newSViv(completed_steps)); + mXPUSHs(newSViv(total_steps)); + PUTBACK; + + call_sv(coderef, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; +} + +STATIC int git_progress_cbb(const char *str, int len, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(str, len)); + PUTBACK; + + call_sv(((git_raw_remote_callbacks *) cbs) -> progress, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_transfer_progress_cbb(const git_transfer_progress *stats, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSViv(stats -> total_objects)); + mXPUSHs(newSViv(stats -> received_objects)); + mXPUSHs(newSViv(stats -> local_objects)); + mXPUSHs(newSViv(stats -> total_deltas)); + mXPUSHs(newSViv(stats -> indexed_deltas)); + mXPUSHs(newSVuv(stats -> received_bytes)); + PUTBACK; + + call_sv(((git_raw_remote_callbacks *) cbs) -> transfer_progress, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_push_transfer_progress_cbb(unsigned int current, unsigned int total, size_t bytes, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVuv(current)); + mXPUSHs(newSVuv(total)); + mXPUSHs(newSVuv(bytes)); + PUTBACK; + + call_sv(((git_raw_push_callbacks *) cbs) -> transfer_progress, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_packbuilder_progress_cbb(int stage, unsigned int current, unsigned int total, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSViv(stage)); + mXPUSHs(newSVuv(current)); + mXPUSHs(newSVuv(total)); + PUTBACK; + + call_sv(((git_raw_push_callbacks *) cbs) -> packbuilder_progress, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_push_status_cbb(const char *ref, const char *msg, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(ref, 0)); + mXPUSHs(newSVpv(msg, 0)); + PUTBACK; + + call_sv(((git_raw_push_callbacks *) cbs) -> status, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_update_tips_cbb(const char *name, const git_oid *a, + const git_oid *b, void *cbs) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(name, 0)); + XPUSHs(a != NULL ? sv_2mortal(git_oid_to_sv(a)) : &PL_sv_undef); + XPUSHs(b != NULL ? sv_2mortal(git_oid_to_sv(b)) : &PL_sv_undef); + PUTBACK; + + call_sv(((git_raw_remote_callbacks *) cbs) -> update_tips, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; + + return 0; +} + +STATIC int git_remote_create_cbb(git_remote **out, git_repository *r, + const char *name, const char *url, void *cb) { + dSP; + int rv = 0; + SV *repo_sv = NULL; + Repository repo = NULL; + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 0; + + GIT_NEW_OBJ(repo_sv, + "Git::Raw::Repository", + (void * ) repo + ); + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(repo_sv); + mXPUSHs(newSVpv(name, 0)); + mXPUSHs(newSVpv(url, 0)); + PUTBACK; + + call_sv((SV *) cb, G_EVAL|G_SCALAR); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + + *out = NULL; + } else { + SV *r = POPs; + if (SvOK(r)) { + Remote remote = GIT_SV_TO_PTR(Remote, r); + *out = remote -> remote; + + /* The remote created in the callback is owned by libgit2 */ + remote -> owned = 0; + } else { + *out = NULL; + rv = -1; + } + } + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC int git_credentials_cbb(git_cred **cred, const char *url, + const char *usr_from_url, unsigned int allow, void *cbs) { + dSP; + int rv = 0; + Cred creds; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(url, 0)); + mXPUSHs(newSVpv(usr_from_url, 0)); + PUTBACK; + + call_sv(((git_raw_remote_callbacks *) cbs) -> credentials, G_EVAL|G_SCALAR); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + } else { + creds = GIT_SV_TO_PTR(Cred, POPs); + *cred = creds -> cred; + } + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC void git_ssh_interactive_cbb(const char *name, int name_len, const char *instruction, int instruction_len, + int num_prompts, const LIBSSH2_USERAUTH_KBDINT_PROMPT *prompts, LIBSSH2_USERAUTH_KBDINT_RESPONSE *responses, void **abstract) { + dSP; + + int i, count; + SV *cb = *abstract; + + if (num_prompts == 0) + return; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(name, name_len)); + mXPUSHs(newSVpv(instruction, instruction_len)); + for (i = 0; i < num_prompts; ++i) { + HV *prompt = newHV(); + hv_stores(prompt, "text", newSVpvn(prompts[i].text, prompts[i].length)); + hv_stores(prompt, "echo", newSViv(prompts[i].echo)); + mXPUSHs(newRV_noinc((SV*)prompt)); + } + PUTBACK; + + count = call_sv(cb, G_ARRAY); + + SPAGAIN; + + if (count != num_prompts) + croak_usage("Expected %d response(s) got %d", num_prompts, count); + + for (i = 1; i <= count; ++i) { + STRLEN len; + SV *r = POPs; + const char *response = SvPV(r, len); + int index = num_prompts - i; + + New(0, responses[index].text, len, char); + Copy(response, responses[index].text, len, char); + responses[index].length = len; + } + + FREETMPS; + LEAVE; +} + +STATIC int git_filter_init_cbb(git_filter *filter) { + dSP; + + int rv = 0; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + PUTBACK; + + call_sv(((git_raw_filter *) filter) -> callbacks.initialize, G_EVAL|G_SCALAR); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + } else { + rv = POPi; + } + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC void git_filter_shutdown_cbb(git_filter *filter) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + PUTBACK; + + call_sv(((git_raw_filter *) filter) -> callbacks.shutdown, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; +} + +STATIC int git_filter_check_cbb(git_filter *filter, void **payload, + const git_filter_source *src, const char **attr_values) { + dSP; + + int rv = 0; + SV *filter_source = NULL; + + GIT_NEW_OBJ( + filter_source, "Git::Raw::Filter::Source", (void *) src + ); + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(filter_source); + PUTBACK; + + call_sv(((git_raw_filter *) filter) -> callbacks.check, G_EVAL|G_SCALAR); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + } else { + rv = POPi; + } + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC int git_filter_apply_cbb(git_filter *filter, void **payload, + git_buf *to, const git_buf *from, const git_filter_source *src) { + dSP; + + int rv; + SV *filter_source = NULL; + SV *result = newSV(from -> size); + + GIT_NEW_OBJ( + filter_source, "Git::Raw::Filter::Source", (void *) src + ); + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(filter_source); + mXPUSHs(newSVpv(from -> ptr, from -> size)); + mXPUSHs(newRV_noinc(result)); + PUTBACK; + + call_sv(((git_raw_filter *) filter) -> callbacks.apply, G_EVAL|G_SCALAR); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + } else { + rv = POPi; + } + + if (rv == GIT_OK) { + STRLEN len; + const char *ptr = SvPV(result, len); + + git_buf_set(to, ptr, len); + } + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC void git_filter_cleanup_cbb(git_filter *filter, void *payload) { + dSP; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + PUTBACK; + + call_sv(((git_raw_filter *) filter) -> callbacks.cleanup, G_DISCARD); + + SPAGAIN; + + FREETMPS; + LEAVE; +} + +STATIC int git_index_matched_path_cbb(const char *path, const char *pathspec, void *payload) { + dSP; + + int rv = 0; + SV *callback = (SV *) payload; + + if (callback == NULL) + return rv; + + ENTER; + SAVETMPS; + + PUSHMARK(SP); + mXPUSHs(newSVpv(path, 0)); + mXPUSHs(pathspec ? newSVpv(pathspec, 0) : &PL_sv_undef); + PUTBACK; + + call_sv(callback, G_SCALAR|G_EVAL); + + SPAGAIN; + + if (SvTRUE(ERRSV)) { + rv = -1; + (void) POPs; + } else + rv = POPi; + + FREETMPS; + LEAVE; + + return rv; +} + +STATIC void git_list_to_paths(AV *list, git_strarray *paths) { + size_t i = 0, count = 0; + SV **path; + + while ((path = av_fetch(list, i++, 0))) { + if (!path || !SvOK(*path)) + continue; + + Renew(paths->strings, count + 1, char *); + paths->strings[count++] = SvPVbyte_nolen(*path); + } + + paths->count = count; +} + + +STATIC void git_hv_to_checkout_opts(HV *opts, git_checkout_options *checkout_opts) { + char **paths = NULL; + SV *opt; + HV *hopt; + AV *lopt; + + if ((hopt = git_hv_hash_entry(opts, "checkout_strategy"))) + checkout_opts -> checkout_strategy = + git_hv_to_checkout_strategy(hopt); + + if ((lopt = git_hv_list_entry(opts, "paths"))) { + SV **path; + size_t i = 0, count = 0; + + while ((path = av_fetch(lopt, i++, 0))) { + if (!SvOK(*path)) + continue; + + Renew(paths, count+1, char *); + paths[count++] = SvPVbyte_nolen(*path); + } + + if (count > 0) { + checkout_opts -> paths.strings = paths; + checkout_opts -> paths.count = count; + } + } + + if ((opt = git_hv_string_entry(opts, "target_directory"))) + checkout_opts -> target_directory = SvPVbyte_nolen(opt); + + if ((opt = git_hv_string_entry(opts, "ancestor_label"))) + checkout_opts -> ancestor_label = SvPVbyte_nolen(opt); + + if ((opt = git_hv_string_entry(opts, "our_label"))) + checkout_opts -> our_label = SvPVbyte_nolen(opt); + + if ((opt = git_hv_string_entry(opts, "their_label"))) + checkout_opts -> their_label = SvPVbyte_nolen(opt); + + if ((hopt = git_hv_hash_entry(opts, "callbacks"))) { + if ((checkout_opts -> progress_payload = + get_callback_option(hopt, "progress"))) + checkout_opts -> progress_cb = git_checkout_progress_cbb; + + if ((checkout_opts -> notify_payload = + get_callback_option(hopt, "notify"))) { + checkout_opts -> notify_cb = git_checkout_notify_cbb; + + if ((lopt = git_hv_list_entry(opts, "notify"))) { + size_t count = 0; + SV **flag; + + while ((flag = av_fetch(lopt, count++, 0))) { + if (SvPOK(*flag)) { + const char *f = SvPVbyte_nolen(*flag); + + if (strcmp(f, "conflict") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_CONFLICT; + + if (strcmp(f, "dirty") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_DIRTY; + + if (strcmp(f, "updated") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_UPDATED; + + if (strcmp(f, "untracked") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_UNTRACKED; + + if (strcmp(f, "ignored") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_IGNORED; + + if (strcmp(f, "all") == 0) + checkout_opts -> notify_flags |= GIT_CHECKOUT_NOTIFY_ALL; + } else + croak_usage("Invalid type for 'notify' value"); + } + } + } + } +} + +STATIC void git_hv_to_merge_opts(HV *opts, git_merge_options *merge_options) { + AV *lopt; + SV *opt; + + if ((lopt = git_hv_list_entry(opts, "flags"))) { + size_t i = 0, count = 0; + SV **flag; + + while ((flag = av_fetch(lopt, i++, 0))) { + const char *value = NULL; + + if (!SvOK(*flag)) + continue; + + value = git_ensure_pv(*flag, "flag"); + + if (strcmp(value, "find_renames") == 0) + merge_options -> flags |= GIT_MERGE_TREE_FIND_RENAMES; + else + croak_usage("Invalid 'flags' value"); + } + } + + if ((opt = git_hv_string_entry(opts, "favor"))) { + const char *favor = SvPVbyte_nolen(opt); + if (strcmp(favor, "ours") == 0) + merge_options -> file_favor = + GIT_MERGE_FILE_FAVOR_OURS; + else if (strcmp(favor, "theirs") == 0) + merge_options -> file_favor = + GIT_MERGE_FILE_FAVOR_THEIRS; + else if (strcmp(favor, "union") == 0) + merge_options -> file_favor = + GIT_MERGE_FILE_FAVOR_UNION; + else + croak_usage("Invalid 'favor' value"); + } + + if ((opt = git_hv_int_entry(opts, "rename_threshold"))) + merge_options -> rename_threshold = SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "target_limit"))) + merge_options -> target_limit = SvIV(opt); +} + +MODULE = Git::Raw PACKAGE = Git::Raw + +BOOT: + git_threads_init(); + +void +features(class) + SV *class + + PREINIT: + int ctx = GIMME_V; + + PPCODE: + if (ctx != G_VOID) { + if (ctx == G_ARRAY) { + int features = git_libgit2_features(); + + mXPUSHs(newSVpv("threads", 0)); + mXPUSHs(newSViv((features & GIT_FEATURE_THREADS) ? 1 : 0)); + mXPUSHs(newSVpv("https", 0)); + mXPUSHs(newSViv((features & GIT_FEATURE_HTTPS) ? 1 : 0)); + mXPUSHs(newSVpv("ssh", 0)); + mXPUSHs(newSViv((features & GIT_FEATURE_SSH) ? 1 : 0)); + + XSRETURN(6); + } else { + mXPUSHs(newSViv(3)); + XSRETURN(1); + } + } else + XSRETURN_EMPTY; + +INCLUDE: xs/Blame.xs +INCLUDE: xs/Blame/Hunk.xs +INCLUDE: xs/Blob.xs +INCLUDE: xs/Branch.xs +INCLUDE: xs/Commit.xs +INCLUDE: xs/Config.xs +INCLUDE: xs/Cred.xs +INCLUDE: xs/Diff.xs +INCLUDE: xs/Diff/Delta.xs +INCLUDE: xs/Diff/File.xs +INCLUDE: xs/Diff/Hunk.xs +INCLUDE: xs/Diff/Stats.xs +INCLUDE: xs/Error.xs +INCLUDE: xs/Error/Category.xs +INCLUDE: xs/Filter.xs +INCLUDE: xs/Filter/Source.xs +INCLUDE: xs/Graph.xs +INCLUDE: xs/Index.xs +INCLUDE: xs/Index/Entry.xs +INCLUDE: xs/Patch.xs +INCLUDE: xs/PathSpec.xs +INCLUDE: xs/PathSpec/MatchList.xs +INCLUDE: xs/Push.xs +INCLUDE: xs/Reference.xs +INCLUDE: xs/Reflog.xs +INCLUDE: xs/RefSpec.xs +INCLUDE: xs/Remote.xs +INCLUDE: xs/Repository.xs +INCLUDE: xs/Signature.xs +INCLUDE: xs/Stash.xs +INCLUDE: xs/Tag.xs +INCLUDE: xs/Tree.xs +INCLUDE: xs/Tree/Builder.xs +INCLUDE: xs/Tree/Entry.xs +INCLUDE: xs/Walker.xs diff --git a/TODO b/TODO new file mode 100644 index 00000000..59890ef3 --- /dev/null +++ b/TODO @@ -0,0 +1,8 @@ +# Classes: +* attr +* graph +* note +* odb +* packbuilder +* submodule +* transport diff --git a/.HEADER b/deps/libgit2/.HEADER similarity index 100% rename from .HEADER rename to deps/libgit2/.HEADER diff --git a/.gitattributes b/deps/libgit2/.gitattributes similarity index 100% rename from .gitattributes rename to deps/libgit2/.gitattributes diff --git a/.gitignore b/deps/libgit2/.gitignore similarity index 100% rename from .gitignore rename to deps/libgit2/.gitignore diff --git a/.mailmap b/deps/libgit2/.mailmap similarity index 100% rename from .mailmap rename to deps/libgit2/.mailmap diff --git a/deps/libgit2/.travis.yml b/deps/libgit2/.travis.yml new file mode 100644 index 00000000..362b8822 --- /dev/null +++ b/deps/libgit2/.travis.yml @@ -0,0 +1,68 @@ +# Travis-CI Build for libgit2 +# see travis-ci.org for details + +language: c + +os: + - linux + - osx + +compiler: + - gcc + - clang + +# Settings to try +env: + global: + - secure: "YnhS+8n6B+uoyaYfaJ3Lei7cSJqHDPiKJCKFIF2c87YDfmCvAJke8QtE7IzjYDs7UFkTCM4ox+ph2bERUrxZbSCyEkHdjIZpKuMJfYWja/jgMqTMxdyOH9y8JLFbZsSXDIXDwqBlC6vVyl1fP90M35wuWcNTs6tctfVWVofEFbs=" + matrix: + - OPTIONS="-DTHREADSAFE=ON -DCMAKE_BUILD_TYPE=Release" + - OPTIONS="-DBUILD_CLAR=ON -DBUILD_EXAMPLES=ON" + +matrix: + fast_finish: true + exclude: + - os: osx + compiler: gcc + include: + - compiler: i586-mingw32msvc-gcc + env: OPTIONS="-DBUILD_CLAR=OFF -DWIN32=ON -DMINGW=ON -DUSE_SSH=OFF" + os: linux + - compiler: gcc + env: COVERITY=1 + os: linux + allow_failures: + - env: COVERITY=1 + +install: + - ./script/install-deps-${TRAVIS_OS_NAME}.sh + +# Run the Build script and tests +script: + - script/cibuild.sh + +# Run Tests +after_success: + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get -qq install valgrind; fi + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then valgrind --leak-check=full --show-reachable=yes --suppressions=./libgit2_clar.supp _build/libgit2_clar -ionline; fi + +# Only watch the development and master branches +branches: + only: + - development + - master + +# Notify development list when needed +notifications: + irc: + channels: + - irc.freenode.net#libgit2 + on_success: change + on_failure: always + use_notice: true + skip_join: true + campfire: + on_success: always + on_failure: always + rooms: + - secure: "sH0dpPWMirbEe7AvLddZ2yOp8rzHalGmv0bYL/LIhVw3JDI589HCYckeLMSB\n3e/FeXw4bn0EqXWEXijVa4ijbilVY6d8oprdqMdWHEodng4KvY5vID3iZSGT\nxylhahO1XHmRynKQLOAvxlc93IlpVW38vQfby8giIY1nkpspb2w=" diff --git a/AUTHORS b/deps/libgit2/AUTHORS similarity index 100% rename from AUTHORS rename to deps/libgit2/AUTHORS diff --git a/CHANGELOG.md b/deps/libgit2/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to deps/libgit2/CHANGELOG.md diff --git a/CMakeLists.txt b/deps/libgit2/CMakeLists.txt similarity index 100% rename from CMakeLists.txt rename to deps/libgit2/CMakeLists.txt diff --git a/CONTRIBUTING.md b/deps/libgit2/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to deps/libgit2/CONTRIBUTING.md diff --git a/CONVENTIONS.md b/deps/libgit2/CONVENTIONS.md similarity index 100% rename from CONVENTIONS.md rename to deps/libgit2/CONVENTIONS.md diff --git a/COPYING b/deps/libgit2/COPYING similarity index 100% rename from COPYING rename to deps/libgit2/COPYING diff --git a/Makefile.embed b/deps/libgit2/Makefile.embed similarity index 100% rename from Makefile.embed rename to deps/libgit2/Makefile.embed diff --git a/PROJECTS.md b/deps/libgit2/PROJECTS.md similarity index 100% rename from PROJECTS.md rename to deps/libgit2/PROJECTS.md diff --git a/README.md b/deps/libgit2/README.md similarity index 100% rename from README.md rename to deps/libgit2/README.md diff --git a/api.docurium b/deps/libgit2/api.docurium similarity index 100% rename from api.docurium rename to deps/libgit2/api.docurium diff --git a/cmake/Modules/AddCFlagIfSupported.cmake b/deps/libgit2/cmake/Modules/AddCFlagIfSupported.cmake similarity index 100% rename from cmake/Modules/AddCFlagIfSupported.cmake rename to deps/libgit2/cmake/Modules/AddCFlagIfSupported.cmake diff --git a/cmake/Modules/FindHTTP_Parser.cmake b/deps/libgit2/cmake/Modules/FindHTTP_Parser.cmake similarity index 100% rename from cmake/Modules/FindHTTP_Parser.cmake rename to deps/libgit2/cmake/Modules/FindHTTP_Parser.cmake diff --git a/cmake/Modules/FindIconv.cmake b/deps/libgit2/cmake/Modules/FindIconv.cmake similarity index 100% rename from cmake/Modules/FindIconv.cmake rename to deps/libgit2/cmake/Modules/FindIconv.cmake diff --git a/cmake/Modules/FindLIBSSH2.cmake b/deps/libgit2/cmake/Modules/FindLIBSSH2.cmake similarity index 100% rename from cmake/Modules/FindLIBSSH2.cmake rename to deps/libgit2/cmake/Modules/FindLIBSSH2.cmake diff --git a/deps/http-parser/LICENSE-MIT b/deps/libgit2/deps/http-parser/LICENSE-MIT similarity index 100% rename from deps/http-parser/LICENSE-MIT rename to deps/libgit2/deps/http-parser/LICENSE-MIT diff --git a/deps/http-parser/http_parser.c b/deps/libgit2/deps/http-parser/http_parser.c similarity index 100% rename from deps/http-parser/http_parser.c rename to deps/libgit2/deps/http-parser/http_parser.c diff --git a/deps/http-parser/http_parser.h b/deps/libgit2/deps/http-parser/http_parser.h similarity index 100% rename from deps/http-parser/http_parser.h rename to deps/libgit2/deps/http-parser/http_parser.h diff --git a/deps/regex/config.h b/deps/libgit2/deps/regex/config.h similarity index 100% rename from deps/regex/config.h rename to deps/libgit2/deps/regex/config.h diff --git a/deps/regex/regcomp.c b/deps/libgit2/deps/regex/regcomp.c similarity index 100% rename from deps/regex/regcomp.c rename to deps/libgit2/deps/regex/regcomp.c diff --git a/deps/regex/regex.c b/deps/libgit2/deps/regex/regex.c similarity index 100% rename from deps/regex/regex.c rename to deps/libgit2/deps/regex/regex.c diff --git a/deps/regex/regex.h b/deps/libgit2/deps/regex/regex.h similarity index 100% rename from deps/regex/regex.h rename to deps/libgit2/deps/regex/regex.h diff --git a/deps/regex/regex_internal.c b/deps/libgit2/deps/regex/regex_internal.c similarity index 100% rename from deps/regex/regex_internal.c rename to deps/libgit2/deps/regex/regex_internal.c diff --git a/deps/regex/regex_internal.h b/deps/libgit2/deps/regex/regex_internal.h similarity index 100% rename from deps/regex/regex_internal.h rename to deps/libgit2/deps/regex/regex_internal.h diff --git a/deps/regex/regexec.c b/deps/libgit2/deps/regex/regexec.c similarity index 100% rename from deps/regex/regexec.c rename to deps/libgit2/deps/regex/regexec.c diff --git a/deps/zlib/adler32.c b/deps/libgit2/deps/zlib/adler32.c similarity index 100% rename from deps/zlib/adler32.c rename to deps/libgit2/deps/zlib/adler32.c diff --git a/deps/zlib/crc32.c b/deps/libgit2/deps/zlib/crc32.c similarity index 100% rename from deps/zlib/crc32.c rename to deps/libgit2/deps/zlib/crc32.c diff --git a/deps/zlib/crc32.h b/deps/libgit2/deps/zlib/crc32.h similarity index 100% rename from deps/zlib/crc32.h rename to deps/libgit2/deps/zlib/crc32.h diff --git a/deps/zlib/deflate.c b/deps/libgit2/deps/zlib/deflate.c similarity index 100% rename from deps/zlib/deflate.c rename to deps/libgit2/deps/zlib/deflate.c diff --git a/deps/zlib/deflate.h b/deps/libgit2/deps/zlib/deflate.h similarity index 100% rename from deps/zlib/deflate.h rename to deps/libgit2/deps/zlib/deflate.h diff --git a/deps/zlib/infback.c b/deps/libgit2/deps/zlib/infback.c similarity index 100% rename from deps/zlib/infback.c rename to deps/libgit2/deps/zlib/infback.c diff --git a/deps/zlib/inffast.c b/deps/libgit2/deps/zlib/inffast.c similarity index 100% rename from deps/zlib/inffast.c rename to deps/libgit2/deps/zlib/inffast.c diff --git a/deps/zlib/inffast.h b/deps/libgit2/deps/zlib/inffast.h similarity index 100% rename from deps/zlib/inffast.h rename to deps/libgit2/deps/zlib/inffast.h diff --git a/deps/zlib/inffixed.h b/deps/libgit2/deps/zlib/inffixed.h similarity index 100% rename from deps/zlib/inffixed.h rename to deps/libgit2/deps/zlib/inffixed.h diff --git a/deps/zlib/inflate.c b/deps/libgit2/deps/zlib/inflate.c similarity index 100% rename from deps/zlib/inflate.c rename to deps/libgit2/deps/zlib/inflate.c diff --git a/deps/zlib/inflate.h b/deps/libgit2/deps/zlib/inflate.h similarity index 100% rename from deps/zlib/inflate.h rename to deps/libgit2/deps/zlib/inflate.h diff --git a/deps/zlib/inftrees.c b/deps/libgit2/deps/zlib/inftrees.c similarity index 100% rename from deps/zlib/inftrees.c rename to deps/libgit2/deps/zlib/inftrees.c diff --git a/deps/zlib/inftrees.h b/deps/libgit2/deps/zlib/inftrees.h similarity index 100% rename from deps/zlib/inftrees.h rename to deps/libgit2/deps/zlib/inftrees.h diff --git a/deps/zlib/trees.c b/deps/libgit2/deps/zlib/trees.c similarity index 100% rename from deps/zlib/trees.c rename to deps/libgit2/deps/zlib/trees.c diff --git a/deps/zlib/trees.h b/deps/libgit2/deps/zlib/trees.h similarity index 100% rename from deps/zlib/trees.h rename to deps/libgit2/deps/zlib/trees.h diff --git a/deps/zlib/zconf.h b/deps/libgit2/deps/zlib/zconf.h similarity index 100% rename from deps/zlib/zconf.h rename to deps/libgit2/deps/zlib/zconf.h diff --git a/deps/zlib/zlib.h b/deps/libgit2/deps/zlib/zlib.h similarity index 100% rename from deps/zlib/zlib.h rename to deps/libgit2/deps/zlib/zlib.h diff --git a/deps/zlib/zutil.c b/deps/libgit2/deps/zlib/zutil.c similarity index 100% rename from deps/zlib/zutil.c rename to deps/libgit2/deps/zlib/zutil.c diff --git a/deps/zlib/zutil.h b/deps/libgit2/deps/zlib/zutil.h similarity index 100% rename from deps/zlib/zutil.h rename to deps/libgit2/deps/zlib/zutil.h diff --git a/docs/checkout-internals.md b/deps/libgit2/docs/checkout-internals.md similarity index 100% rename from docs/checkout-internals.md rename to deps/libgit2/docs/checkout-internals.md diff --git a/docs/diff-internals.md b/deps/libgit2/docs/diff-internals.md similarity index 100% rename from docs/diff-internals.md rename to deps/libgit2/docs/diff-internals.md diff --git a/docs/error-handling.md b/deps/libgit2/docs/error-handling.md similarity index 100% rename from docs/error-handling.md rename to deps/libgit2/docs/error-handling.md diff --git a/docs/merge-df_conflicts.txt b/deps/libgit2/docs/merge-df_conflicts.txt similarity index 100% rename from docs/merge-df_conflicts.txt rename to deps/libgit2/docs/merge-df_conflicts.txt diff --git a/examples/.gitignore b/deps/libgit2/examples/.gitignore similarity index 100% rename from examples/.gitignore rename to deps/libgit2/examples/.gitignore diff --git a/examples/CMakeLists.txt b/deps/libgit2/examples/CMakeLists.txt similarity index 100% rename from examples/CMakeLists.txt rename to deps/libgit2/examples/CMakeLists.txt diff --git a/examples/COPYING b/deps/libgit2/examples/COPYING similarity index 100% rename from examples/COPYING rename to deps/libgit2/examples/COPYING diff --git a/examples/Makefile b/deps/libgit2/examples/Makefile similarity index 100% rename from examples/Makefile rename to deps/libgit2/examples/Makefile diff --git a/examples/README.md b/deps/libgit2/examples/README.md similarity index 100% rename from examples/README.md rename to deps/libgit2/examples/README.md diff --git a/examples/add.c b/deps/libgit2/examples/add.c similarity index 100% rename from examples/add.c rename to deps/libgit2/examples/add.c diff --git a/examples/blame.c b/deps/libgit2/examples/blame.c similarity index 100% rename from examples/blame.c rename to deps/libgit2/examples/blame.c diff --git a/examples/cat-file.c b/deps/libgit2/examples/cat-file.c similarity index 100% rename from examples/cat-file.c rename to deps/libgit2/examples/cat-file.c diff --git a/examples/common.c b/deps/libgit2/examples/common.c similarity index 100% rename from examples/common.c rename to deps/libgit2/examples/common.c diff --git a/examples/common.h b/deps/libgit2/examples/common.h similarity index 100% rename from examples/common.h rename to deps/libgit2/examples/common.h diff --git a/examples/diff.c b/deps/libgit2/examples/diff.c similarity index 100% rename from examples/diff.c rename to deps/libgit2/examples/diff.c diff --git a/examples/for-each-ref.c b/deps/libgit2/examples/for-each-ref.c similarity index 100% rename from examples/for-each-ref.c rename to deps/libgit2/examples/for-each-ref.c diff --git a/examples/general.c b/deps/libgit2/examples/general.c similarity index 100% rename from examples/general.c rename to deps/libgit2/examples/general.c diff --git a/examples/init.c b/deps/libgit2/examples/init.c similarity index 100% rename from examples/init.c rename to deps/libgit2/examples/init.c diff --git a/examples/log.c b/deps/libgit2/examples/log.c similarity index 100% rename from examples/log.c rename to deps/libgit2/examples/log.c diff --git a/examples/network/.gitignore b/deps/libgit2/examples/network/.gitignore similarity index 100% rename from examples/network/.gitignore rename to deps/libgit2/examples/network/.gitignore diff --git a/examples/network/Makefile b/deps/libgit2/examples/network/Makefile similarity index 100% rename from examples/network/Makefile rename to deps/libgit2/examples/network/Makefile diff --git a/examples/network/clone.c b/deps/libgit2/examples/network/clone.c similarity index 100% rename from examples/network/clone.c rename to deps/libgit2/examples/network/clone.c diff --git a/examples/network/common.c b/deps/libgit2/examples/network/common.c similarity index 100% rename from examples/network/common.c rename to deps/libgit2/examples/network/common.c diff --git a/examples/network/common.h b/deps/libgit2/examples/network/common.h similarity index 100% rename from examples/network/common.h rename to deps/libgit2/examples/network/common.h diff --git a/examples/network/fetch.c b/deps/libgit2/examples/network/fetch.c similarity index 100% rename from examples/network/fetch.c rename to deps/libgit2/examples/network/fetch.c diff --git a/examples/network/git2.c b/deps/libgit2/examples/network/git2.c similarity index 100% rename from examples/network/git2.c rename to deps/libgit2/examples/network/git2.c diff --git a/examples/network/index-pack.c b/deps/libgit2/examples/network/index-pack.c similarity index 100% rename from examples/network/index-pack.c rename to deps/libgit2/examples/network/index-pack.c diff --git a/examples/network/ls-remote.c b/deps/libgit2/examples/network/ls-remote.c similarity index 100% rename from examples/network/ls-remote.c rename to deps/libgit2/examples/network/ls-remote.c diff --git a/examples/rev-list.c b/deps/libgit2/examples/rev-list.c similarity index 100% rename from examples/rev-list.c rename to deps/libgit2/examples/rev-list.c diff --git a/examples/rev-parse.c b/deps/libgit2/examples/rev-parse.c similarity index 100% rename from examples/rev-parse.c rename to deps/libgit2/examples/rev-parse.c diff --git a/examples/showindex.c b/deps/libgit2/examples/showindex.c similarity index 100% rename from examples/showindex.c rename to deps/libgit2/examples/showindex.c diff --git a/examples/status.c b/deps/libgit2/examples/status.c similarity index 100% rename from examples/status.c rename to deps/libgit2/examples/status.c diff --git a/examples/tag.c b/deps/libgit2/examples/tag.c similarity index 100% rename from examples/tag.c rename to deps/libgit2/examples/tag.c diff --git a/examples/test/test-rev-list.sh b/deps/libgit2/examples/test/test-rev-list.sh similarity index 100% rename from examples/test/test-rev-list.sh rename to deps/libgit2/examples/test/test-rev-list.sh diff --git a/git.git-authors b/deps/libgit2/git.git-authors similarity index 100% rename from git.git-authors rename to deps/libgit2/git.git-authors diff --git a/include/git2.h b/deps/libgit2/include/git2.h similarity index 100% rename from include/git2.h rename to deps/libgit2/include/git2.h diff --git a/include/git2/attr.h b/deps/libgit2/include/git2/attr.h similarity index 100% rename from include/git2/attr.h rename to deps/libgit2/include/git2/attr.h diff --git a/include/git2/blame.h b/deps/libgit2/include/git2/blame.h similarity index 100% rename from include/git2/blame.h rename to deps/libgit2/include/git2/blame.h diff --git a/include/git2/blob.h b/deps/libgit2/include/git2/blob.h similarity index 100% rename from include/git2/blob.h rename to deps/libgit2/include/git2/blob.h diff --git a/include/git2/branch.h b/deps/libgit2/include/git2/branch.h similarity index 100% rename from include/git2/branch.h rename to deps/libgit2/include/git2/branch.h diff --git a/include/git2/buffer.h b/deps/libgit2/include/git2/buffer.h similarity index 100% rename from include/git2/buffer.h rename to deps/libgit2/include/git2/buffer.h diff --git a/include/git2/checkout.h b/deps/libgit2/include/git2/checkout.h similarity index 100% rename from include/git2/checkout.h rename to deps/libgit2/include/git2/checkout.h diff --git a/include/git2/cherrypick.h b/deps/libgit2/include/git2/cherrypick.h similarity index 100% rename from include/git2/cherrypick.h rename to deps/libgit2/include/git2/cherrypick.h diff --git a/include/git2/clone.h b/deps/libgit2/include/git2/clone.h similarity index 100% rename from include/git2/clone.h rename to deps/libgit2/include/git2/clone.h diff --git a/include/git2/commit.h b/deps/libgit2/include/git2/commit.h similarity index 100% rename from include/git2/commit.h rename to deps/libgit2/include/git2/commit.h diff --git a/include/git2/common.h b/deps/libgit2/include/git2/common.h similarity index 100% rename from include/git2/common.h rename to deps/libgit2/include/git2/common.h diff --git a/include/git2/config.h b/deps/libgit2/include/git2/config.h similarity index 100% rename from include/git2/config.h rename to deps/libgit2/include/git2/config.h diff --git a/include/git2/cred_helpers.h b/deps/libgit2/include/git2/cred_helpers.h similarity index 100% rename from include/git2/cred_helpers.h rename to deps/libgit2/include/git2/cred_helpers.h diff --git a/include/git2/diff.h b/deps/libgit2/include/git2/diff.h similarity index 100% rename from include/git2/diff.h rename to deps/libgit2/include/git2/diff.h diff --git a/include/git2/errors.h b/deps/libgit2/include/git2/errors.h similarity index 100% rename from include/git2/errors.h rename to deps/libgit2/include/git2/errors.h diff --git a/include/git2/filter.h b/deps/libgit2/include/git2/filter.h similarity index 100% rename from include/git2/filter.h rename to deps/libgit2/include/git2/filter.h diff --git a/include/git2/graph.h b/deps/libgit2/include/git2/graph.h similarity index 100% rename from include/git2/graph.h rename to deps/libgit2/include/git2/graph.h diff --git a/include/git2/ignore.h b/deps/libgit2/include/git2/ignore.h similarity index 100% rename from include/git2/ignore.h rename to deps/libgit2/include/git2/ignore.h diff --git a/include/git2/index.h b/deps/libgit2/include/git2/index.h similarity index 100% rename from include/git2/index.h rename to deps/libgit2/include/git2/index.h diff --git a/include/git2/indexer.h b/deps/libgit2/include/git2/indexer.h similarity index 100% rename from include/git2/indexer.h rename to deps/libgit2/include/git2/indexer.h diff --git a/include/git2/inttypes.h b/deps/libgit2/include/git2/inttypes.h similarity index 100% rename from include/git2/inttypes.h rename to deps/libgit2/include/git2/inttypes.h diff --git a/include/git2/merge.h b/deps/libgit2/include/git2/merge.h similarity index 100% rename from include/git2/merge.h rename to deps/libgit2/include/git2/merge.h diff --git a/include/git2/message.h b/deps/libgit2/include/git2/message.h similarity index 100% rename from include/git2/message.h rename to deps/libgit2/include/git2/message.h diff --git a/include/git2/net.h b/deps/libgit2/include/git2/net.h similarity index 100% rename from include/git2/net.h rename to deps/libgit2/include/git2/net.h diff --git a/include/git2/notes.h b/deps/libgit2/include/git2/notes.h similarity index 100% rename from include/git2/notes.h rename to deps/libgit2/include/git2/notes.h diff --git a/include/git2/object.h b/deps/libgit2/include/git2/object.h similarity index 100% rename from include/git2/object.h rename to deps/libgit2/include/git2/object.h diff --git a/include/git2/odb.h b/deps/libgit2/include/git2/odb.h similarity index 100% rename from include/git2/odb.h rename to deps/libgit2/include/git2/odb.h diff --git a/include/git2/odb_backend.h b/deps/libgit2/include/git2/odb_backend.h similarity index 100% rename from include/git2/odb_backend.h rename to deps/libgit2/include/git2/odb_backend.h diff --git a/include/git2/oid.h b/deps/libgit2/include/git2/oid.h similarity index 100% rename from include/git2/oid.h rename to deps/libgit2/include/git2/oid.h diff --git a/include/git2/pack.h b/deps/libgit2/include/git2/pack.h similarity index 100% rename from include/git2/pack.h rename to deps/libgit2/include/git2/pack.h diff --git a/include/git2/patch.h b/deps/libgit2/include/git2/patch.h similarity index 100% rename from include/git2/patch.h rename to deps/libgit2/include/git2/patch.h diff --git a/include/git2/pathspec.h b/deps/libgit2/include/git2/pathspec.h similarity index 100% rename from include/git2/pathspec.h rename to deps/libgit2/include/git2/pathspec.h diff --git a/include/git2/push.h b/deps/libgit2/include/git2/push.h similarity index 100% rename from include/git2/push.h rename to deps/libgit2/include/git2/push.h diff --git a/include/git2/refdb.h b/deps/libgit2/include/git2/refdb.h similarity index 100% rename from include/git2/refdb.h rename to deps/libgit2/include/git2/refdb.h diff --git a/include/git2/reflog.h b/deps/libgit2/include/git2/reflog.h similarity index 100% rename from include/git2/reflog.h rename to deps/libgit2/include/git2/reflog.h diff --git a/include/git2/refs.h b/deps/libgit2/include/git2/refs.h similarity index 100% rename from include/git2/refs.h rename to deps/libgit2/include/git2/refs.h diff --git a/include/git2/refspec.h b/deps/libgit2/include/git2/refspec.h similarity index 100% rename from include/git2/refspec.h rename to deps/libgit2/include/git2/refspec.h diff --git a/include/git2/remote.h b/deps/libgit2/include/git2/remote.h similarity index 100% rename from include/git2/remote.h rename to deps/libgit2/include/git2/remote.h diff --git a/include/git2/repository.h b/deps/libgit2/include/git2/repository.h similarity index 100% rename from include/git2/repository.h rename to deps/libgit2/include/git2/repository.h diff --git a/include/git2/reset.h b/deps/libgit2/include/git2/reset.h similarity index 100% rename from include/git2/reset.h rename to deps/libgit2/include/git2/reset.h diff --git a/include/git2/revert.h b/deps/libgit2/include/git2/revert.h similarity index 100% rename from include/git2/revert.h rename to deps/libgit2/include/git2/revert.h diff --git a/include/git2/revparse.h b/deps/libgit2/include/git2/revparse.h similarity index 100% rename from include/git2/revparse.h rename to deps/libgit2/include/git2/revparse.h diff --git a/include/git2/revwalk.h b/deps/libgit2/include/git2/revwalk.h similarity index 100% rename from include/git2/revwalk.h rename to deps/libgit2/include/git2/revwalk.h diff --git a/include/git2/signature.h b/deps/libgit2/include/git2/signature.h similarity index 100% rename from include/git2/signature.h rename to deps/libgit2/include/git2/signature.h diff --git a/include/git2/stash.h b/deps/libgit2/include/git2/stash.h similarity index 100% rename from include/git2/stash.h rename to deps/libgit2/include/git2/stash.h diff --git a/include/git2/status.h b/deps/libgit2/include/git2/status.h similarity index 100% rename from include/git2/status.h rename to deps/libgit2/include/git2/status.h diff --git a/include/git2/stdint.h b/deps/libgit2/include/git2/stdint.h similarity index 100% rename from include/git2/stdint.h rename to deps/libgit2/include/git2/stdint.h diff --git a/include/git2/strarray.h b/deps/libgit2/include/git2/strarray.h similarity index 100% rename from include/git2/strarray.h rename to deps/libgit2/include/git2/strarray.h diff --git a/include/git2/submodule.h b/deps/libgit2/include/git2/submodule.h similarity index 100% rename from include/git2/submodule.h rename to deps/libgit2/include/git2/submodule.h diff --git a/include/git2/sys/commit.h b/deps/libgit2/include/git2/sys/commit.h similarity index 100% rename from include/git2/sys/commit.h rename to deps/libgit2/include/git2/sys/commit.h diff --git a/include/git2/sys/config.h b/deps/libgit2/include/git2/sys/config.h similarity index 100% rename from include/git2/sys/config.h rename to deps/libgit2/include/git2/sys/config.h diff --git a/include/git2/sys/diff.h b/deps/libgit2/include/git2/sys/diff.h similarity index 100% rename from include/git2/sys/diff.h rename to deps/libgit2/include/git2/sys/diff.h diff --git a/include/git2/sys/filter.h b/deps/libgit2/include/git2/sys/filter.h similarity index 100% rename from include/git2/sys/filter.h rename to deps/libgit2/include/git2/sys/filter.h diff --git a/include/git2/sys/index.h b/deps/libgit2/include/git2/sys/index.h similarity index 100% rename from include/git2/sys/index.h rename to deps/libgit2/include/git2/sys/index.h diff --git a/include/git2/sys/mempack.h b/deps/libgit2/include/git2/sys/mempack.h similarity index 100% rename from include/git2/sys/mempack.h rename to deps/libgit2/include/git2/sys/mempack.h diff --git a/include/git2/sys/odb_backend.h b/deps/libgit2/include/git2/sys/odb_backend.h similarity index 100% rename from include/git2/sys/odb_backend.h rename to deps/libgit2/include/git2/sys/odb_backend.h diff --git a/include/git2/sys/refdb_backend.h b/deps/libgit2/include/git2/sys/refdb_backend.h similarity index 100% rename from include/git2/sys/refdb_backend.h rename to deps/libgit2/include/git2/sys/refdb_backend.h diff --git a/include/git2/sys/reflog.h b/deps/libgit2/include/git2/sys/reflog.h similarity index 100% rename from include/git2/sys/reflog.h rename to deps/libgit2/include/git2/sys/reflog.h diff --git a/include/git2/sys/refs.h b/deps/libgit2/include/git2/sys/refs.h similarity index 100% rename from include/git2/sys/refs.h rename to deps/libgit2/include/git2/sys/refs.h diff --git a/include/git2/sys/repository.h b/deps/libgit2/include/git2/sys/repository.h similarity index 100% rename from include/git2/sys/repository.h rename to deps/libgit2/include/git2/sys/repository.h diff --git a/include/git2/tag.h b/deps/libgit2/include/git2/tag.h similarity index 100% rename from include/git2/tag.h rename to deps/libgit2/include/git2/tag.h diff --git a/include/git2/threads.h b/deps/libgit2/include/git2/threads.h similarity index 100% rename from include/git2/threads.h rename to deps/libgit2/include/git2/threads.h diff --git a/include/git2/trace.h b/deps/libgit2/include/git2/trace.h similarity index 100% rename from include/git2/trace.h rename to deps/libgit2/include/git2/trace.h diff --git a/include/git2/transport.h b/deps/libgit2/include/git2/transport.h similarity index 100% rename from include/git2/transport.h rename to deps/libgit2/include/git2/transport.h diff --git a/include/git2/tree.h b/deps/libgit2/include/git2/tree.h similarity index 100% rename from include/git2/tree.h rename to deps/libgit2/include/git2/tree.h diff --git a/include/git2/types.h b/deps/libgit2/include/git2/types.h similarity index 100% rename from include/git2/types.h rename to deps/libgit2/include/git2/types.h diff --git a/include/git2/version.h b/deps/libgit2/include/git2/version.h similarity index 100% rename from include/git2/version.h rename to deps/libgit2/include/git2/version.h diff --git a/libgit2.pc.in b/deps/libgit2/libgit2.pc.in similarity index 100% rename from libgit2.pc.in rename to deps/libgit2/libgit2.pc.in diff --git a/libgit2_clar.supp b/deps/libgit2/libgit2_clar.supp similarity index 100% rename from libgit2_clar.supp rename to deps/libgit2/libgit2_clar.supp diff --git a/script/cibuild.sh b/deps/libgit2/script/cibuild.sh similarity index 100% rename from script/cibuild.sh rename to deps/libgit2/script/cibuild.sh diff --git a/script/coverity.sh b/deps/libgit2/script/coverity.sh similarity index 100% rename from script/coverity.sh rename to deps/libgit2/script/coverity.sh diff --git a/script/install-deps-linux.sh b/deps/libgit2/script/install-deps-linux.sh similarity index 100% rename from script/install-deps-linux.sh rename to deps/libgit2/script/install-deps-linux.sh diff --git a/script/install-deps-osx.sh b/deps/libgit2/script/install-deps-osx.sh similarity index 100% rename from script/install-deps-osx.sh rename to deps/libgit2/script/install-deps-osx.sh diff --git a/src/array.h b/deps/libgit2/src/array.h similarity index 100% rename from src/array.h rename to deps/libgit2/src/array.h diff --git a/src/attr.c b/deps/libgit2/src/attr.c similarity index 100% rename from src/attr.c rename to deps/libgit2/src/attr.c diff --git a/src/attr.h b/deps/libgit2/src/attr.h similarity index 100% rename from src/attr.h rename to deps/libgit2/src/attr.h diff --git a/src/attr_file.c b/deps/libgit2/src/attr_file.c similarity index 100% rename from src/attr_file.c rename to deps/libgit2/src/attr_file.c diff --git a/src/attr_file.h b/deps/libgit2/src/attr_file.h similarity index 100% rename from src/attr_file.h rename to deps/libgit2/src/attr_file.h diff --git a/src/attrcache.c b/deps/libgit2/src/attrcache.c similarity index 100% rename from src/attrcache.c rename to deps/libgit2/src/attrcache.c diff --git a/src/attrcache.h b/deps/libgit2/src/attrcache.h similarity index 100% rename from src/attrcache.h rename to deps/libgit2/src/attrcache.h diff --git a/src/bitvec.h b/deps/libgit2/src/bitvec.h similarity index 100% rename from src/bitvec.h rename to deps/libgit2/src/bitvec.h diff --git a/src/blame.c b/deps/libgit2/src/blame.c similarity index 100% rename from src/blame.c rename to deps/libgit2/src/blame.c diff --git a/src/blame.h b/deps/libgit2/src/blame.h similarity index 100% rename from src/blame.h rename to deps/libgit2/src/blame.h diff --git a/src/blame_git.c b/deps/libgit2/src/blame_git.c similarity index 100% rename from src/blame_git.c rename to deps/libgit2/src/blame_git.c diff --git a/src/blame_git.h b/deps/libgit2/src/blame_git.h similarity index 100% rename from src/blame_git.h rename to deps/libgit2/src/blame_git.h diff --git a/src/blob.c b/deps/libgit2/src/blob.c similarity index 100% rename from src/blob.c rename to deps/libgit2/src/blob.c diff --git a/src/blob.h b/deps/libgit2/src/blob.h similarity index 100% rename from src/blob.h rename to deps/libgit2/src/blob.h diff --git a/src/branch.c b/deps/libgit2/src/branch.c similarity index 100% rename from src/branch.c rename to deps/libgit2/src/branch.c diff --git a/src/branch.h b/deps/libgit2/src/branch.h similarity index 100% rename from src/branch.h rename to deps/libgit2/src/branch.h diff --git a/src/bswap.h b/deps/libgit2/src/bswap.h similarity index 100% rename from src/bswap.h rename to deps/libgit2/src/bswap.h diff --git a/src/buf_text.c b/deps/libgit2/src/buf_text.c similarity index 100% rename from src/buf_text.c rename to deps/libgit2/src/buf_text.c diff --git a/src/buf_text.h b/deps/libgit2/src/buf_text.h similarity index 100% rename from src/buf_text.h rename to deps/libgit2/src/buf_text.h diff --git a/src/buffer.c b/deps/libgit2/src/buffer.c similarity index 100% rename from src/buffer.c rename to deps/libgit2/src/buffer.c diff --git a/src/buffer.h b/deps/libgit2/src/buffer.h similarity index 100% rename from src/buffer.h rename to deps/libgit2/src/buffer.h diff --git a/src/cache.c b/deps/libgit2/src/cache.c similarity index 100% rename from src/cache.c rename to deps/libgit2/src/cache.c diff --git a/src/cache.h b/deps/libgit2/src/cache.h similarity index 100% rename from src/cache.h rename to deps/libgit2/src/cache.h diff --git a/src/cc-compat.h b/deps/libgit2/src/cc-compat.h similarity index 100% rename from src/cc-compat.h rename to deps/libgit2/src/cc-compat.h diff --git a/src/checkout.c b/deps/libgit2/src/checkout.c similarity index 100% rename from src/checkout.c rename to deps/libgit2/src/checkout.c diff --git a/src/checkout.h b/deps/libgit2/src/checkout.h similarity index 100% rename from src/checkout.h rename to deps/libgit2/src/checkout.h diff --git a/src/cherrypick.c b/deps/libgit2/src/cherrypick.c similarity index 100% rename from src/cherrypick.c rename to deps/libgit2/src/cherrypick.c diff --git a/src/clone.c b/deps/libgit2/src/clone.c similarity index 100% rename from src/clone.c rename to deps/libgit2/src/clone.c diff --git a/src/clone.h b/deps/libgit2/src/clone.h similarity index 100% rename from src/clone.h rename to deps/libgit2/src/clone.h diff --git a/src/commit.c b/deps/libgit2/src/commit.c similarity index 100% rename from src/commit.c rename to deps/libgit2/src/commit.c diff --git a/src/commit.h b/deps/libgit2/src/commit.h similarity index 100% rename from src/commit.h rename to deps/libgit2/src/commit.h diff --git a/src/commit_list.c b/deps/libgit2/src/commit_list.c similarity index 100% rename from src/commit_list.c rename to deps/libgit2/src/commit_list.c diff --git a/src/commit_list.h b/deps/libgit2/src/commit_list.h similarity index 100% rename from src/commit_list.h rename to deps/libgit2/src/commit_list.h diff --git a/src/common.h b/deps/libgit2/src/common.h similarity index 100% rename from src/common.h rename to deps/libgit2/src/common.h diff --git a/src/config.c b/deps/libgit2/src/config.c similarity index 100% rename from src/config.c rename to deps/libgit2/src/config.c diff --git a/src/config.h b/deps/libgit2/src/config.h similarity index 100% rename from src/config.h rename to deps/libgit2/src/config.h diff --git a/src/config_cache.c b/deps/libgit2/src/config_cache.c similarity index 100% rename from src/config_cache.c rename to deps/libgit2/src/config_cache.c diff --git a/src/config_file.c b/deps/libgit2/src/config_file.c similarity index 100% rename from src/config_file.c rename to deps/libgit2/src/config_file.c diff --git a/src/config_file.h b/deps/libgit2/src/config_file.h similarity index 100% rename from src/config_file.h rename to deps/libgit2/src/config_file.h diff --git a/src/crlf.c b/deps/libgit2/src/crlf.c similarity index 100% rename from src/crlf.c rename to deps/libgit2/src/crlf.c diff --git a/src/date.c b/deps/libgit2/src/date.c similarity index 100% rename from src/date.c rename to deps/libgit2/src/date.c diff --git a/src/delta-apply.c b/deps/libgit2/src/delta-apply.c similarity index 100% rename from src/delta-apply.c rename to deps/libgit2/src/delta-apply.c diff --git a/src/delta-apply.h b/deps/libgit2/src/delta-apply.h similarity index 100% rename from src/delta-apply.h rename to deps/libgit2/src/delta-apply.h diff --git a/src/delta.c b/deps/libgit2/src/delta.c similarity index 100% rename from src/delta.c rename to deps/libgit2/src/delta.c diff --git a/src/delta.h b/deps/libgit2/src/delta.h similarity index 100% rename from src/delta.h rename to deps/libgit2/src/delta.h diff --git a/src/diff.c b/deps/libgit2/src/diff.c similarity index 100% rename from src/diff.c rename to deps/libgit2/src/diff.c diff --git a/src/diff.h b/deps/libgit2/src/diff.h similarity index 100% rename from src/diff.h rename to deps/libgit2/src/diff.h diff --git a/src/diff_driver.c b/deps/libgit2/src/diff_driver.c similarity index 100% rename from src/diff_driver.c rename to deps/libgit2/src/diff_driver.c diff --git a/src/diff_driver.h b/deps/libgit2/src/diff_driver.h similarity index 100% rename from src/diff_driver.h rename to deps/libgit2/src/diff_driver.h diff --git a/src/diff_file.c b/deps/libgit2/src/diff_file.c similarity index 100% rename from src/diff_file.c rename to deps/libgit2/src/diff_file.c diff --git a/src/diff_file.h b/deps/libgit2/src/diff_file.h similarity index 100% rename from src/diff_file.h rename to deps/libgit2/src/diff_file.h diff --git a/src/diff_patch.c b/deps/libgit2/src/diff_patch.c similarity index 100% rename from src/diff_patch.c rename to deps/libgit2/src/diff_patch.c diff --git a/src/diff_patch.h b/deps/libgit2/src/diff_patch.h similarity index 100% rename from src/diff_patch.h rename to deps/libgit2/src/diff_patch.h diff --git a/src/diff_print.c b/deps/libgit2/src/diff_print.c similarity index 100% rename from src/diff_print.c rename to deps/libgit2/src/diff_print.c diff --git a/src/diff_stats.c b/deps/libgit2/src/diff_stats.c similarity index 100% rename from src/diff_stats.c rename to deps/libgit2/src/diff_stats.c diff --git a/src/diff_tform.c b/deps/libgit2/src/diff_tform.c similarity index 100% rename from src/diff_tform.c rename to deps/libgit2/src/diff_tform.c diff --git a/src/diff_xdiff.c b/deps/libgit2/src/diff_xdiff.c similarity index 100% rename from src/diff_xdiff.c rename to deps/libgit2/src/diff_xdiff.c diff --git a/src/diff_xdiff.h b/deps/libgit2/src/diff_xdiff.h similarity index 100% rename from src/diff_xdiff.h rename to deps/libgit2/src/diff_xdiff.h diff --git a/src/errors.c b/deps/libgit2/src/errors.c similarity index 100% rename from src/errors.c rename to deps/libgit2/src/errors.c diff --git a/src/fetch.c b/deps/libgit2/src/fetch.c similarity index 100% rename from src/fetch.c rename to deps/libgit2/src/fetch.c diff --git a/src/fetch.h b/deps/libgit2/src/fetch.h similarity index 100% rename from src/fetch.h rename to deps/libgit2/src/fetch.h diff --git a/src/fetchhead.c b/deps/libgit2/src/fetchhead.c similarity index 100% rename from src/fetchhead.c rename to deps/libgit2/src/fetchhead.c diff --git a/src/fetchhead.h b/deps/libgit2/src/fetchhead.h similarity index 100% rename from src/fetchhead.h rename to deps/libgit2/src/fetchhead.h diff --git a/src/filebuf.c b/deps/libgit2/src/filebuf.c similarity index 100% rename from src/filebuf.c rename to deps/libgit2/src/filebuf.c diff --git a/src/filebuf.h b/deps/libgit2/src/filebuf.h similarity index 100% rename from src/filebuf.h rename to deps/libgit2/src/filebuf.h diff --git a/src/fileops.c b/deps/libgit2/src/fileops.c similarity index 100% rename from src/fileops.c rename to deps/libgit2/src/fileops.c diff --git a/src/fileops.h b/deps/libgit2/src/fileops.h similarity index 100% rename from src/fileops.h rename to deps/libgit2/src/fileops.h diff --git a/src/filter.c b/deps/libgit2/src/filter.c similarity index 100% rename from src/filter.c rename to deps/libgit2/src/filter.c diff --git a/src/filter.h b/deps/libgit2/src/filter.h similarity index 100% rename from src/filter.h rename to deps/libgit2/src/filter.h diff --git a/src/fnmatch.c b/deps/libgit2/src/fnmatch.c similarity index 100% rename from src/fnmatch.c rename to deps/libgit2/src/fnmatch.c diff --git a/src/fnmatch.h b/deps/libgit2/src/fnmatch.h similarity index 100% rename from src/fnmatch.h rename to deps/libgit2/src/fnmatch.h diff --git a/src/global.c b/deps/libgit2/src/global.c similarity index 100% rename from src/global.c rename to deps/libgit2/src/global.c diff --git a/src/global.h b/deps/libgit2/src/global.h similarity index 100% rename from src/global.h rename to deps/libgit2/src/global.h diff --git a/src/graph.c b/deps/libgit2/src/graph.c similarity index 100% rename from src/graph.c rename to deps/libgit2/src/graph.c diff --git a/src/hash.c b/deps/libgit2/src/hash.c similarity index 100% rename from src/hash.c rename to deps/libgit2/src/hash.c diff --git a/src/hash.h b/deps/libgit2/src/hash.h similarity index 100% rename from src/hash.h rename to deps/libgit2/src/hash.h diff --git a/src/hash/hash_generic.c b/deps/libgit2/src/hash/hash_generic.c similarity index 100% rename from src/hash/hash_generic.c rename to deps/libgit2/src/hash/hash_generic.c diff --git a/src/hash/hash_generic.h b/deps/libgit2/src/hash/hash_generic.h similarity index 100% rename from src/hash/hash_generic.h rename to deps/libgit2/src/hash/hash_generic.h diff --git a/src/hash/hash_openssl.h b/deps/libgit2/src/hash/hash_openssl.h similarity index 100% rename from src/hash/hash_openssl.h rename to deps/libgit2/src/hash/hash_openssl.h diff --git a/src/hash/hash_win32.c b/deps/libgit2/src/hash/hash_win32.c similarity index 100% rename from src/hash/hash_win32.c rename to deps/libgit2/src/hash/hash_win32.c diff --git a/src/hash/hash_win32.h b/deps/libgit2/src/hash/hash_win32.h similarity index 100% rename from src/hash/hash_win32.h rename to deps/libgit2/src/hash/hash_win32.h diff --git a/src/hashsig.c b/deps/libgit2/src/hashsig.c similarity index 100% rename from src/hashsig.c rename to deps/libgit2/src/hashsig.c diff --git a/src/hashsig.h b/deps/libgit2/src/hashsig.h similarity index 100% rename from src/hashsig.h rename to deps/libgit2/src/hashsig.h diff --git a/src/ident.c b/deps/libgit2/src/ident.c similarity index 100% rename from src/ident.c rename to deps/libgit2/src/ident.c diff --git a/src/ignore.c b/deps/libgit2/src/ignore.c similarity index 100% rename from src/ignore.c rename to deps/libgit2/src/ignore.c diff --git a/src/ignore.h b/deps/libgit2/src/ignore.h similarity index 100% rename from src/ignore.h rename to deps/libgit2/src/ignore.h diff --git a/src/index.c b/deps/libgit2/src/index.c similarity index 100% rename from src/index.c rename to deps/libgit2/src/index.c diff --git a/src/index.h b/deps/libgit2/src/index.h similarity index 100% rename from src/index.h rename to deps/libgit2/src/index.h diff --git a/src/indexer.c b/deps/libgit2/src/indexer.c similarity index 100% rename from src/indexer.c rename to deps/libgit2/src/indexer.c diff --git a/src/iterator.c b/deps/libgit2/src/iterator.c similarity index 100% rename from src/iterator.c rename to deps/libgit2/src/iterator.c diff --git a/src/iterator.h b/deps/libgit2/src/iterator.h similarity index 100% rename from src/iterator.h rename to deps/libgit2/src/iterator.h diff --git a/src/khash.h b/deps/libgit2/src/khash.h similarity index 100% rename from src/khash.h rename to deps/libgit2/src/khash.h diff --git a/src/map.h b/deps/libgit2/src/map.h similarity index 100% rename from src/map.h rename to deps/libgit2/src/map.h diff --git a/src/merge.c b/deps/libgit2/src/merge.c similarity index 100% rename from src/merge.c rename to deps/libgit2/src/merge.c diff --git a/src/merge.h b/deps/libgit2/src/merge.h similarity index 100% rename from src/merge.h rename to deps/libgit2/src/merge.h diff --git a/src/merge_file.c b/deps/libgit2/src/merge_file.c similarity index 100% rename from src/merge_file.c rename to deps/libgit2/src/merge_file.c diff --git a/src/merge_file.h b/deps/libgit2/src/merge_file.h similarity index 100% rename from src/merge_file.h rename to deps/libgit2/src/merge_file.h diff --git a/src/message.c b/deps/libgit2/src/message.c similarity index 100% rename from src/message.c rename to deps/libgit2/src/message.c diff --git a/src/message.h b/deps/libgit2/src/message.h similarity index 100% rename from src/message.h rename to deps/libgit2/src/message.h diff --git a/src/mwindow.c b/deps/libgit2/src/mwindow.c similarity index 100% rename from src/mwindow.c rename to deps/libgit2/src/mwindow.c diff --git a/src/mwindow.h b/deps/libgit2/src/mwindow.h similarity index 100% rename from src/mwindow.h rename to deps/libgit2/src/mwindow.h diff --git a/src/netops.c b/deps/libgit2/src/netops.c similarity index 100% rename from src/netops.c rename to deps/libgit2/src/netops.c diff --git a/src/netops.h b/deps/libgit2/src/netops.h similarity index 100% rename from src/netops.h rename to deps/libgit2/src/netops.h diff --git a/src/notes.c b/deps/libgit2/src/notes.c similarity index 100% rename from src/notes.c rename to deps/libgit2/src/notes.c diff --git a/src/notes.h b/deps/libgit2/src/notes.h similarity index 100% rename from src/notes.h rename to deps/libgit2/src/notes.h diff --git a/src/object.c b/deps/libgit2/src/object.c similarity index 100% rename from src/object.c rename to deps/libgit2/src/object.c diff --git a/src/object.h b/deps/libgit2/src/object.h similarity index 100% rename from src/object.h rename to deps/libgit2/src/object.h diff --git a/src/object_api.c b/deps/libgit2/src/object_api.c similarity index 100% rename from src/object_api.c rename to deps/libgit2/src/object_api.c diff --git a/src/odb.c b/deps/libgit2/src/odb.c similarity index 100% rename from src/odb.c rename to deps/libgit2/src/odb.c diff --git a/src/odb.h b/deps/libgit2/src/odb.h similarity index 100% rename from src/odb.h rename to deps/libgit2/src/odb.h diff --git a/src/odb_loose.c b/deps/libgit2/src/odb_loose.c similarity index 100% rename from src/odb_loose.c rename to deps/libgit2/src/odb_loose.c diff --git a/src/odb_mempack.c b/deps/libgit2/src/odb_mempack.c similarity index 100% rename from src/odb_mempack.c rename to deps/libgit2/src/odb_mempack.c diff --git a/src/odb_pack.c b/deps/libgit2/src/odb_pack.c similarity index 100% rename from src/odb_pack.c rename to deps/libgit2/src/odb_pack.c diff --git a/src/offmap.h b/deps/libgit2/src/offmap.h similarity index 100% rename from src/offmap.h rename to deps/libgit2/src/offmap.h diff --git a/src/oid.c b/deps/libgit2/src/oid.c similarity index 100% rename from src/oid.c rename to deps/libgit2/src/oid.c diff --git a/src/oid.h b/deps/libgit2/src/oid.h similarity index 100% rename from src/oid.h rename to deps/libgit2/src/oid.h diff --git a/src/oidmap.h b/deps/libgit2/src/oidmap.h similarity index 100% rename from src/oidmap.h rename to deps/libgit2/src/oidmap.h diff --git a/src/pack-objects.c b/deps/libgit2/src/pack-objects.c similarity index 100% rename from src/pack-objects.c rename to deps/libgit2/src/pack-objects.c diff --git a/src/pack-objects.h b/deps/libgit2/src/pack-objects.h similarity index 100% rename from src/pack-objects.h rename to deps/libgit2/src/pack-objects.h diff --git a/src/pack.c b/deps/libgit2/src/pack.c similarity index 100% rename from src/pack.c rename to deps/libgit2/src/pack.c diff --git a/src/pack.h b/deps/libgit2/src/pack.h similarity index 100% rename from src/pack.h rename to deps/libgit2/src/pack.h diff --git a/src/path.c b/deps/libgit2/src/path.c similarity index 100% rename from src/path.c rename to deps/libgit2/src/path.c diff --git a/src/path.h b/deps/libgit2/src/path.h similarity index 100% rename from src/path.h rename to deps/libgit2/src/path.h diff --git a/src/pathspec.c b/deps/libgit2/src/pathspec.c similarity index 100% rename from src/pathspec.c rename to deps/libgit2/src/pathspec.c diff --git a/src/pathspec.h b/deps/libgit2/src/pathspec.h similarity index 100% rename from src/pathspec.h rename to deps/libgit2/src/pathspec.h diff --git a/src/pool.c b/deps/libgit2/src/pool.c similarity index 100% rename from src/pool.c rename to deps/libgit2/src/pool.c diff --git a/src/pool.h b/deps/libgit2/src/pool.h similarity index 100% rename from src/pool.h rename to deps/libgit2/src/pool.h diff --git a/src/posix.c b/deps/libgit2/src/posix.c similarity index 100% rename from src/posix.c rename to deps/libgit2/src/posix.c diff --git a/src/posix.h b/deps/libgit2/src/posix.h similarity index 100% rename from src/posix.h rename to deps/libgit2/src/posix.h diff --git a/src/pqueue.c b/deps/libgit2/src/pqueue.c similarity index 100% rename from src/pqueue.c rename to deps/libgit2/src/pqueue.c diff --git a/src/pqueue.h b/deps/libgit2/src/pqueue.h similarity index 100% rename from src/pqueue.h rename to deps/libgit2/src/pqueue.h diff --git a/src/push.c b/deps/libgit2/src/push.c similarity index 100% rename from src/push.c rename to deps/libgit2/src/push.c diff --git a/src/push.h b/deps/libgit2/src/push.h similarity index 100% rename from src/push.h rename to deps/libgit2/src/push.h diff --git a/src/refdb.c b/deps/libgit2/src/refdb.c similarity index 100% rename from src/refdb.c rename to deps/libgit2/src/refdb.c diff --git a/src/refdb.h b/deps/libgit2/src/refdb.h similarity index 100% rename from src/refdb.h rename to deps/libgit2/src/refdb.h diff --git a/src/refdb_fs.c b/deps/libgit2/src/refdb_fs.c similarity index 100% rename from src/refdb_fs.c rename to deps/libgit2/src/refdb_fs.c diff --git a/src/refdb_fs.h b/deps/libgit2/src/refdb_fs.h similarity index 100% rename from src/refdb_fs.h rename to deps/libgit2/src/refdb_fs.h diff --git a/src/reflog.c b/deps/libgit2/src/reflog.c similarity index 100% rename from src/reflog.c rename to deps/libgit2/src/reflog.c diff --git a/src/reflog.h b/deps/libgit2/src/reflog.h similarity index 100% rename from src/reflog.h rename to deps/libgit2/src/reflog.h diff --git a/src/refs.c b/deps/libgit2/src/refs.c similarity index 100% rename from src/refs.c rename to deps/libgit2/src/refs.c diff --git a/src/refs.h b/deps/libgit2/src/refs.h similarity index 100% rename from src/refs.h rename to deps/libgit2/src/refs.h diff --git a/src/refspec.c b/deps/libgit2/src/refspec.c similarity index 100% rename from src/refspec.c rename to deps/libgit2/src/refspec.c diff --git a/src/refspec.h b/deps/libgit2/src/refspec.h similarity index 100% rename from src/refspec.h rename to deps/libgit2/src/refspec.h diff --git a/src/remote.c b/deps/libgit2/src/remote.c similarity index 100% rename from src/remote.c rename to deps/libgit2/src/remote.c diff --git a/src/remote.h b/deps/libgit2/src/remote.h similarity index 100% rename from src/remote.h rename to deps/libgit2/src/remote.h diff --git a/src/repo_template.h b/deps/libgit2/src/repo_template.h similarity index 100% rename from src/repo_template.h rename to deps/libgit2/src/repo_template.h diff --git a/src/repository.c b/deps/libgit2/src/repository.c similarity index 100% rename from src/repository.c rename to deps/libgit2/src/repository.c diff --git a/src/repository.h b/deps/libgit2/src/repository.h similarity index 100% rename from src/repository.h rename to deps/libgit2/src/repository.h diff --git a/src/reset.c b/deps/libgit2/src/reset.c similarity index 100% rename from src/reset.c rename to deps/libgit2/src/reset.c diff --git a/src/revert.c b/deps/libgit2/src/revert.c similarity index 100% rename from src/revert.c rename to deps/libgit2/src/revert.c diff --git a/src/revparse.c b/deps/libgit2/src/revparse.c similarity index 100% rename from src/revparse.c rename to deps/libgit2/src/revparse.c diff --git a/src/revwalk.c b/deps/libgit2/src/revwalk.c similarity index 100% rename from src/revwalk.c rename to deps/libgit2/src/revwalk.c diff --git a/src/revwalk.h b/deps/libgit2/src/revwalk.h similarity index 100% rename from src/revwalk.h rename to deps/libgit2/src/revwalk.h diff --git a/src/settings.c b/deps/libgit2/src/settings.c similarity index 100% rename from src/settings.c rename to deps/libgit2/src/settings.c diff --git a/src/sha1_lookup.c b/deps/libgit2/src/sha1_lookup.c similarity index 100% rename from src/sha1_lookup.c rename to deps/libgit2/src/sha1_lookup.c diff --git a/src/sha1_lookup.h b/deps/libgit2/src/sha1_lookup.h similarity index 100% rename from src/sha1_lookup.h rename to deps/libgit2/src/sha1_lookup.h diff --git a/src/signature.c b/deps/libgit2/src/signature.c similarity index 100% rename from src/signature.c rename to deps/libgit2/src/signature.c diff --git a/src/signature.h b/deps/libgit2/src/signature.h similarity index 100% rename from src/signature.h rename to deps/libgit2/src/signature.h diff --git a/src/sortedcache.c b/deps/libgit2/src/sortedcache.c similarity index 100% rename from src/sortedcache.c rename to deps/libgit2/src/sortedcache.c diff --git a/src/sortedcache.h b/deps/libgit2/src/sortedcache.h similarity index 100% rename from src/sortedcache.h rename to deps/libgit2/src/sortedcache.h diff --git a/src/stash.c b/deps/libgit2/src/stash.c similarity index 100% rename from src/stash.c rename to deps/libgit2/src/stash.c diff --git a/src/status.c b/deps/libgit2/src/status.c similarity index 100% rename from src/status.c rename to deps/libgit2/src/status.c diff --git a/src/status.h b/deps/libgit2/src/status.h similarity index 100% rename from src/status.h rename to deps/libgit2/src/status.h diff --git a/src/strmap.c b/deps/libgit2/src/strmap.c similarity index 100% rename from src/strmap.c rename to deps/libgit2/src/strmap.c diff --git a/src/strmap.h b/deps/libgit2/src/strmap.h similarity index 100% rename from src/strmap.h rename to deps/libgit2/src/strmap.h diff --git a/src/strnlen.h b/deps/libgit2/src/strnlen.h similarity index 100% rename from src/strnlen.h rename to deps/libgit2/src/strnlen.h diff --git a/src/submodule.c b/deps/libgit2/src/submodule.c similarity index 100% rename from src/submodule.c rename to deps/libgit2/src/submodule.c diff --git a/src/submodule.h b/deps/libgit2/src/submodule.h similarity index 100% rename from src/submodule.h rename to deps/libgit2/src/submodule.h diff --git a/src/sysdir.c b/deps/libgit2/src/sysdir.c similarity index 100% rename from src/sysdir.c rename to deps/libgit2/src/sysdir.c diff --git a/src/sysdir.h b/deps/libgit2/src/sysdir.h similarity index 100% rename from src/sysdir.h rename to deps/libgit2/src/sysdir.h diff --git a/src/tag.c b/deps/libgit2/src/tag.c similarity index 100% rename from src/tag.c rename to deps/libgit2/src/tag.c diff --git a/src/tag.h b/deps/libgit2/src/tag.h similarity index 100% rename from src/tag.h rename to deps/libgit2/src/tag.h diff --git a/src/thread-utils.c b/deps/libgit2/src/thread-utils.c similarity index 100% rename from src/thread-utils.c rename to deps/libgit2/src/thread-utils.c diff --git a/src/thread-utils.h b/deps/libgit2/src/thread-utils.h similarity index 100% rename from src/thread-utils.h rename to deps/libgit2/src/thread-utils.h diff --git a/src/trace.c b/deps/libgit2/src/trace.c similarity index 100% rename from src/trace.c rename to deps/libgit2/src/trace.c diff --git a/src/trace.h b/deps/libgit2/src/trace.h similarity index 100% rename from src/trace.h rename to deps/libgit2/src/trace.h diff --git a/src/transport.c b/deps/libgit2/src/transport.c similarity index 100% rename from src/transport.c rename to deps/libgit2/src/transport.c diff --git a/src/transports/cred.c b/deps/libgit2/src/transports/cred.c similarity index 100% rename from src/transports/cred.c rename to deps/libgit2/src/transports/cred.c diff --git a/src/transports/cred_helpers.c b/deps/libgit2/src/transports/cred_helpers.c similarity index 100% rename from src/transports/cred_helpers.c rename to deps/libgit2/src/transports/cred_helpers.c diff --git a/src/transports/git.c b/deps/libgit2/src/transports/git.c similarity index 100% rename from src/transports/git.c rename to deps/libgit2/src/transports/git.c diff --git a/src/transports/http.c b/deps/libgit2/src/transports/http.c similarity index 100% rename from src/transports/http.c rename to deps/libgit2/src/transports/http.c diff --git a/src/transports/local.c b/deps/libgit2/src/transports/local.c similarity index 100% rename from src/transports/local.c rename to deps/libgit2/src/transports/local.c diff --git a/src/transports/smart.c b/deps/libgit2/src/transports/smart.c similarity index 100% rename from src/transports/smart.c rename to deps/libgit2/src/transports/smart.c diff --git a/src/transports/smart.h b/deps/libgit2/src/transports/smart.h similarity index 100% rename from src/transports/smart.h rename to deps/libgit2/src/transports/smart.h diff --git a/src/transports/smart_pkt.c b/deps/libgit2/src/transports/smart_pkt.c similarity index 100% rename from src/transports/smart_pkt.c rename to deps/libgit2/src/transports/smart_pkt.c diff --git a/src/transports/smart_protocol.c b/deps/libgit2/src/transports/smart_protocol.c similarity index 100% rename from src/transports/smart_protocol.c rename to deps/libgit2/src/transports/smart_protocol.c diff --git a/src/transports/ssh.c b/deps/libgit2/src/transports/ssh.c similarity index 100% rename from src/transports/ssh.c rename to deps/libgit2/src/transports/ssh.c diff --git a/src/transports/winhttp.c b/deps/libgit2/src/transports/winhttp.c similarity index 100% rename from src/transports/winhttp.c rename to deps/libgit2/src/transports/winhttp.c diff --git a/src/tree-cache.c b/deps/libgit2/src/tree-cache.c similarity index 100% rename from src/tree-cache.c rename to deps/libgit2/src/tree-cache.c diff --git a/src/tree-cache.h b/deps/libgit2/src/tree-cache.h similarity index 100% rename from src/tree-cache.h rename to deps/libgit2/src/tree-cache.h diff --git a/src/tree.c b/deps/libgit2/src/tree.c similarity index 100% rename from src/tree.c rename to deps/libgit2/src/tree.c diff --git a/src/tree.h b/deps/libgit2/src/tree.h similarity index 100% rename from src/tree.h rename to deps/libgit2/src/tree.h diff --git a/src/tsort.c b/deps/libgit2/src/tsort.c similarity index 100% rename from src/tsort.c rename to deps/libgit2/src/tsort.c diff --git a/src/unix/map.c b/deps/libgit2/src/unix/map.c similarity index 100% rename from src/unix/map.c rename to deps/libgit2/src/unix/map.c diff --git a/src/unix/posix.h b/deps/libgit2/src/unix/posix.h similarity index 100% rename from src/unix/posix.h rename to deps/libgit2/src/unix/posix.h diff --git a/src/unix/realpath.c b/deps/libgit2/src/unix/realpath.c similarity index 100% rename from src/unix/realpath.c rename to deps/libgit2/src/unix/realpath.c diff --git a/src/userdiff.h b/deps/libgit2/src/userdiff.h similarity index 100% rename from src/userdiff.h rename to deps/libgit2/src/userdiff.h diff --git a/src/util.c b/deps/libgit2/src/util.c similarity index 100% rename from src/util.c rename to deps/libgit2/src/util.c diff --git a/src/util.h b/deps/libgit2/src/util.h similarity index 100% rename from src/util.h rename to deps/libgit2/src/util.h diff --git a/src/vector.c b/deps/libgit2/src/vector.c similarity index 100% rename from src/vector.c rename to deps/libgit2/src/vector.c diff --git a/src/vector.h b/deps/libgit2/src/vector.h similarity index 100% rename from src/vector.h rename to deps/libgit2/src/vector.h diff --git a/src/win32/dir.c b/deps/libgit2/src/win32/dir.c similarity index 100% rename from src/win32/dir.c rename to deps/libgit2/src/win32/dir.c diff --git a/src/win32/dir.h b/deps/libgit2/src/win32/dir.h similarity index 100% rename from src/win32/dir.h rename to deps/libgit2/src/win32/dir.h diff --git a/src/win32/error.c b/deps/libgit2/src/win32/error.c similarity index 100% rename from src/win32/error.c rename to deps/libgit2/src/win32/error.c diff --git a/src/win32/error.h b/deps/libgit2/src/win32/error.h similarity index 100% rename from src/win32/error.h rename to deps/libgit2/src/win32/error.h diff --git a/src/win32/findfile.c b/deps/libgit2/src/win32/findfile.c similarity index 100% rename from src/win32/findfile.c rename to deps/libgit2/src/win32/findfile.c diff --git a/src/win32/findfile.h b/deps/libgit2/src/win32/findfile.h similarity index 100% rename from src/win32/findfile.h rename to deps/libgit2/src/win32/findfile.h diff --git a/src/win32/git2.rc b/deps/libgit2/src/win32/git2.rc similarity index 100% rename from src/win32/git2.rc rename to deps/libgit2/src/win32/git2.rc diff --git a/src/win32/map.c b/deps/libgit2/src/win32/map.c similarity index 100% rename from src/win32/map.c rename to deps/libgit2/src/win32/map.c diff --git a/src/win32/mingw-compat.h b/deps/libgit2/src/win32/mingw-compat.h similarity index 100% rename from src/win32/mingw-compat.h rename to deps/libgit2/src/win32/mingw-compat.h diff --git a/src/win32/msvc-compat.h b/deps/libgit2/src/win32/msvc-compat.h similarity index 100% rename from src/win32/msvc-compat.h rename to deps/libgit2/src/win32/msvc-compat.h diff --git a/src/win32/posix.h b/deps/libgit2/src/win32/posix.h similarity index 100% rename from src/win32/posix.h rename to deps/libgit2/src/win32/posix.h diff --git a/src/win32/posix_w32.c b/deps/libgit2/src/win32/posix_w32.c similarity index 100% rename from src/win32/posix_w32.c rename to deps/libgit2/src/win32/posix_w32.c diff --git a/src/win32/precompiled.c b/deps/libgit2/src/win32/precompiled.c similarity index 100% rename from src/win32/precompiled.c rename to deps/libgit2/src/win32/precompiled.c diff --git a/src/win32/precompiled.h b/deps/libgit2/src/win32/precompiled.h similarity index 100% rename from src/win32/precompiled.h rename to deps/libgit2/src/win32/precompiled.h diff --git a/src/win32/pthread.c b/deps/libgit2/src/win32/pthread.c similarity index 100% rename from src/win32/pthread.c rename to deps/libgit2/src/win32/pthread.c diff --git a/src/win32/pthread.h b/deps/libgit2/src/win32/pthread.h similarity index 100% rename from src/win32/pthread.h rename to deps/libgit2/src/win32/pthread.h diff --git a/src/win32/reparse.h b/deps/libgit2/src/win32/reparse.h similarity index 100% rename from src/win32/reparse.h rename to deps/libgit2/src/win32/reparse.h diff --git a/src/win32/utf-conv.c b/deps/libgit2/src/win32/utf-conv.c similarity index 100% rename from src/win32/utf-conv.c rename to deps/libgit2/src/win32/utf-conv.c diff --git a/src/win32/utf-conv.h b/deps/libgit2/src/win32/utf-conv.h similarity index 100% rename from src/win32/utf-conv.h rename to deps/libgit2/src/win32/utf-conv.h diff --git a/src/win32/version.h b/deps/libgit2/src/win32/version.h similarity index 100% rename from src/win32/version.h rename to deps/libgit2/src/win32/version.h diff --git a/src/win32/w32_util.c b/deps/libgit2/src/win32/w32_util.c similarity index 100% rename from src/win32/w32_util.c rename to deps/libgit2/src/win32/w32_util.c diff --git a/src/win32/w32_util.h b/deps/libgit2/src/win32/w32_util.h similarity index 100% rename from src/win32/w32_util.h rename to deps/libgit2/src/win32/w32_util.h diff --git a/src/xdiff/xdiff.h b/deps/libgit2/src/xdiff/xdiff.h similarity index 100% rename from src/xdiff/xdiff.h rename to deps/libgit2/src/xdiff/xdiff.h diff --git a/src/xdiff/xdiffi.c b/deps/libgit2/src/xdiff/xdiffi.c similarity index 100% rename from src/xdiff/xdiffi.c rename to deps/libgit2/src/xdiff/xdiffi.c diff --git a/src/xdiff/xdiffi.h b/deps/libgit2/src/xdiff/xdiffi.h similarity index 100% rename from src/xdiff/xdiffi.h rename to deps/libgit2/src/xdiff/xdiffi.h diff --git a/src/xdiff/xemit.c b/deps/libgit2/src/xdiff/xemit.c similarity index 100% rename from src/xdiff/xemit.c rename to deps/libgit2/src/xdiff/xemit.c diff --git a/src/xdiff/xemit.h b/deps/libgit2/src/xdiff/xemit.h similarity index 100% rename from src/xdiff/xemit.h rename to deps/libgit2/src/xdiff/xemit.h diff --git a/src/xdiff/xhistogram.c b/deps/libgit2/src/xdiff/xhistogram.c similarity index 100% rename from src/xdiff/xhistogram.c rename to deps/libgit2/src/xdiff/xhistogram.c diff --git a/src/xdiff/xinclude.h b/deps/libgit2/src/xdiff/xinclude.h similarity index 100% rename from src/xdiff/xinclude.h rename to deps/libgit2/src/xdiff/xinclude.h diff --git a/src/xdiff/xmacros.h b/deps/libgit2/src/xdiff/xmacros.h similarity index 100% rename from src/xdiff/xmacros.h rename to deps/libgit2/src/xdiff/xmacros.h diff --git a/src/xdiff/xmerge.c b/deps/libgit2/src/xdiff/xmerge.c similarity index 100% rename from src/xdiff/xmerge.c rename to deps/libgit2/src/xdiff/xmerge.c diff --git a/src/xdiff/xpatience.c b/deps/libgit2/src/xdiff/xpatience.c similarity index 100% rename from src/xdiff/xpatience.c rename to deps/libgit2/src/xdiff/xpatience.c diff --git a/src/xdiff/xprepare.c b/deps/libgit2/src/xdiff/xprepare.c similarity index 100% rename from src/xdiff/xprepare.c rename to deps/libgit2/src/xdiff/xprepare.c diff --git a/src/xdiff/xprepare.h b/deps/libgit2/src/xdiff/xprepare.h similarity index 100% rename from src/xdiff/xprepare.h rename to deps/libgit2/src/xdiff/xprepare.h diff --git a/src/xdiff/xtypes.h b/deps/libgit2/src/xdiff/xtypes.h similarity index 100% rename from src/xdiff/xtypes.h rename to deps/libgit2/src/xdiff/xtypes.h diff --git a/src/xdiff/xutils.c b/deps/libgit2/src/xdiff/xutils.c similarity index 100% rename from src/xdiff/xutils.c rename to deps/libgit2/src/xdiff/xutils.c diff --git a/src/xdiff/xutils.h b/deps/libgit2/src/xdiff/xutils.h similarity index 100% rename from src/xdiff/xutils.h rename to deps/libgit2/src/xdiff/xutils.h diff --git a/src/zstream.c b/deps/libgit2/src/zstream.c similarity index 100% rename from src/zstream.c rename to deps/libgit2/src/zstream.c diff --git a/src/zstream.h b/deps/libgit2/src/zstream.h similarity index 100% rename from src/zstream.h rename to deps/libgit2/src/zstream.h diff --git a/tests/README.md b/deps/libgit2/tests/README.md similarity index 100% rename from tests/README.md rename to deps/libgit2/tests/README.md diff --git a/tests/attr/attr_expect.h b/deps/libgit2/tests/attr/attr_expect.h similarity index 100% rename from tests/attr/attr_expect.h rename to deps/libgit2/tests/attr/attr_expect.h diff --git a/tests/attr/file.c b/deps/libgit2/tests/attr/file.c similarity index 100% rename from tests/attr/file.c rename to deps/libgit2/tests/attr/file.c diff --git a/tests/attr/flags.c b/deps/libgit2/tests/attr/flags.c similarity index 100% rename from tests/attr/flags.c rename to deps/libgit2/tests/attr/flags.c diff --git a/tests/attr/ignore.c b/deps/libgit2/tests/attr/ignore.c similarity index 100% rename from tests/attr/ignore.c rename to deps/libgit2/tests/attr/ignore.c diff --git a/tests/attr/lookup.c b/deps/libgit2/tests/attr/lookup.c similarity index 100% rename from tests/attr/lookup.c rename to deps/libgit2/tests/attr/lookup.c diff --git a/tests/attr/repo.c b/deps/libgit2/tests/attr/repo.c similarity index 100% rename from tests/attr/repo.c rename to deps/libgit2/tests/attr/repo.c diff --git a/tests/blame/blame_helpers.c b/deps/libgit2/tests/blame/blame_helpers.c similarity index 100% rename from tests/blame/blame_helpers.c rename to deps/libgit2/tests/blame/blame_helpers.c diff --git a/tests/blame/blame_helpers.h b/deps/libgit2/tests/blame/blame_helpers.h similarity index 100% rename from tests/blame/blame_helpers.h rename to deps/libgit2/tests/blame/blame_helpers.h diff --git a/tests/blame/buffer.c b/deps/libgit2/tests/blame/buffer.c similarity index 100% rename from tests/blame/buffer.c rename to deps/libgit2/tests/blame/buffer.c diff --git a/tests/blame/getters.c b/deps/libgit2/tests/blame/getters.c similarity index 100% rename from tests/blame/getters.c rename to deps/libgit2/tests/blame/getters.c diff --git a/tests/blame/harder.c b/deps/libgit2/tests/blame/harder.c similarity index 100% rename from tests/blame/harder.c rename to deps/libgit2/tests/blame/harder.c diff --git a/tests/blame/simple.c b/deps/libgit2/tests/blame/simple.c similarity index 100% rename from tests/blame/simple.c rename to deps/libgit2/tests/blame/simple.c diff --git a/tests/buf/basic.c b/deps/libgit2/tests/buf/basic.c similarity index 100% rename from tests/buf/basic.c rename to deps/libgit2/tests/buf/basic.c diff --git a/tests/buf/splice.c b/deps/libgit2/tests/buf/splice.c similarity index 100% rename from tests/buf/splice.c rename to deps/libgit2/tests/buf/splice.c diff --git a/tests/checkout/binaryunicode.c b/deps/libgit2/tests/checkout/binaryunicode.c similarity index 100% rename from tests/checkout/binaryunicode.c rename to deps/libgit2/tests/checkout/binaryunicode.c diff --git a/tests/checkout/checkout_helpers.c b/deps/libgit2/tests/checkout/checkout_helpers.c similarity index 100% rename from tests/checkout/checkout_helpers.c rename to deps/libgit2/tests/checkout/checkout_helpers.c diff --git a/tests/checkout/checkout_helpers.h b/deps/libgit2/tests/checkout/checkout_helpers.h similarity index 100% rename from tests/checkout/checkout_helpers.h rename to deps/libgit2/tests/checkout/checkout_helpers.h diff --git a/tests/checkout/conflict.c b/deps/libgit2/tests/checkout/conflict.c similarity index 100% rename from tests/checkout/conflict.c rename to deps/libgit2/tests/checkout/conflict.c diff --git a/tests/checkout/crlf.c b/deps/libgit2/tests/checkout/crlf.c similarity index 100% rename from tests/checkout/crlf.c rename to deps/libgit2/tests/checkout/crlf.c diff --git a/tests/checkout/head.c b/deps/libgit2/tests/checkout/head.c similarity index 100% rename from tests/checkout/head.c rename to deps/libgit2/tests/checkout/head.c diff --git a/tests/checkout/index.c b/deps/libgit2/tests/checkout/index.c similarity index 100% rename from tests/checkout/index.c rename to deps/libgit2/tests/checkout/index.c diff --git a/tests/checkout/tree.c b/deps/libgit2/tests/checkout/tree.c similarity index 100% rename from tests/checkout/tree.c rename to deps/libgit2/tests/checkout/tree.c diff --git a/tests/checkout/typechange.c b/deps/libgit2/tests/checkout/typechange.c similarity index 100% rename from tests/checkout/typechange.c rename to deps/libgit2/tests/checkout/typechange.c diff --git a/tests/cherrypick/bare.c b/deps/libgit2/tests/cherrypick/bare.c similarity index 100% rename from tests/cherrypick/bare.c rename to deps/libgit2/tests/cherrypick/bare.c diff --git a/tests/cherrypick/workdir.c b/deps/libgit2/tests/cherrypick/workdir.c similarity index 100% rename from tests/cherrypick/workdir.c rename to deps/libgit2/tests/cherrypick/workdir.c diff --git a/tests/clar.c b/deps/libgit2/tests/clar.c similarity index 100% rename from tests/clar.c rename to deps/libgit2/tests/clar.c diff --git a/tests/clar.h b/deps/libgit2/tests/clar.h similarity index 100% rename from tests/clar.h rename to deps/libgit2/tests/clar.h diff --git a/tests/clar/fixtures.h b/deps/libgit2/tests/clar/fixtures.h similarity index 100% rename from tests/clar/fixtures.h rename to deps/libgit2/tests/clar/fixtures.h diff --git a/tests/clar/fs.h b/deps/libgit2/tests/clar/fs.h similarity index 100% rename from tests/clar/fs.h rename to deps/libgit2/tests/clar/fs.h diff --git a/tests/clar/print.h b/deps/libgit2/tests/clar/print.h similarity index 100% rename from tests/clar/print.h rename to deps/libgit2/tests/clar/print.h diff --git a/tests/clar/sandbox.h b/deps/libgit2/tests/clar/sandbox.h similarity index 100% rename from tests/clar/sandbox.h rename to deps/libgit2/tests/clar/sandbox.h diff --git a/tests/clar_libgit2.c b/deps/libgit2/tests/clar_libgit2.c similarity index 100% rename from tests/clar_libgit2.c rename to deps/libgit2/tests/clar_libgit2.c diff --git a/tests/clar_libgit2.h b/deps/libgit2/tests/clar_libgit2.h similarity index 100% rename from tests/clar_libgit2.h rename to deps/libgit2/tests/clar_libgit2.h diff --git a/tests/clone/empty.c b/deps/libgit2/tests/clone/empty.c similarity index 100% rename from tests/clone/empty.c rename to deps/libgit2/tests/clone/empty.c diff --git a/tests/clone/local.c b/deps/libgit2/tests/clone/local.c similarity index 100% rename from tests/clone/local.c rename to deps/libgit2/tests/clone/local.c diff --git a/tests/clone/nonetwork.c b/deps/libgit2/tests/clone/nonetwork.c similarity index 100% rename from tests/clone/nonetwork.c rename to deps/libgit2/tests/clone/nonetwork.c diff --git a/tests/clone/transport.c b/deps/libgit2/tests/clone/transport.c similarity index 100% rename from tests/clone/transport.c rename to deps/libgit2/tests/clone/transport.c diff --git a/tests/commit/commit.c b/deps/libgit2/tests/commit/commit.c similarity index 100% rename from tests/commit/commit.c rename to deps/libgit2/tests/commit/commit.c diff --git a/tests/commit/parent.c b/deps/libgit2/tests/commit/parent.c similarity index 100% rename from tests/commit/parent.c rename to deps/libgit2/tests/commit/parent.c diff --git a/tests/commit/parse.c b/deps/libgit2/tests/commit/parse.c similarity index 100% rename from tests/commit/parse.c rename to deps/libgit2/tests/commit/parse.c diff --git a/tests/commit/signature.c b/deps/libgit2/tests/commit/signature.c similarity index 100% rename from tests/commit/signature.c rename to deps/libgit2/tests/commit/signature.c diff --git a/tests/commit/write.c b/deps/libgit2/tests/commit/write.c similarity index 100% rename from tests/commit/write.c rename to deps/libgit2/tests/commit/write.c diff --git a/tests/config/add.c b/deps/libgit2/tests/config/add.c similarity index 100% rename from tests/config/add.c rename to deps/libgit2/tests/config/add.c diff --git a/tests/config/backend.c b/deps/libgit2/tests/config/backend.c similarity index 100% rename from tests/config/backend.c rename to deps/libgit2/tests/config/backend.c diff --git a/tests/config/config_helpers.c b/deps/libgit2/tests/config/config_helpers.c similarity index 100% rename from tests/config/config_helpers.c rename to deps/libgit2/tests/config/config_helpers.c diff --git a/tests/config/config_helpers.h b/deps/libgit2/tests/config/config_helpers.h similarity index 100% rename from tests/config/config_helpers.h rename to deps/libgit2/tests/config/config_helpers.h diff --git a/tests/config/configlevel.c b/deps/libgit2/tests/config/configlevel.c similarity index 100% rename from tests/config/configlevel.c rename to deps/libgit2/tests/config/configlevel.c diff --git a/tests/config/global.c b/deps/libgit2/tests/config/global.c similarity index 100% rename from tests/config/global.c rename to deps/libgit2/tests/config/global.c diff --git a/tests/config/include.c b/deps/libgit2/tests/config/include.c similarity index 100% rename from tests/config/include.c rename to deps/libgit2/tests/config/include.c diff --git a/tests/config/multivar.c b/deps/libgit2/tests/config/multivar.c similarity index 100% rename from tests/config/multivar.c rename to deps/libgit2/tests/config/multivar.c diff --git a/tests/config/new.c b/deps/libgit2/tests/config/new.c similarity index 100% rename from tests/config/new.c rename to deps/libgit2/tests/config/new.c diff --git a/tests/config/read.c b/deps/libgit2/tests/config/read.c similarity index 100% rename from tests/config/read.c rename to deps/libgit2/tests/config/read.c diff --git a/tests/config/refresh.c b/deps/libgit2/tests/config/refresh.c similarity index 100% rename from tests/config/refresh.c rename to deps/libgit2/tests/config/refresh.c diff --git a/tests/config/rename.c b/deps/libgit2/tests/config/rename.c similarity index 100% rename from tests/config/rename.c rename to deps/libgit2/tests/config/rename.c diff --git a/tests/config/snapshot.c b/deps/libgit2/tests/config/snapshot.c similarity index 100% rename from tests/config/snapshot.c rename to deps/libgit2/tests/config/snapshot.c diff --git a/tests/config/stress.c b/deps/libgit2/tests/config/stress.c similarity index 100% rename from tests/config/stress.c rename to deps/libgit2/tests/config/stress.c diff --git a/tests/config/validkeyname.c b/deps/libgit2/tests/config/validkeyname.c similarity index 100% rename from tests/config/validkeyname.c rename to deps/libgit2/tests/config/validkeyname.c diff --git a/tests/config/write.c b/deps/libgit2/tests/config/write.c similarity index 100% rename from tests/config/write.c rename to deps/libgit2/tests/config/write.c diff --git a/tests/core/bitvec.c b/deps/libgit2/tests/core/bitvec.c similarity index 100% rename from tests/core/bitvec.c rename to deps/libgit2/tests/core/bitvec.c diff --git a/tests/core/buffer.c b/deps/libgit2/tests/core/buffer.c similarity index 100% rename from tests/core/buffer.c rename to deps/libgit2/tests/core/buffer.c diff --git a/tests/core/copy.c b/deps/libgit2/tests/core/copy.c similarity index 100% rename from tests/core/copy.c rename to deps/libgit2/tests/core/copy.c diff --git a/tests/core/dirent.c b/deps/libgit2/tests/core/dirent.c similarity index 100% rename from tests/core/dirent.c rename to deps/libgit2/tests/core/dirent.c diff --git a/tests/core/env.c b/deps/libgit2/tests/core/env.c similarity index 100% rename from tests/core/env.c rename to deps/libgit2/tests/core/env.c diff --git a/tests/core/errors.c b/deps/libgit2/tests/core/errors.c similarity index 100% rename from tests/core/errors.c rename to deps/libgit2/tests/core/errors.c diff --git a/tests/core/features.c b/deps/libgit2/tests/core/features.c similarity index 100% rename from tests/core/features.c rename to deps/libgit2/tests/core/features.c diff --git a/tests/core/filebuf.c b/deps/libgit2/tests/core/filebuf.c similarity index 100% rename from tests/core/filebuf.c rename to deps/libgit2/tests/core/filebuf.c diff --git a/tests/core/hex.c b/deps/libgit2/tests/core/hex.c similarity index 100% rename from tests/core/hex.c rename to deps/libgit2/tests/core/hex.c diff --git a/tests/core/iconv.c b/deps/libgit2/tests/core/iconv.c similarity index 100% rename from tests/core/iconv.c rename to deps/libgit2/tests/core/iconv.c diff --git a/tests/core/link.c b/deps/libgit2/tests/core/link.c similarity index 100% rename from tests/core/link.c rename to deps/libgit2/tests/core/link.c diff --git a/tests/core/mkdir.c b/deps/libgit2/tests/core/mkdir.c similarity index 100% rename from tests/core/mkdir.c rename to deps/libgit2/tests/core/mkdir.c diff --git a/tests/core/oid.c b/deps/libgit2/tests/core/oid.c similarity index 100% rename from tests/core/oid.c rename to deps/libgit2/tests/core/oid.c diff --git a/tests/core/oidmap.c b/deps/libgit2/tests/core/oidmap.c similarity index 100% rename from tests/core/oidmap.c rename to deps/libgit2/tests/core/oidmap.c diff --git a/tests/core/opts.c b/deps/libgit2/tests/core/opts.c similarity index 100% rename from tests/core/opts.c rename to deps/libgit2/tests/core/opts.c diff --git a/tests/core/path.c b/deps/libgit2/tests/core/path.c similarity index 100% rename from tests/core/path.c rename to deps/libgit2/tests/core/path.c diff --git a/tests/core/pool.c b/deps/libgit2/tests/core/pool.c similarity index 100% rename from tests/core/pool.c rename to deps/libgit2/tests/core/pool.c diff --git a/tests/core/posix.c b/deps/libgit2/tests/core/posix.c similarity index 100% rename from tests/core/posix.c rename to deps/libgit2/tests/core/posix.c diff --git a/tests/core/pqueue.c b/deps/libgit2/tests/core/pqueue.c similarity index 100% rename from tests/core/pqueue.c rename to deps/libgit2/tests/core/pqueue.c diff --git a/tests/core/rmdir.c b/deps/libgit2/tests/core/rmdir.c similarity index 100% rename from tests/core/rmdir.c rename to deps/libgit2/tests/core/rmdir.c diff --git a/tests/core/sortedcache.c b/deps/libgit2/tests/core/sortedcache.c similarity index 100% rename from tests/core/sortedcache.c rename to deps/libgit2/tests/core/sortedcache.c diff --git a/tests/core/stat.c b/deps/libgit2/tests/core/stat.c similarity index 100% rename from tests/core/stat.c rename to deps/libgit2/tests/core/stat.c diff --git a/tests/core/string.c b/deps/libgit2/tests/core/string.c similarity index 100% rename from tests/core/string.c rename to deps/libgit2/tests/core/string.c diff --git a/tests/core/strmap.c b/deps/libgit2/tests/core/strmap.c similarity index 100% rename from tests/core/strmap.c rename to deps/libgit2/tests/core/strmap.c diff --git a/tests/core/strtol.c b/deps/libgit2/tests/core/strtol.c similarity index 100% rename from tests/core/strtol.c rename to deps/libgit2/tests/core/strtol.c diff --git a/tests/core/vector.c b/deps/libgit2/tests/core/vector.c similarity index 100% rename from tests/core/vector.c rename to deps/libgit2/tests/core/vector.c diff --git a/tests/core/zstream.c b/deps/libgit2/tests/core/zstream.c similarity index 100% rename from tests/core/zstream.c rename to deps/libgit2/tests/core/zstream.c diff --git a/tests/date/date.c b/deps/libgit2/tests/date/date.c similarity index 100% rename from tests/date/date.c rename to deps/libgit2/tests/date/date.c diff --git a/tests/date/rfc2822.c b/deps/libgit2/tests/date/rfc2822.c similarity index 100% rename from tests/date/rfc2822.c rename to deps/libgit2/tests/date/rfc2822.c diff --git a/tests/diff/binary.c b/deps/libgit2/tests/diff/binary.c similarity index 100% rename from tests/diff/binary.c rename to deps/libgit2/tests/diff/binary.c diff --git a/tests/diff/blob.c b/deps/libgit2/tests/diff/blob.c similarity index 100% rename from tests/diff/blob.c rename to deps/libgit2/tests/diff/blob.c diff --git a/tests/diff/diff_helpers.c b/deps/libgit2/tests/diff/diff_helpers.c similarity index 100% rename from tests/diff/diff_helpers.c rename to deps/libgit2/tests/diff/diff_helpers.c diff --git a/tests/diff/diff_helpers.h b/deps/libgit2/tests/diff/diff_helpers.h similarity index 100% rename from tests/diff/diff_helpers.h rename to deps/libgit2/tests/diff/diff_helpers.h diff --git a/tests/diff/diffiter.c b/deps/libgit2/tests/diff/diffiter.c similarity index 100% rename from tests/diff/diffiter.c rename to deps/libgit2/tests/diff/diffiter.c diff --git a/tests/diff/drivers.c b/deps/libgit2/tests/diff/drivers.c similarity index 100% rename from tests/diff/drivers.c rename to deps/libgit2/tests/diff/drivers.c diff --git a/tests/diff/format_email.c b/deps/libgit2/tests/diff/format_email.c similarity index 100% rename from tests/diff/format_email.c rename to deps/libgit2/tests/diff/format_email.c diff --git a/tests/diff/index.c b/deps/libgit2/tests/diff/index.c similarity index 100% rename from tests/diff/index.c rename to deps/libgit2/tests/diff/index.c diff --git a/tests/diff/iterator.c b/deps/libgit2/tests/diff/iterator.c similarity index 100% rename from tests/diff/iterator.c rename to deps/libgit2/tests/diff/iterator.c diff --git a/tests/diff/notify.c b/deps/libgit2/tests/diff/notify.c similarity index 100% rename from tests/diff/notify.c rename to deps/libgit2/tests/diff/notify.c diff --git a/tests/diff/patch.c b/deps/libgit2/tests/diff/patch.c similarity index 100% rename from tests/diff/patch.c rename to deps/libgit2/tests/diff/patch.c diff --git a/tests/diff/pathspec.c b/deps/libgit2/tests/diff/pathspec.c similarity index 100% rename from tests/diff/pathspec.c rename to deps/libgit2/tests/diff/pathspec.c diff --git a/tests/diff/rename.c b/deps/libgit2/tests/diff/rename.c similarity index 100% rename from tests/diff/rename.c rename to deps/libgit2/tests/diff/rename.c diff --git a/tests/diff/stats.c b/deps/libgit2/tests/diff/stats.c similarity index 100% rename from tests/diff/stats.c rename to deps/libgit2/tests/diff/stats.c diff --git a/tests/diff/submodules.c b/deps/libgit2/tests/diff/submodules.c similarity index 100% rename from tests/diff/submodules.c rename to deps/libgit2/tests/diff/submodules.c diff --git a/tests/diff/tree.c b/deps/libgit2/tests/diff/tree.c similarity index 100% rename from tests/diff/tree.c rename to deps/libgit2/tests/diff/tree.c diff --git a/tests/diff/workdir.c b/deps/libgit2/tests/diff/workdir.c similarity index 100% rename from tests/diff/workdir.c rename to deps/libgit2/tests/diff/workdir.c diff --git a/tests/fetchhead/fetchhead_data.h b/deps/libgit2/tests/fetchhead/fetchhead_data.h similarity index 100% rename from tests/fetchhead/fetchhead_data.h rename to deps/libgit2/tests/fetchhead/fetchhead_data.h diff --git a/tests/fetchhead/nonetwork.c b/deps/libgit2/tests/fetchhead/nonetwork.c similarity index 100% rename from tests/fetchhead/nonetwork.c rename to deps/libgit2/tests/fetchhead/nonetwork.c diff --git a/tests/filter/blob.c b/deps/libgit2/tests/filter/blob.c similarity index 100% rename from tests/filter/blob.c rename to deps/libgit2/tests/filter/blob.c diff --git a/tests/filter/crlf.c b/deps/libgit2/tests/filter/crlf.c similarity index 100% rename from tests/filter/crlf.c rename to deps/libgit2/tests/filter/crlf.c diff --git a/tests/filter/crlf.h b/deps/libgit2/tests/filter/crlf.h similarity index 100% rename from tests/filter/crlf.h rename to deps/libgit2/tests/filter/crlf.h diff --git a/tests/filter/custom.c b/deps/libgit2/tests/filter/custom.c similarity index 100% rename from tests/filter/custom.c rename to deps/libgit2/tests/filter/custom.c diff --git a/tests/filter/ident.c b/deps/libgit2/tests/filter/ident.c similarity index 100% rename from tests/filter/ident.c rename to deps/libgit2/tests/filter/ident.c diff --git a/tests/generate.py b/deps/libgit2/tests/generate.py similarity index 100% rename from tests/generate.py rename to deps/libgit2/tests/generate.py diff --git a/tests/graph/descendant_of.c b/deps/libgit2/tests/graph/descendant_of.c similarity index 100% rename from tests/graph/descendant_of.c rename to deps/libgit2/tests/graph/descendant_of.c diff --git a/tests/index/addall.c b/deps/libgit2/tests/index/addall.c similarity index 100% rename from tests/index/addall.c rename to deps/libgit2/tests/index/addall.c diff --git a/tests/index/collision.c b/deps/libgit2/tests/index/collision.c similarity index 100% rename from tests/index/collision.c rename to deps/libgit2/tests/index/collision.c diff --git a/tests/index/conflicts.c b/deps/libgit2/tests/index/conflicts.c similarity index 100% rename from tests/index/conflicts.c rename to deps/libgit2/tests/index/conflicts.c diff --git a/tests/index/crlf.c b/deps/libgit2/tests/index/crlf.c similarity index 100% rename from tests/index/crlf.c rename to deps/libgit2/tests/index/crlf.c diff --git a/tests/index/filemodes.c b/deps/libgit2/tests/index/filemodes.c similarity index 100% rename from tests/index/filemodes.c rename to deps/libgit2/tests/index/filemodes.c diff --git a/tests/index/inmemory.c b/deps/libgit2/tests/index/inmemory.c similarity index 100% rename from tests/index/inmemory.c rename to deps/libgit2/tests/index/inmemory.c diff --git a/tests/index/names.c b/deps/libgit2/tests/index/names.c similarity index 100% rename from tests/index/names.c rename to deps/libgit2/tests/index/names.c diff --git a/tests/index/read_tree.c b/deps/libgit2/tests/index/read_tree.c similarity index 100% rename from tests/index/read_tree.c rename to deps/libgit2/tests/index/read_tree.c diff --git a/tests/index/rename.c b/deps/libgit2/tests/index/rename.c similarity index 100% rename from tests/index/rename.c rename to deps/libgit2/tests/index/rename.c diff --git a/tests/index/reuc.c b/deps/libgit2/tests/index/reuc.c similarity index 100% rename from tests/index/reuc.c rename to deps/libgit2/tests/index/reuc.c diff --git a/tests/index/stage.c b/deps/libgit2/tests/index/stage.c similarity index 100% rename from tests/index/stage.c rename to deps/libgit2/tests/index/stage.c diff --git a/tests/index/tests.c b/deps/libgit2/tests/index/tests.c similarity index 100% rename from tests/index/tests.c rename to deps/libgit2/tests/index/tests.c diff --git a/tests/main.c b/deps/libgit2/tests/main.c similarity index 100% rename from tests/main.c rename to deps/libgit2/tests/main.c diff --git a/tests/merge/files.c b/deps/libgit2/tests/merge/files.c similarity index 100% rename from tests/merge/files.c rename to deps/libgit2/tests/merge/files.c diff --git a/tests/merge/merge_helpers.c b/deps/libgit2/tests/merge/merge_helpers.c similarity index 100% rename from tests/merge/merge_helpers.c rename to deps/libgit2/tests/merge/merge_helpers.c diff --git a/tests/merge/merge_helpers.h b/deps/libgit2/tests/merge/merge_helpers.h similarity index 100% rename from tests/merge/merge_helpers.h rename to deps/libgit2/tests/merge/merge_helpers.h diff --git a/tests/merge/trees/automerge.c b/deps/libgit2/tests/merge/trees/automerge.c similarity index 100% rename from tests/merge/trees/automerge.c rename to deps/libgit2/tests/merge/trees/automerge.c diff --git a/tests/merge/trees/commits.c b/deps/libgit2/tests/merge/trees/commits.c similarity index 100% rename from tests/merge/trees/commits.c rename to deps/libgit2/tests/merge/trees/commits.c diff --git a/tests/merge/trees/modeconflict.c b/deps/libgit2/tests/merge/trees/modeconflict.c similarity index 100% rename from tests/merge/trees/modeconflict.c rename to deps/libgit2/tests/merge/trees/modeconflict.c diff --git a/tests/merge/trees/renames.c b/deps/libgit2/tests/merge/trees/renames.c similarity index 100% rename from tests/merge/trees/renames.c rename to deps/libgit2/tests/merge/trees/renames.c diff --git a/tests/merge/trees/treediff.c b/deps/libgit2/tests/merge/trees/treediff.c similarity index 100% rename from tests/merge/trees/treediff.c rename to deps/libgit2/tests/merge/trees/treediff.c diff --git a/tests/merge/trees/trivial.c b/deps/libgit2/tests/merge/trees/trivial.c similarity index 100% rename from tests/merge/trees/trivial.c rename to deps/libgit2/tests/merge/trees/trivial.c diff --git a/tests/merge/workdir/analysis.c b/deps/libgit2/tests/merge/workdir/analysis.c similarity index 100% rename from tests/merge/workdir/analysis.c rename to deps/libgit2/tests/merge/workdir/analysis.c diff --git a/tests/merge/workdir/dirty.c b/deps/libgit2/tests/merge/workdir/dirty.c similarity index 100% rename from tests/merge/workdir/dirty.c rename to deps/libgit2/tests/merge/workdir/dirty.c diff --git a/tests/merge/workdir/renames.c b/deps/libgit2/tests/merge/workdir/renames.c similarity index 100% rename from tests/merge/workdir/renames.c rename to deps/libgit2/tests/merge/workdir/renames.c diff --git a/tests/merge/workdir/setup.c b/deps/libgit2/tests/merge/workdir/setup.c similarity index 100% rename from tests/merge/workdir/setup.c rename to deps/libgit2/tests/merge/workdir/setup.c diff --git a/tests/merge/workdir/simple.c b/deps/libgit2/tests/merge/workdir/simple.c similarity index 100% rename from tests/merge/workdir/simple.c rename to deps/libgit2/tests/merge/workdir/simple.c diff --git a/tests/merge/workdir/submodules.c b/deps/libgit2/tests/merge/workdir/submodules.c similarity index 100% rename from tests/merge/workdir/submodules.c rename to deps/libgit2/tests/merge/workdir/submodules.c diff --git a/tests/merge/workdir/trivial.c b/deps/libgit2/tests/merge/workdir/trivial.c similarity index 100% rename from tests/merge/workdir/trivial.c rename to deps/libgit2/tests/merge/workdir/trivial.c diff --git a/tests/network/cred.c b/deps/libgit2/tests/network/cred.c similarity index 100% rename from tests/network/cred.c rename to deps/libgit2/tests/network/cred.c diff --git a/tests/network/fetchlocal.c b/deps/libgit2/tests/network/fetchlocal.c similarity index 100% rename from tests/network/fetchlocal.c rename to deps/libgit2/tests/network/fetchlocal.c diff --git a/tests/network/matchhost.c b/deps/libgit2/tests/network/matchhost.c similarity index 100% rename from tests/network/matchhost.c rename to deps/libgit2/tests/network/matchhost.c diff --git a/tests/network/refspecs.c b/deps/libgit2/tests/network/refspecs.c similarity index 100% rename from tests/network/refspecs.c rename to deps/libgit2/tests/network/refspecs.c diff --git a/tests/network/remote/createthenload.c b/deps/libgit2/tests/network/remote/createthenload.c similarity index 100% rename from tests/network/remote/createthenload.c rename to deps/libgit2/tests/network/remote/createthenload.c diff --git a/tests/network/remote/defaultbranch.c b/deps/libgit2/tests/network/remote/defaultbranch.c similarity index 100% rename from tests/network/remote/defaultbranch.c rename to deps/libgit2/tests/network/remote/defaultbranch.c diff --git a/tests/network/remote/delete.c b/deps/libgit2/tests/network/remote/delete.c similarity index 100% rename from tests/network/remote/delete.c rename to deps/libgit2/tests/network/remote/delete.c diff --git a/tests/network/remote/isvalidname.c b/deps/libgit2/tests/network/remote/isvalidname.c similarity index 100% rename from tests/network/remote/isvalidname.c rename to deps/libgit2/tests/network/remote/isvalidname.c diff --git a/tests/network/remote/local.c b/deps/libgit2/tests/network/remote/local.c similarity index 100% rename from tests/network/remote/local.c rename to deps/libgit2/tests/network/remote/local.c diff --git a/tests/network/remote/remotes.c b/deps/libgit2/tests/network/remote/remotes.c similarity index 100% rename from tests/network/remote/remotes.c rename to deps/libgit2/tests/network/remote/remotes.c diff --git a/tests/network/remote/rename.c b/deps/libgit2/tests/network/remote/rename.c similarity index 100% rename from tests/network/remote/rename.c rename to deps/libgit2/tests/network/remote/rename.c diff --git a/tests/network/urlparse.c b/deps/libgit2/tests/network/urlparse.c similarity index 100% rename from tests/network/urlparse.c rename to deps/libgit2/tests/network/urlparse.c diff --git a/tests/notes/notes.c b/deps/libgit2/tests/notes/notes.c similarity index 100% rename from tests/notes/notes.c rename to deps/libgit2/tests/notes/notes.c diff --git a/tests/notes/notesref.c b/deps/libgit2/tests/notes/notesref.c similarity index 100% rename from tests/notes/notesref.c rename to deps/libgit2/tests/notes/notesref.c diff --git a/tests/object/blob/filter.c b/deps/libgit2/tests/object/blob/filter.c similarity index 100% rename from tests/object/blob/filter.c rename to deps/libgit2/tests/object/blob/filter.c diff --git a/tests/object/blob/fromchunks.c b/deps/libgit2/tests/object/blob/fromchunks.c similarity index 100% rename from tests/object/blob/fromchunks.c rename to deps/libgit2/tests/object/blob/fromchunks.c diff --git a/tests/object/blob/write.c b/deps/libgit2/tests/object/blob/write.c similarity index 100% rename from tests/object/blob/write.c rename to deps/libgit2/tests/object/blob/write.c diff --git a/tests/object/cache.c b/deps/libgit2/tests/object/cache.c similarity index 100% rename from tests/object/cache.c rename to deps/libgit2/tests/object/cache.c diff --git a/tests/object/commit/commitstagedfile.c b/deps/libgit2/tests/object/commit/commitstagedfile.c similarity index 100% rename from tests/object/commit/commitstagedfile.c rename to deps/libgit2/tests/object/commit/commitstagedfile.c diff --git a/tests/object/lookup.c b/deps/libgit2/tests/object/lookup.c similarity index 100% rename from tests/object/lookup.c rename to deps/libgit2/tests/object/lookup.c diff --git a/tests/object/lookupbypath.c b/deps/libgit2/tests/object/lookupbypath.c similarity index 100% rename from tests/object/lookupbypath.c rename to deps/libgit2/tests/object/lookupbypath.c diff --git a/tests/object/message.c b/deps/libgit2/tests/object/message.c similarity index 100% rename from tests/object/message.c rename to deps/libgit2/tests/object/message.c diff --git a/tests/object/peel.c b/deps/libgit2/tests/object/peel.c similarity index 100% rename from tests/object/peel.c rename to deps/libgit2/tests/object/peel.c diff --git a/tests/object/raw/chars.c b/deps/libgit2/tests/object/raw/chars.c similarity index 100% rename from tests/object/raw/chars.c rename to deps/libgit2/tests/object/raw/chars.c diff --git a/tests/object/raw/compare.c b/deps/libgit2/tests/object/raw/compare.c similarity index 100% rename from tests/object/raw/compare.c rename to deps/libgit2/tests/object/raw/compare.c diff --git a/tests/object/raw/convert.c b/deps/libgit2/tests/object/raw/convert.c similarity index 100% rename from tests/object/raw/convert.c rename to deps/libgit2/tests/object/raw/convert.c diff --git a/tests/object/raw/data.h b/deps/libgit2/tests/object/raw/data.h similarity index 100% rename from tests/object/raw/data.h rename to deps/libgit2/tests/object/raw/data.h diff --git a/tests/object/raw/fromstr.c b/deps/libgit2/tests/object/raw/fromstr.c similarity index 100% rename from tests/object/raw/fromstr.c rename to deps/libgit2/tests/object/raw/fromstr.c diff --git a/tests/object/raw/hash.c b/deps/libgit2/tests/object/raw/hash.c similarity index 100% rename from tests/object/raw/hash.c rename to deps/libgit2/tests/object/raw/hash.c diff --git a/tests/object/raw/short.c b/deps/libgit2/tests/object/raw/short.c similarity index 100% rename from tests/object/raw/short.c rename to deps/libgit2/tests/object/raw/short.c diff --git a/tests/object/raw/size.c b/deps/libgit2/tests/object/raw/size.c similarity index 100% rename from tests/object/raw/size.c rename to deps/libgit2/tests/object/raw/size.c diff --git a/tests/object/raw/type2string.c b/deps/libgit2/tests/object/raw/type2string.c similarity index 100% rename from tests/object/raw/type2string.c rename to deps/libgit2/tests/object/raw/type2string.c diff --git a/tests/object/raw/write.c b/deps/libgit2/tests/object/raw/write.c similarity index 100% rename from tests/object/raw/write.c rename to deps/libgit2/tests/object/raw/write.c diff --git a/tests/object/shortid.c b/deps/libgit2/tests/object/shortid.c similarity index 100% rename from tests/object/shortid.c rename to deps/libgit2/tests/object/shortid.c diff --git a/tests/object/tag/list.c b/deps/libgit2/tests/object/tag/list.c similarity index 100% rename from tests/object/tag/list.c rename to deps/libgit2/tests/object/tag/list.c diff --git a/tests/object/tag/peel.c b/deps/libgit2/tests/object/tag/peel.c similarity index 100% rename from tests/object/tag/peel.c rename to deps/libgit2/tests/object/tag/peel.c diff --git a/tests/object/tag/read.c b/deps/libgit2/tests/object/tag/read.c similarity index 100% rename from tests/object/tag/read.c rename to deps/libgit2/tests/object/tag/read.c diff --git a/tests/object/tag/write.c b/deps/libgit2/tests/object/tag/write.c similarity index 100% rename from tests/object/tag/write.c rename to deps/libgit2/tests/object/tag/write.c diff --git a/tests/object/tree/attributes.c b/deps/libgit2/tests/object/tree/attributes.c similarity index 100% rename from tests/object/tree/attributes.c rename to deps/libgit2/tests/object/tree/attributes.c diff --git a/tests/object/tree/duplicateentries.c b/deps/libgit2/tests/object/tree/duplicateentries.c similarity index 100% rename from tests/object/tree/duplicateentries.c rename to deps/libgit2/tests/object/tree/duplicateentries.c diff --git a/tests/object/tree/frompath.c b/deps/libgit2/tests/object/tree/frompath.c similarity index 100% rename from tests/object/tree/frompath.c rename to deps/libgit2/tests/object/tree/frompath.c diff --git a/tests/object/tree/read.c b/deps/libgit2/tests/object/tree/read.c similarity index 100% rename from tests/object/tree/read.c rename to deps/libgit2/tests/object/tree/read.c diff --git a/tests/object/tree/walk.c b/deps/libgit2/tests/object/tree/walk.c similarity index 100% rename from tests/object/tree/walk.c rename to deps/libgit2/tests/object/tree/walk.c diff --git a/tests/object/tree/write.c b/deps/libgit2/tests/object/tree/write.c similarity index 100% rename from tests/object/tree/write.c rename to deps/libgit2/tests/object/tree/write.c diff --git a/tests/odb/alternates.c b/deps/libgit2/tests/odb/alternates.c similarity index 100% rename from tests/odb/alternates.c rename to deps/libgit2/tests/odb/alternates.c diff --git a/tests/odb/backend/nobackend.c b/deps/libgit2/tests/odb/backend/nobackend.c similarity index 100% rename from tests/odb/backend/nobackend.c rename to deps/libgit2/tests/odb/backend/nobackend.c diff --git a/tests/odb/backend/nonrefreshing.c b/deps/libgit2/tests/odb/backend/nonrefreshing.c similarity index 100% rename from tests/odb/backend/nonrefreshing.c rename to deps/libgit2/tests/odb/backend/nonrefreshing.c diff --git a/tests/odb/foreach.c b/deps/libgit2/tests/odb/foreach.c similarity index 100% rename from tests/odb/foreach.c rename to deps/libgit2/tests/odb/foreach.c diff --git a/tests/odb/loose.c b/deps/libgit2/tests/odb/loose.c similarity index 100% rename from tests/odb/loose.c rename to deps/libgit2/tests/odb/loose.c diff --git a/tests/odb/loose_data.h b/deps/libgit2/tests/odb/loose_data.h similarity index 100% rename from tests/odb/loose_data.h rename to deps/libgit2/tests/odb/loose_data.h diff --git a/tests/odb/mixed.c b/deps/libgit2/tests/odb/mixed.c similarity index 100% rename from tests/odb/mixed.c rename to deps/libgit2/tests/odb/mixed.c diff --git a/tests/odb/pack_data.h b/deps/libgit2/tests/odb/pack_data.h similarity index 100% rename from tests/odb/pack_data.h rename to deps/libgit2/tests/odb/pack_data.h diff --git a/tests/odb/pack_data_one.h b/deps/libgit2/tests/odb/pack_data_one.h similarity index 100% rename from tests/odb/pack_data_one.h rename to deps/libgit2/tests/odb/pack_data_one.h diff --git a/tests/odb/packed.c b/deps/libgit2/tests/odb/packed.c similarity index 100% rename from tests/odb/packed.c rename to deps/libgit2/tests/odb/packed.c diff --git a/tests/odb/packed_one.c b/deps/libgit2/tests/odb/packed_one.c similarity index 100% rename from tests/odb/packed_one.c rename to deps/libgit2/tests/odb/packed_one.c diff --git a/tests/odb/sorting.c b/deps/libgit2/tests/odb/sorting.c similarity index 100% rename from tests/odb/sorting.c rename to deps/libgit2/tests/odb/sorting.c diff --git a/tests/odb/streamwrite.c b/deps/libgit2/tests/odb/streamwrite.c similarity index 100% rename from tests/odb/streamwrite.c rename to deps/libgit2/tests/odb/streamwrite.c diff --git a/tests/online/clone.c b/deps/libgit2/tests/online/clone.c similarity index 100% rename from tests/online/clone.c rename to deps/libgit2/tests/online/clone.c diff --git a/tests/online/fetch.c b/deps/libgit2/tests/online/fetch.c similarity index 100% rename from tests/online/fetch.c rename to deps/libgit2/tests/online/fetch.c diff --git a/tests/online/fetchhead.c b/deps/libgit2/tests/online/fetchhead.c similarity index 100% rename from tests/online/fetchhead.c rename to deps/libgit2/tests/online/fetchhead.c diff --git a/tests/online/push.c b/deps/libgit2/tests/online/push.c similarity index 100% rename from tests/online/push.c rename to deps/libgit2/tests/online/push.c diff --git a/tests/online/push_util.c b/deps/libgit2/tests/online/push_util.c similarity index 100% rename from tests/online/push_util.c rename to deps/libgit2/tests/online/push_util.c diff --git a/tests/online/push_util.h b/deps/libgit2/tests/online/push_util.h similarity index 100% rename from tests/online/push_util.h rename to deps/libgit2/tests/online/push_util.h diff --git a/tests/pack/indexer.c b/deps/libgit2/tests/pack/indexer.c similarity index 100% rename from tests/pack/indexer.c rename to deps/libgit2/tests/pack/indexer.c diff --git a/tests/pack/packbuilder.c b/deps/libgit2/tests/pack/packbuilder.c similarity index 100% rename from tests/pack/packbuilder.c rename to deps/libgit2/tests/pack/packbuilder.c diff --git a/tests/pack/sharing.c b/deps/libgit2/tests/pack/sharing.c similarity index 100% rename from tests/pack/sharing.c rename to deps/libgit2/tests/pack/sharing.c diff --git a/tests/refs/branches/create.c b/deps/libgit2/tests/refs/branches/create.c similarity index 100% rename from tests/refs/branches/create.c rename to deps/libgit2/tests/refs/branches/create.c diff --git a/tests/refs/branches/delete.c b/deps/libgit2/tests/refs/branches/delete.c similarity index 100% rename from tests/refs/branches/delete.c rename to deps/libgit2/tests/refs/branches/delete.c diff --git a/tests/refs/branches/ishead.c b/deps/libgit2/tests/refs/branches/ishead.c similarity index 100% rename from tests/refs/branches/ishead.c rename to deps/libgit2/tests/refs/branches/ishead.c diff --git a/tests/refs/branches/iterator.c b/deps/libgit2/tests/refs/branches/iterator.c similarity index 100% rename from tests/refs/branches/iterator.c rename to deps/libgit2/tests/refs/branches/iterator.c diff --git a/tests/refs/branches/lookup.c b/deps/libgit2/tests/refs/branches/lookup.c similarity index 100% rename from tests/refs/branches/lookup.c rename to deps/libgit2/tests/refs/branches/lookup.c diff --git a/tests/refs/branches/move.c b/deps/libgit2/tests/refs/branches/move.c similarity index 100% rename from tests/refs/branches/move.c rename to deps/libgit2/tests/refs/branches/move.c diff --git a/tests/refs/branches/name.c b/deps/libgit2/tests/refs/branches/name.c similarity index 100% rename from tests/refs/branches/name.c rename to deps/libgit2/tests/refs/branches/name.c diff --git a/tests/refs/branches/remote.c b/deps/libgit2/tests/refs/branches/remote.c similarity index 100% rename from tests/refs/branches/remote.c rename to deps/libgit2/tests/refs/branches/remote.c diff --git a/tests/refs/branches/upstream.c b/deps/libgit2/tests/refs/branches/upstream.c similarity index 100% rename from tests/refs/branches/upstream.c rename to deps/libgit2/tests/refs/branches/upstream.c diff --git a/tests/refs/branches/upstreamname.c b/deps/libgit2/tests/refs/branches/upstreamname.c similarity index 100% rename from tests/refs/branches/upstreamname.c rename to deps/libgit2/tests/refs/branches/upstreamname.c diff --git a/tests/refs/crashes.c b/deps/libgit2/tests/refs/crashes.c similarity index 100% rename from tests/refs/crashes.c rename to deps/libgit2/tests/refs/crashes.c diff --git a/tests/refs/create.c b/deps/libgit2/tests/refs/create.c similarity index 100% rename from tests/refs/create.c rename to deps/libgit2/tests/refs/create.c diff --git a/tests/refs/createwithlog.c b/deps/libgit2/tests/refs/createwithlog.c similarity index 100% rename from tests/refs/createwithlog.c rename to deps/libgit2/tests/refs/createwithlog.c diff --git a/tests/refs/delete.c b/deps/libgit2/tests/refs/delete.c similarity index 100% rename from tests/refs/delete.c rename to deps/libgit2/tests/refs/delete.c diff --git a/tests/refs/foreachglob.c b/deps/libgit2/tests/refs/foreachglob.c similarity index 100% rename from tests/refs/foreachglob.c rename to deps/libgit2/tests/refs/foreachglob.c diff --git a/tests/refs/isvalidname.c b/deps/libgit2/tests/refs/isvalidname.c similarity index 100% rename from tests/refs/isvalidname.c rename to deps/libgit2/tests/refs/isvalidname.c diff --git a/tests/refs/iterator.c b/deps/libgit2/tests/refs/iterator.c similarity index 100% rename from tests/refs/iterator.c rename to deps/libgit2/tests/refs/iterator.c diff --git a/tests/refs/list.c b/deps/libgit2/tests/refs/list.c similarity index 100% rename from tests/refs/list.c rename to deps/libgit2/tests/refs/list.c diff --git a/tests/refs/listall.c b/deps/libgit2/tests/refs/listall.c similarity index 100% rename from tests/refs/listall.c rename to deps/libgit2/tests/refs/listall.c diff --git a/tests/refs/lookup.c b/deps/libgit2/tests/refs/lookup.c similarity index 100% rename from tests/refs/lookup.c rename to deps/libgit2/tests/refs/lookup.c diff --git a/tests/refs/normalize.c b/deps/libgit2/tests/refs/normalize.c similarity index 100% rename from tests/refs/normalize.c rename to deps/libgit2/tests/refs/normalize.c diff --git a/tests/refs/overwrite.c b/deps/libgit2/tests/refs/overwrite.c similarity index 100% rename from tests/refs/overwrite.c rename to deps/libgit2/tests/refs/overwrite.c diff --git a/tests/refs/pack.c b/deps/libgit2/tests/refs/pack.c similarity index 100% rename from tests/refs/pack.c rename to deps/libgit2/tests/refs/pack.c diff --git a/tests/refs/peel.c b/deps/libgit2/tests/refs/peel.c similarity index 100% rename from tests/refs/peel.c rename to deps/libgit2/tests/refs/peel.c diff --git a/tests/refs/races.c b/deps/libgit2/tests/refs/races.c similarity index 100% rename from tests/refs/races.c rename to deps/libgit2/tests/refs/races.c diff --git a/tests/refs/read.c b/deps/libgit2/tests/refs/read.c similarity index 100% rename from tests/refs/read.c rename to deps/libgit2/tests/refs/read.c diff --git a/tests/refs/ref_helpers.c b/deps/libgit2/tests/refs/ref_helpers.c similarity index 100% rename from tests/refs/ref_helpers.c rename to deps/libgit2/tests/refs/ref_helpers.c diff --git a/tests/refs/ref_helpers.h b/deps/libgit2/tests/refs/ref_helpers.h similarity index 100% rename from tests/refs/ref_helpers.h rename to deps/libgit2/tests/refs/ref_helpers.h diff --git a/tests/refs/reflog/drop.c b/deps/libgit2/tests/refs/reflog/drop.c similarity index 100% rename from tests/refs/reflog/drop.c rename to deps/libgit2/tests/refs/reflog/drop.c diff --git a/tests/refs/reflog/reflog.c b/deps/libgit2/tests/refs/reflog/reflog.c similarity index 100% rename from tests/refs/reflog/reflog.c rename to deps/libgit2/tests/refs/reflog/reflog.c diff --git a/tests/refs/rename.c b/deps/libgit2/tests/refs/rename.c similarity index 100% rename from tests/refs/rename.c rename to deps/libgit2/tests/refs/rename.c diff --git a/tests/refs/revparse.c b/deps/libgit2/tests/refs/revparse.c similarity index 100% rename from tests/refs/revparse.c rename to deps/libgit2/tests/refs/revparse.c diff --git a/tests/refs/settargetwithlog.c b/deps/libgit2/tests/refs/settargetwithlog.c similarity index 100% rename from tests/refs/settargetwithlog.c rename to deps/libgit2/tests/refs/settargetwithlog.c diff --git a/tests/refs/setter.c b/deps/libgit2/tests/refs/setter.c similarity index 100% rename from tests/refs/setter.c rename to deps/libgit2/tests/refs/setter.c diff --git a/tests/refs/shorthand.c b/deps/libgit2/tests/refs/shorthand.c similarity index 100% rename from tests/refs/shorthand.c rename to deps/libgit2/tests/refs/shorthand.c diff --git a/tests/refs/unicode.c b/deps/libgit2/tests/refs/unicode.c similarity index 100% rename from tests/refs/unicode.c rename to deps/libgit2/tests/refs/unicode.c diff --git a/tests/refs/update.c b/deps/libgit2/tests/refs/update.c similarity index 100% rename from tests/refs/update.c rename to deps/libgit2/tests/refs/update.c diff --git a/tests/repo/config.c b/deps/libgit2/tests/repo/config.c similarity index 100% rename from tests/repo/config.c rename to deps/libgit2/tests/repo/config.c diff --git a/tests/repo/discover.c b/deps/libgit2/tests/repo/discover.c similarity index 100% rename from tests/repo/discover.c rename to deps/libgit2/tests/repo/discover.c diff --git a/tests/repo/getters.c b/deps/libgit2/tests/repo/getters.c similarity index 100% rename from tests/repo/getters.c rename to deps/libgit2/tests/repo/getters.c diff --git a/tests/repo/hashfile.c b/deps/libgit2/tests/repo/hashfile.c similarity index 100% rename from tests/repo/hashfile.c rename to deps/libgit2/tests/repo/hashfile.c diff --git a/tests/repo/head.c b/deps/libgit2/tests/repo/head.c similarity index 100% rename from tests/repo/head.c rename to deps/libgit2/tests/repo/head.c diff --git a/tests/repo/headtree.c b/deps/libgit2/tests/repo/headtree.c similarity index 100% rename from tests/repo/headtree.c rename to deps/libgit2/tests/repo/headtree.c diff --git a/tests/repo/init.c b/deps/libgit2/tests/repo/init.c similarity index 100% rename from tests/repo/init.c rename to deps/libgit2/tests/repo/init.c diff --git a/tests/repo/iterator.c b/deps/libgit2/tests/repo/iterator.c similarity index 100% rename from tests/repo/iterator.c rename to deps/libgit2/tests/repo/iterator.c diff --git a/tests/repo/message.c b/deps/libgit2/tests/repo/message.c similarity index 100% rename from tests/repo/message.c rename to deps/libgit2/tests/repo/message.c diff --git a/tests/repo/open.c b/deps/libgit2/tests/repo/open.c similarity index 100% rename from tests/repo/open.c rename to deps/libgit2/tests/repo/open.c diff --git a/tests/repo/pathspec.c b/deps/libgit2/tests/repo/pathspec.c similarity index 100% rename from tests/repo/pathspec.c rename to deps/libgit2/tests/repo/pathspec.c diff --git a/tests/repo/repo_helpers.c b/deps/libgit2/tests/repo/repo_helpers.c similarity index 100% rename from tests/repo/repo_helpers.c rename to deps/libgit2/tests/repo/repo_helpers.c diff --git a/tests/repo/repo_helpers.h b/deps/libgit2/tests/repo/repo_helpers.h similarity index 100% rename from tests/repo/repo_helpers.h rename to deps/libgit2/tests/repo/repo_helpers.h diff --git a/tests/repo/setters.c b/deps/libgit2/tests/repo/setters.c similarity index 100% rename from tests/repo/setters.c rename to deps/libgit2/tests/repo/setters.c diff --git a/tests/repo/shallow.c b/deps/libgit2/tests/repo/shallow.c similarity index 100% rename from tests/repo/shallow.c rename to deps/libgit2/tests/repo/shallow.c diff --git a/tests/repo/state.c b/deps/libgit2/tests/repo/state.c similarity index 100% rename from tests/repo/state.c rename to deps/libgit2/tests/repo/state.c diff --git a/tests/reset/default.c b/deps/libgit2/tests/reset/default.c similarity index 100% rename from tests/reset/default.c rename to deps/libgit2/tests/reset/default.c diff --git a/tests/reset/hard.c b/deps/libgit2/tests/reset/hard.c similarity index 100% rename from tests/reset/hard.c rename to deps/libgit2/tests/reset/hard.c diff --git a/tests/reset/mixed.c b/deps/libgit2/tests/reset/mixed.c similarity index 100% rename from tests/reset/mixed.c rename to deps/libgit2/tests/reset/mixed.c diff --git a/tests/reset/reset_helpers.c b/deps/libgit2/tests/reset/reset_helpers.c similarity index 100% rename from tests/reset/reset_helpers.c rename to deps/libgit2/tests/reset/reset_helpers.c diff --git a/tests/reset/reset_helpers.h b/deps/libgit2/tests/reset/reset_helpers.h similarity index 100% rename from tests/reset/reset_helpers.h rename to deps/libgit2/tests/reset/reset_helpers.h diff --git a/tests/reset/soft.c b/deps/libgit2/tests/reset/soft.c similarity index 100% rename from tests/reset/soft.c rename to deps/libgit2/tests/reset/soft.c diff --git a/tests/resources/.gitattributes b/deps/libgit2/tests/resources/.gitattributes similarity index 100% rename from tests/resources/.gitattributes rename to deps/libgit2/tests/resources/.gitattributes diff --git a/tests/resources/.gitignore b/deps/libgit2/tests/resources/.gitignore similarity index 100% rename from tests/resources/.gitignore rename to deps/libgit2/tests/resources/.gitignore diff --git a/tests/resources/attr/.gitted/HEAD b/deps/libgit2/tests/resources/attr/.gitted/HEAD similarity index 100% rename from tests/resources/attr/.gitted/HEAD rename to deps/libgit2/tests/resources/attr/.gitted/HEAD diff --git a/tests/resources/attr/.gitted/config b/deps/libgit2/tests/resources/attr/.gitted/config similarity index 100% rename from tests/resources/attr/.gitted/config rename to deps/libgit2/tests/resources/attr/.gitted/config diff --git a/tests/resources/attr/.gitted/description b/deps/libgit2/tests/resources/attr/.gitted/description similarity index 100% rename from tests/resources/attr/.gitted/description rename to deps/libgit2/tests/resources/attr/.gitted/description diff --git a/tests/resources/attr/.gitted/index b/deps/libgit2/tests/resources/attr/.gitted/index similarity index 100% rename from tests/resources/attr/.gitted/index rename to deps/libgit2/tests/resources/attr/.gitted/index diff --git a/tests/resources/attr/.gitted/info/attributes b/deps/libgit2/tests/resources/attr/.gitted/info/attributes similarity index 100% rename from tests/resources/attr/.gitted/info/attributes rename to deps/libgit2/tests/resources/attr/.gitted/info/attributes diff --git a/tests/resources/attr/.gitted/info/exclude b/deps/libgit2/tests/resources/attr/.gitted/info/exclude similarity index 100% rename from tests/resources/attr/.gitted/info/exclude rename to deps/libgit2/tests/resources/attr/.gitted/info/exclude diff --git a/tests/resources/attr/.gitted/logs/HEAD b/deps/libgit2/tests/resources/attr/.gitted/logs/HEAD similarity index 100% rename from tests/resources/attr/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/attr/.gitted/logs/HEAD diff --git a/tests/resources/attr/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/attr/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/attr/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/attr/.gitted/logs/refs/heads/master diff --git a/tests/resources/attr/.gitted/objects/10/8bb4e7fd7b16490dc33ff7d972151e73d7166e b/deps/libgit2/tests/resources/attr/.gitted/objects/10/8bb4e7fd7b16490dc33ff7d972151e73d7166e similarity index 100% rename from tests/resources/attr/.gitted/objects/10/8bb4e7fd7b16490dc33ff7d972151e73d7166e rename to deps/libgit2/tests/resources/attr/.gitted/objects/10/8bb4e7fd7b16490dc33ff7d972151e73d7166e diff --git a/tests/resources/attr/.gitted/objects/16/983da6643656bb44c43965ecb6855c6d574512 b/deps/libgit2/tests/resources/attr/.gitted/objects/16/983da6643656bb44c43965ecb6855c6d574512 similarity index 100% rename from tests/resources/attr/.gitted/objects/16/983da6643656bb44c43965ecb6855c6d574512 rename to deps/libgit2/tests/resources/attr/.gitted/objects/16/983da6643656bb44c43965ecb6855c6d574512 diff --git a/tests/resources/attr/.gitted/objects/21/7878ab49e1314388ea2e32dc6fdb58a1b969e0 b/deps/libgit2/tests/resources/attr/.gitted/objects/21/7878ab49e1314388ea2e32dc6fdb58a1b969e0 similarity index 100% rename from tests/resources/attr/.gitted/objects/21/7878ab49e1314388ea2e32dc6fdb58a1b969e0 rename to deps/libgit2/tests/resources/attr/.gitted/objects/21/7878ab49e1314388ea2e32dc6fdb58a1b969e0 diff --git a/tests/resources/attr/.gitted/objects/24/fa9a9fc4e202313e24b648087495441dab432b b/deps/libgit2/tests/resources/attr/.gitted/objects/24/fa9a9fc4e202313e24b648087495441dab432b similarity index 100% rename from tests/resources/attr/.gitted/objects/24/fa9a9fc4e202313e24b648087495441dab432b rename to deps/libgit2/tests/resources/attr/.gitted/objects/24/fa9a9fc4e202313e24b648087495441dab432b diff --git a/tests/resources/attr/.gitted/objects/29/29de282ce999e95183aedac6451d3384559c4b b/deps/libgit2/tests/resources/attr/.gitted/objects/29/29de282ce999e95183aedac6451d3384559c4b similarity index 100% rename from tests/resources/attr/.gitted/objects/29/29de282ce999e95183aedac6451d3384559c4b rename to deps/libgit2/tests/resources/attr/.gitted/objects/29/29de282ce999e95183aedac6451d3384559c4b diff --git a/tests/resources/attr/.gitted/objects/2b/40c5aca159b04ea8d20ffe36cdf8b09369b14a b/deps/libgit2/tests/resources/attr/.gitted/objects/2b/40c5aca159b04ea8d20ffe36cdf8b09369b14a similarity index 100% rename from tests/resources/attr/.gitted/objects/2b/40c5aca159b04ea8d20ffe36cdf8b09369b14a rename to deps/libgit2/tests/resources/attr/.gitted/objects/2b/40c5aca159b04ea8d20ffe36cdf8b09369b14a diff --git a/tests/resources/attr/.gitted/objects/2c/66e14f77196ea763fb1e41612c1aa2bc2d8ed2 b/deps/libgit2/tests/resources/attr/.gitted/objects/2c/66e14f77196ea763fb1e41612c1aa2bc2d8ed2 similarity index 100% rename from tests/resources/attr/.gitted/objects/2c/66e14f77196ea763fb1e41612c1aa2bc2d8ed2 rename to deps/libgit2/tests/resources/attr/.gitted/objects/2c/66e14f77196ea763fb1e41612c1aa2bc2d8ed2 diff --git a/tests/resources/attr/.gitted/objects/2d/e7dfe3588f3c7e9ad59e7d50ba90e3329df9d9 b/deps/libgit2/tests/resources/attr/.gitted/objects/2d/e7dfe3588f3c7e9ad59e7d50ba90e3329df9d9 similarity index 100% rename from tests/resources/attr/.gitted/objects/2d/e7dfe3588f3c7e9ad59e7d50ba90e3329df9d9 rename to deps/libgit2/tests/resources/attr/.gitted/objects/2d/e7dfe3588f3c7e9ad59e7d50ba90e3329df9d9 diff --git a/tests/resources/attr/.gitted/objects/37/0fe9ec224ce33e71f9e5ec2bd1142ce9937a6a b/deps/libgit2/tests/resources/attr/.gitted/objects/37/0fe9ec224ce33e71f9e5ec2bd1142ce9937a6a similarity index 100% rename from tests/resources/attr/.gitted/objects/37/0fe9ec224ce33e71f9e5ec2bd1142ce9937a6a rename to deps/libgit2/tests/resources/attr/.gitted/objects/37/0fe9ec224ce33e71f9e5ec2bd1142ce9937a6a diff --git a/tests/resources/attr/.gitted/objects/3a/6df026462ebafe455af9867d27eda20a9e0974 b/deps/libgit2/tests/resources/attr/.gitted/objects/3a/6df026462ebafe455af9867d27eda20a9e0974 similarity index 100% rename from tests/resources/attr/.gitted/objects/3a/6df026462ebafe455af9867d27eda20a9e0974 rename to deps/libgit2/tests/resources/attr/.gitted/objects/3a/6df026462ebafe455af9867d27eda20a9e0974 diff --git a/tests/resources/attr/.gitted/objects/3b/74db7ab381105dc0d28f8295a77f6a82989292 b/deps/libgit2/tests/resources/attr/.gitted/objects/3b/74db7ab381105dc0d28f8295a77f6a82989292 similarity index 100% rename from tests/resources/attr/.gitted/objects/3b/74db7ab381105dc0d28f8295a77f6a82989292 rename to deps/libgit2/tests/resources/attr/.gitted/objects/3b/74db7ab381105dc0d28f8295a77f6a82989292 diff --git a/tests/resources/attr/.gitted/objects/3e/42ffc54a663f9401cc25843d6c0e71a33e4249 b/deps/libgit2/tests/resources/attr/.gitted/objects/3e/42ffc54a663f9401cc25843d6c0e71a33e4249 similarity index 100% rename from tests/resources/attr/.gitted/objects/3e/42ffc54a663f9401cc25843d6c0e71a33e4249 rename to deps/libgit2/tests/resources/attr/.gitted/objects/3e/42ffc54a663f9401cc25843d6c0e71a33e4249 diff --git a/tests/resources/attr/.gitted/objects/45/141a79a77842c59a63229403220a4e4be74e3d b/deps/libgit2/tests/resources/attr/.gitted/objects/45/141a79a77842c59a63229403220a4e4be74e3d similarity index 100% rename from tests/resources/attr/.gitted/objects/45/141a79a77842c59a63229403220a4e4be74e3d rename to deps/libgit2/tests/resources/attr/.gitted/objects/45/141a79a77842c59a63229403220a4e4be74e3d diff --git a/tests/resources/attr/.gitted/objects/45/5a314fa848d52ae1f11d254da4f60858fc97f4 b/deps/libgit2/tests/resources/attr/.gitted/objects/45/5a314fa848d52ae1f11d254da4f60858fc97f4 similarity index 100% rename from tests/resources/attr/.gitted/objects/45/5a314fa848d52ae1f11d254da4f60858fc97f4 rename to deps/libgit2/tests/resources/attr/.gitted/objects/45/5a314fa848d52ae1f11d254da4f60858fc97f4 diff --git a/tests/resources/attr/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/attr/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/attr/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/attr/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/attr/.gitted/objects/4d/713dc48e6b1bd75b0d61ad078ba9ca3a56745d b/deps/libgit2/tests/resources/attr/.gitted/objects/4d/713dc48e6b1bd75b0d61ad078ba9ca3a56745d similarity index 100% rename from tests/resources/attr/.gitted/objects/4d/713dc48e6b1bd75b0d61ad078ba9ca3a56745d rename to deps/libgit2/tests/resources/attr/.gitted/objects/4d/713dc48e6b1bd75b0d61ad078ba9ca3a56745d diff --git a/tests/resources/attr/.gitted/objects/4e/49ba8c5b6c32ff28cd9dcb60be34df50fcc485 b/deps/libgit2/tests/resources/attr/.gitted/objects/4e/49ba8c5b6c32ff28cd9dcb60be34df50fcc485 similarity index 100% rename from tests/resources/attr/.gitted/objects/4e/49ba8c5b6c32ff28cd9dcb60be34df50fcc485 rename to deps/libgit2/tests/resources/attr/.gitted/objects/4e/49ba8c5b6c32ff28cd9dcb60be34df50fcc485 diff --git a/tests/resources/attr/.gitted/objects/55/6f8c827b8e4a02ad5cab77dca2bcb3e226b0b3 b/deps/libgit2/tests/resources/attr/.gitted/objects/55/6f8c827b8e4a02ad5cab77dca2bcb3e226b0b3 similarity index 100% rename from tests/resources/attr/.gitted/objects/55/6f8c827b8e4a02ad5cab77dca2bcb3e226b0b3 rename to deps/libgit2/tests/resources/attr/.gitted/objects/55/6f8c827b8e4a02ad5cab77dca2bcb3e226b0b3 diff --git a/tests/resources/attr/.gitted/objects/58/19a185d77b03325aaf87cafc771db36f6ddca7 b/deps/libgit2/tests/resources/attr/.gitted/objects/58/19a185d77b03325aaf87cafc771db36f6ddca7 similarity index 100% rename from tests/resources/attr/.gitted/objects/58/19a185d77b03325aaf87cafc771db36f6ddca7 rename to deps/libgit2/tests/resources/attr/.gitted/objects/58/19a185d77b03325aaf87cafc771db36f6ddca7 diff --git a/tests/resources/attr/.gitted/objects/60/5812ab7fe421fdd325a935d35cb06a9234a7d7 b/deps/libgit2/tests/resources/attr/.gitted/objects/60/5812ab7fe421fdd325a935d35cb06a9234a7d7 similarity index 100% rename from tests/resources/attr/.gitted/objects/60/5812ab7fe421fdd325a935d35cb06a9234a7d7 rename to deps/libgit2/tests/resources/attr/.gitted/objects/60/5812ab7fe421fdd325a935d35cb06a9234a7d7 diff --git a/tests/resources/attr/.gitted/objects/6b/ab5c79cd5140d0f800917f550eb2a3dc32b0da b/deps/libgit2/tests/resources/attr/.gitted/objects/6b/ab5c79cd5140d0f800917f550eb2a3dc32b0da similarity index 100% rename from tests/resources/attr/.gitted/objects/6b/ab5c79cd5140d0f800917f550eb2a3dc32b0da rename to deps/libgit2/tests/resources/attr/.gitted/objects/6b/ab5c79cd5140d0f800917f550eb2a3dc32b0da diff --git a/tests/resources/attr/.gitted/objects/6d/968d62c89c7d9ea23a4c9a7b665d017c3d8ffd b/deps/libgit2/tests/resources/attr/.gitted/objects/6d/968d62c89c7d9ea23a4c9a7b665d017c3d8ffd similarity index 100% rename from tests/resources/attr/.gitted/objects/6d/968d62c89c7d9ea23a4c9a7b665d017c3d8ffd rename to deps/libgit2/tests/resources/attr/.gitted/objects/6d/968d62c89c7d9ea23a4c9a7b665d017c3d8ffd diff --git a/tests/resources/attr/.gitted/objects/71/7fc31f6b84f9d6fc3a4edbca259d7fc92beee2 b/deps/libgit2/tests/resources/attr/.gitted/objects/71/7fc31f6b84f9d6fc3a4edbca259d7fc92beee2 similarity index 100% rename from tests/resources/attr/.gitted/objects/71/7fc31f6b84f9d6fc3a4edbca259d7fc92beee2 rename to deps/libgit2/tests/resources/attr/.gitted/objects/71/7fc31f6b84f9d6fc3a4edbca259d7fc92beee2 diff --git a/tests/resources/attr/.gitted/objects/8d/0b9df9bd30be7910ddda60548d485bc302b911 b/deps/libgit2/tests/resources/attr/.gitted/objects/8d/0b9df9bd30be7910ddda60548d485bc302b911 similarity index 100% rename from tests/resources/attr/.gitted/objects/8d/0b9df9bd30be7910ddda60548d485bc302b911 rename to deps/libgit2/tests/resources/attr/.gitted/objects/8d/0b9df9bd30be7910ddda60548d485bc302b911 diff --git a/tests/resources/attr/.gitted/objects/93/61f40bb97239cf55811892e14de2e344168ba1 b/deps/libgit2/tests/resources/attr/.gitted/objects/93/61f40bb97239cf55811892e14de2e344168ba1 similarity index 100% rename from tests/resources/attr/.gitted/objects/93/61f40bb97239cf55811892e14de2e344168ba1 rename to deps/libgit2/tests/resources/attr/.gitted/objects/93/61f40bb97239cf55811892e14de2e344168ba1 diff --git a/tests/resources/attr/.gitted/objects/94/da4faa0a6bfb8ee6ccf7153801a69202b31857 b/deps/libgit2/tests/resources/attr/.gitted/objects/94/da4faa0a6bfb8ee6ccf7153801a69202b31857 similarity index 100% rename from tests/resources/attr/.gitted/objects/94/da4faa0a6bfb8ee6ccf7153801a69202b31857 rename to deps/libgit2/tests/resources/attr/.gitted/objects/94/da4faa0a6bfb8ee6ccf7153801a69202b31857 diff --git a/tests/resources/attr/.gitted/objects/96/089fd31ce1d3ee2afb0ba09ba063066932f027 b/deps/libgit2/tests/resources/attr/.gitted/objects/96/089fd31ce1d3ee2afb0ba09ba063066932f027 similarity index 100% rename from tests/resources/attr/.gitted/objects/96/089fd31ce1d3ee2afb0ba09ba063066932f027 rename to deps/libgit2/tests/resources/attr/.gitted/objects/96/089fd31ce1d3ee2afb0ba09ba063066932f027 diff --git a/tests/resources/attr/.gitted/objects/99/eae476896f4907224978b88e5ecaa6c5bb67a9 b/deps/libgit2/tests/resources/attr/.gitted/objects/99/eae476896f4907224978b88e5ecaa6c5bb67a9 similarity index 100% rename from tests/resources/attr/.gitted/objects/99/eae476896f4907224978b88e5ecaa6c5bb67a9 rename to deps/libgit2/tests/resources/attr/.gitted/objects/99/eae476896f4907224978b88e5ecaa6c5bb67a9 diff --git a/tests/resources/attr/.gitted/objects/9e/5bdc47d6a80f2be0ea3049ad74231b94609242 b/deps/libgit2/tests/resources/attr/.gitted/objects/9e/5bdc47d6a80f2be0ea3049ad74231b94609242 similarity index 100% rename from tests/resources/attr/.gitted/objects/9e/5bdc47d6a80f2be0ea3049ad74231b94609242 rename to deps/libgit2/tests/resources/attr/.gitted/objects/9e/5bdc47d6a80f2be0ea3049ad74231b94609242 diff --git a/tests/resources/attr/.gitted/objects/9f/b40b6675dde60b5697afceae91b66d908c02d9 b/deps/libgit2/tests/resources/attr/.gitted/objects/9f/b40b6675dde60b5697afceae91b66d908c02d9 similarity index 100% rename from tests/resources/attr/.gitted/objects/9f/b40b6675dde60b5697afceae91b66d908c02d9 rename to deps/libgit2/tests/resources/attr/.gitted/objects/9f/b40b6675dde60b5697afceae91b66d908c02d9 diff --git a/tests/resources/attr/.gitted/objects/a0/f7217ae99f5ac3e88534f5cea267febc5fa85b b/deps/libgit2/tests/resources/attr/.gitted/objects/a0/f7217ae99f5ac3e88534f5cea267febc5fa85b similarity index 100% rename from tests/resources/attr/.gitted/objects/a0/f7217ae99f5ac3e88534f5cea267febc5fa85b rename to deps/libgit2/tests/resources/attr/.gitted/objects/a0/f7217ae99f5ac3e88534f5cea267febc5fa85b diff --git a/tests/resources/attr/.gitted/objects/a5/6bbcecaeac760cc26239384d2d4c614e7e4320 b/deps/libgit2/tests/resources/attr/.gitted/objects/a5/6bbcecaeac760cc26239384d2d4c614e7e4320 similarity index 100% rename from tests/resources/attr/.gitted/objects/a5/6bbcecaeac760cc26239384d2d4c614e7e4320 rename to deps/libgit2/tests/resources/attr/.gitted/objects/a5/6bbcecaeac760cc26239384d2d4c614e7e4320 diff --git a/tests/resources/attr/.gitted/objects/a5/d76cad53f66f1312bd995909a5bab3c0820770 b/deps/libgit2/tests/resources/attr/.gitted/objects/a5/d76cad53f66f1312bd995909a5bab3c0820770 similarity index 100% rename from tests/resources/attr/.gitted/objects/a5/d76cad53f66f1312bd995909a5bab3c0820770 rename to deps/libgit2/tests/resources/attr/.gitted/objects/a5/d76cad53f66f1312bd995909a5bab3c0820770 diff --git a/tests/resources/attr/.gitted/objects/a9/7cc019851d401a4f1d091cb91a15890a0dd1ba b/deps/libgit2/tests/resources/attr/.gitted/objects/a9/7cc019851d401a4f1d091cb91a15890a0dd1ba similarity index 100% rename from tests/resources/attr/.gitted/objects/a9/7cc019851d401a4f1d091cb91a15890a0dd1ba rename to deps/libgit2/tests/resources/attr/.gitted/objects/a9/7cc019851d401a4f1d091cb91a15890a0dd1ba diff --git a/tests/resources/attr/.gitted/objects/b4/35cd5689a0fb54afbeda4ac20368aa480e8f04 b/deps/libgit2/tests/resources/attr/.gitted/objects/b4/35cd5689a0fb54afbeda4ac20368aa480e8f04 similarity index 100% rename from tests/resources/attr/.gitted/objects/b4/35cd5689a0fb54afbeda4ac20368aa480e8f04 rename to deps/libgit2/tests/resources/attr/.gitted/objects/b4/35cd5689a0fb54afbeda4ac20368aa480e8f04 diff --git a/tests/resources/attr/.gitted/objects/c0/091889c0c77142b87a1fa5123a6398a61d33e7 b/deps/libgit2/tests/resources/attr/.gitted/objects/c0/091889c0c77142b87a1fa5123a6398a61d33e7 similarity index 100% rename from tests/resources/attr/.gitted/objects/c0/091889c0c77142b87a1fa5123a6398a61d33e7 rename to deps/libgit2/tests/resources/attr/.gitted/objects/c0/091889c0c77142b87a1fa5123a6398a61d33e7 diff --git a/tests/resources/attr/.gitted/objects/c4/85abe35abd4aa6fd83b076a78bbea9e2e7e06c b/deps/libgit2/tests/resources/attr/.gitted/objects/c4/85abe35abd4aa6fd83b076a78bbea9e2e7e06c similarity index 100% rename from tests/resources/attr/.gitted/objects/c4/85abe35abd4aa6fd83b076a78bbea9e2e7e06c rename to deps/libgit2/tests/resources/attr/.gitted/objects/c4/85abe35abd4aa6fd83b076a78bbea9e2e7e06c diff --git a/tests/resources/attr/.gitted/objects/c7/aadd770d5907a8475c29e9ee21a27b88bf675d b/deps/libgit2/tests/resources/attr/.gitted/objects/c7/aadd770d5907a8475c29e9ee21a27b88bf675d similarity index 100% rename from tests/resources/attr/.gitted/objects/c7/aadd770d5907a8475c29e9ee21a27b88bf675d rename to deps/libgit2/tests/resources/attr/.gitted/objects/c7/aadd770d5907a8475c29e9ee21a27b88bf675d diff --git a/tests/resources/attr/.gitted/objects/c9/6bbb2c2557a8325ae1559e3ba79cdcecb23076 b/deps/libgit2/tests/resources/attr/.gitted/objects/c9/6bbb2c2557a8325ae1559e3ba79cdcecb23076 similarity index 100% rename from tests/resources/attr/.gitted/objects/c9/6bbb2c2557a8325ae1559e3ba79cdcecb23076 rename to deps/libgit2/tests/resources/attr/.gitted/objects/c9/6bbb2c2557a8325ae1559e3ba79cdcecb23076 diff --git a/tests/resources/attr/.gitted/objects/ce/39a97a7fb1fa90bcf5e711249c1e507476ae0e b/deps/libgit2/tests/resources/attr/.gitted/objects/ce/39a97a7fb1fa90bcf5e711249c1e507476ae0e similarity index 100% rename from tests/resources/attr/.gitted/objects/ce/39a97a7fb1fa90bcf5e711249c1e507476ae0e rename to deps/libgit2/tests/resources/attr/.gitted/objects/ce/39a97a7fb1fa90bcf5e711249c1e507476ae0e diff --git a/tests/resources/attr/.gitted/objects/d5/7da33c16b14326ecb05d19bbea908f5e4c47d9 b/deps/libgit2/tests/resources/attr/.gitted/objects/d5/7da33c16b14326ecb05d19bbea908f5e4c47d9 similarity index 100% rename from tests/resources/attr/.gitted/objects/d5/7da33c16b14326ecb05d19bbea908f5e4c47d9 rename to deps/libgit2/tests/resources/attr/.gitted/objects/d5/7da33c16b14326ecb05d19bbea908f5e4c47d9 diff --git a/tests/resources/attr/.gitted/objects/d8/00886d9c86731ae5c4a62b0b77c437015e00d2 b/deps/libgit2/tests/resources/attr/.gitted/objects/d8/00886d9c86731ae5c4a62b0b77c437015e00d2 similarity index 100% rename from tests/resources/attr/.gitted/objects/d8/00886d9c86731ae5c4a62b0b77c437015e00d2 rename to deps/libgit2/tests/resources/attr/.gitted/objects/d8/00886d9c86731ae5c4a62b0b77c437015e00d2 diff --git a/tests/resources/attr/.gitted/objects/dc/cada462d3df8ac6de596fb8c896aba9344f941 b/deps/libgit2/tests/resources/attr/.gitted/objects/dc/cada462d3df8ac6de596fb8c896aba9344f941 similarity index 100% rename from tests/resources/attr/.gitted/objects/dc/cada462d3df8ac6de596fb8c896aba9344f941 rename to deps/libgit2/tests/resources/attr/.gitted/objects/dc/cada462d3df8ac6de596fb8c896aba9344f941 diff --git a/tests/resources/attr/.gitted/objects/de/863bff4976c9ed7e17a4da0fd524908dc84049 b/deps/libgit2/tests/resources/attr/.gitted/objects/de/863bff4976c9ed7e17a4da0fd524908dc84049 similarity index 100% rename from tests/resources/attr/.gitted/objects/de/863bff4976c9ed7e17a4da0fd524908dc84049 rename to deps/libgit2/tests/resources/attr/.gitted/objects/de/863bff4976c9ed7e17a4da0fd524908dc84049 diff --git a/tests/resources/attr/.gitted/objects/e5/63cf4758f0d646f1b14b76016aa17fa9e549a4 b/deps/libgit2/tests/resources/attr/.gitted/objects/e5/63cf4758f0d646f1b14b76016aa17fa9e549a4 similarity index 100% rename from tests/resources/attr/.gitted/objects/e5/63cf4758f0d646f1b14b76016aa17fa9e549a4 rename to deps/libgit2/tests/resources/attr/.gitted/objects/e5/63cf4758f0d646f1b14b76016aa17fa9e549a4 diff --git a/tests/resources/attr/.gitted/objects/ec/b97df2a174987475ac816e3847fc8e9f6c596b b/deps/libgit2/tests/resources/attr/.gitted/objects/ec/b97df2a174987475ac816e3847fc8e9f6c596b similarity index 100% rename from tests/resources/attr/.gitted/objects/ec/b97df2a174987475ac816e3847fc8e9f6c596b rename to deps/libgit2/tests/resources/attr/.gitted/objects/ec/b97df2a174987475ac816e3847fc8e9f6c596b diff --git a/tests/resources/attr/.gitted/objects/ed/f3dcee4003d71f139777898882ccd097e34c53 b/deps/libgit2/tests/resources/attr/.gitted/objects/ed/f3dcee4003d71f139777898882ccd097e34c53 similarity index 100% rename from tests/resources/attr/.gitted/objects/ed/f3dcee4003d71f139777898882ccd097e34c53 rename to deps/libgit2/tests/resources/attr/.gitted/objects/ed/f3dcee4003d71f139777898882ccd097e34c53 diff --git a/tests/resources/attr/.gitted/objects/f2/c6d717cf4a5a3e6b02684155ab07b766982165 b/deps/libgit2/tests/resources/attr/.gitted/objects/f2/c6d717cf4a5a3e6b02684155ab07b766982165 similarity index 100% rename from tests/resources/attr/.gitted/objects/f2/c6d717cf4a5a3e6b02684155ab07b766982165 rename to deps/libgit2/tests/resources/attr/.gitted/objects/f2/c6d717cf4a5a3e6b02684155ab07b766982165 diff --git a/tests/resources/attr/.gitted/objects/f5/b0af1fb4f5c0cd7aad880711d368a07333c307 b/deps/libgit2/tests/resources/attr/.gitted/objects/f5/b0af1fb4f5c0cd7aad880711d368a07333c307 similarity index 100% rename from tests/resources/attr/.gitted/objects/f5/b0af1fb4f5c0cd7aad880711d368a07333c307 rename to deps/libgit2/tests/resources/attr/.gitted/objects/f5/b0af1fb4f5c0cd7aad880711d368a07333c307 diff --git a/tests/resources/attr/.gitted/objects/fb/5067b1aef3ac1ada4b379dbcb7d17255df7d78 b/deps/libgit2/tests/resources/attr/.gitted/objects/fb/5067b1aef3ac1ada4b379dbcb7d17255df7d78 similarity index 100% rename from tests/resources/attr/.gitted/objects/fb/5067b1aef3ac1ada4b379dbcb7d17255df7d78 rename to deps/libgit2/tests/resources/attr/.gitted/objects/fb/5067b1aef3ac1ada4b379dbcb7d17255df7d78 diff --git a/tests/resources/attr/.gitted/objects/fe/773770c5a6cc7185580c9204b1ff18a33ff3fc b/deps/libgit2/tests/resources/attr/.gitted/objects/fe/773770c5a6cc7185580c9204b1ff18a33ff3fc similarity index 100% rename from tests/resources/attr/.gitted/objects/fe/773770c5a6cc7185580c9204b1ff18a33ff3fc rename to deps/libgit2/tests/resources/attr/.gitted/objects/fe/773770c5a6cc7185580c9204b1ff18a33ff3fc diff --git a/tests/resources/attr/.gitted/objects/ff/69f8639ce2e6010b3f33a74160aad98b48da2b b/deps/libgit2/tests/resources/attr/.gitted/objects/ff/69f8639ce2e6010b3f33a74160aad98b48da2b similarity index 100% rename from tests/resources/attr/.gitted/objects/ff/69f8639ce2e6010b3f33a74160aad98b48da2b rename to deps/libgit2/tests/resources/attr/.gitted/objects/ff/69f8639ce2e6010b3f33a74160aad98b48da2b diff --git a/tests/resources/attr/.gitted/refs/heads/master b/deps/libgit2/tests/resources/attr/.gitted/refs/heads/master similarity index 100% rename from tests/resources/attr/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/attr/.gitted/refs/heads/master diff --git a/tests/resources/attr/attr0 b/deps/libgit2/tests/resources/attr/attr0 similarity index 100% rename from tests/resources/attr/attr0 rename to deps/libgit2/tests/resources/attr/attr0 diff --git a/tests/resources/attr/attr1 b/deps/libgit2/tests/resources/attr/attr1 similarity index 100% rename from tests/resources/attr/attr1 rename to deps/libgit2/tests/resources/attr/attr1 diff --git a/tests/resources/attr/attr2 b/deps/libgit2/tests/resources/attr/attr2 similarity index 100% rename from tests/resources/attr/attr2 rename to deps/libgit2/tests/resources/attr/attr2 diff --git a/tests/resources/attr/attr3 b/deps/libgit2/tests/resources/attr/attr3 similarity index 100% rename from tests/resources/attr/attr3 rename to deps/libgit2/tests/resources/attr/attr3 diff --git a/tests/resources/attr/binfile b/deps/libgit2/tests/resources/attr/binfile similarity index 100% rename from tests/resources/attr/binfile rename to deps/libgit2/tests/resources/attr/binfile diff --git a/tests/resources/attr/dir/file b/deps/libgit2/tests/resources/attr/dir/file similarity index 100% rename from tests/resources/attr/dir/file rename to deps/libgit2/tests/resources/attr/dir/file diff --git a/tests/resources/attr/file b/deps/libgit2/tests/resources/attr/file similarity index 100% rename from tests/resources/attr/file rename to deps/libgit2/tests/resources/attr/file diff --git a/tests/resources/attr/gitattributes b/deps/libgit2/tests/resources/attr/gitattributes similarity index 100% rename from tests/resources/attr/gitattributes rename to deps/libgit2/tests/resources/attr/gitattributes diff --git a/tests/resources/attr/gitignore b/deps/libgit2/tests/resources/attr/gitignore similarity index 100% rename from tests/resources/attr/gitignore rename to deps/libgit2/tests/resources/attr/gitignore diff --git a/tests/resources/attr/ign b/deps/libgit2/tests/resources/attr/ign similarity index 100% rename from tests/resources/attr/ign rename to deps/libgit2/tests/resources/attr/ign diff --git a/tests/resources/attr/macro_bad b/deps/libgit2/tests/resources/attr/macro_bad similarity index 100% rename from tests/resources/attr/macro_bad rename to deps/libgit2/tests/resources/attr/macro_bad diff --git a/tests/resources/attr/macro_test b/deps/libgit2/tests/resources/attr/macro_test similarity index 100% rename from tests/resources/attr/macro_test rename to deps/libgit2/tests/resources/attr/macro_test diff --git a/tests/resources/attr/root_test1 b/deps/libgit2/tests/resources/attr/root_test1 similarity index 100% rename from tests/resources/attr/root_test1 rename to deps/libgit2/tests/resources/attr/root_test1 diff --git a/tests/resources/attr/root_test2 b/deps/libgit2/tests/resources/attr/root_test2 similarity index 100% rename from tests/resources/attr/root_test2 rename to deps/libgit2/tests/resources/attr/root_test2 diff --git a/tests/resources/attr/root_test3 b/deps/libgit2/tests/resources/attr/root_test3 similarity index 100% rename from tests/resources/attr/root_test3 rename to deps/libgit2/tests/resources/attr/root_test3 diff --git a/tests/resources/attr/root_test4.txt b/deps/libgit2/tests/resources/attr/root_test4.txt similarity index 100% rename from tests/resources/attr/root_test4.txt rename to deps/libgit2/tests/resources/attr/root_test4.txt diff --git a/tests/resources/attr/sub/.gitattributes b/deps/libgit2/tests/resources/attr/sub/.gitattributes similarity index 100% rename from tests/resources/attr/sub/.gitattributes rename to deps/libgit2/tests/resources/attr/sub/.gitattributes diff --git a/tests/resources/attr/sub/abc b/deps/libgit2/tests/resources/attr/sub/abc similarity index 100% rename from tests/resources/attr/sub/abc rename to deps/libgit2/tests/resources/attr/sub/abc diff --git a/tests/resources/attr/sub/dir/file b/deps/libgit2/tests/resources/attr/sub/dir/file similarity index 100% rename from tests/resources/attr/sub/dir/file rename to deps/libgit2/tests/resources/attr/sub/dir/file diff --git a/tests/resources/attr/sub/file b/deps/libgit2/tests/resources/attr/sub/file similarity index 100% rename from tests/resources/attr/sub/file rename to deps/libgit2/tests/resources/attr/sub/file diff --git a/tests/resources/attr/sub/ign/file b/deps/libgit2/tests/resources/attr/sub/ign/file similarity index 100% rename from tests/resources/attr/sub/ign/file rename to deps/libgit2/tests/resources/attr/sub/ign/file diff --git a/tests/resources/attr/sub/ign/sub/file b/deps/libgit2/tests/resources/attr/sub/ign/sub/file similarity index 100% rename from tests/resources/attr/sub/ign/sub/file rename to deps/libgit2/tests/resources/attr/sub/ign/sub/file diff --git a/tests/resources/attr/sub/sub/.gitattributes b/deps/libgit2/tests/resources/attr/sub/sub/.gitattributes similarity index 100% rename from tests/resources/attr/sub/sub/.gitattributes rename to deps/libgit2/tests/resources/attr/sub/sub/.gitattributes diff --git a/tests/resources/attr/sub/sub/dir b/deps/libgit2/tests/resources/attr/sub/sub/dir similarity index 100% rename from tests/resources/attr/sub/sub/dir rename to deps/libgit2/tests/resources/attr/sub/sub/dir diff --git a/tests/resources/attr/sub/sub/file b/deps/libgit2/tests/resources/attr/sub/sub/file similarity index 100% rename from tests/resources/attr/sub/sub/file rename to deps/libgit2/tests/resources/attr/sub/sub/file diff --git a/tests/resources/attr/sub/sub/subsub.txt b/deps/libgit2/tests/resources/attr/sub/sub/subsub.txt similarity index 100% rename from tests/resources/attr/sub/sub/subsub.txt rename to deps/libgit2/tests/resources/attr/sub/sub/subsub.txt diff --git a/tests/resources/attr/sub/subdir_test1 b/deps/libgit2/tests/resources/attr/sub/subdir_test1 similarity index 100% rename from tests/resources/attr/sub/subdir_test1 rename to deps/libgit2/tests/resources/attr/sub/subdir_test1 diff --git a/tests/resources/attr/sub/subdir_test2.txt b/deps/libgit2/tests/resources/attr/sub/subdir_test2.txt similarity index 100% rename from tests/resources/attr/sub/subdir_test2.txt rename to deps/libgit2/tests/resources/attr/sub/subdir_test2.txt diff --git a/tests/resources/attr_index/.gitted/HEAD b/deps/libgit2/tests/resources/attr_index/.gitted/HEAD similarity index 100% rename from tests/resources/attr_index/.gitted/HEAD rename to deps/libgit2/tests/resources/attr_index/.gitted/HEAD diff --git a/tests/resources/attr_index/.gitted/config b/deps/libgit2/tests/resources/attr_index/.gitted/config similarity index 100% rename from tests/resources/attr_index/.gitted/config rename to deps/libgit2/tests/resources/attr_index/.gitted/config diff --git a/tests/resources/attr_index/.gitted/description b/deps/libgit2/tests/resources/attr_index/.gitted/description similarity index 100% rename from tests/resources/attr_index/.gitted/description rename to deps/libgit2/tests/resources/attr_index/.gitted/description diff --git a/tests/resources/attr_index/.gitted/index b/deps/libgit2/tests/resources/attr_index/.gitted/index similarity index 100% rename from tests/resources/attr_index/.gitted/index rename to deps/libgit2/tests/resources/attr_index/.gitted/index diff --git a/tests/resources/attr_index/.gitted/info/exclude b/deps/libgit2/tests/resources/attr_index/.gitted/info/exclude similarity index 100% rename from tests/resources/attr_index/.gitted/info/exclude rename to deps/libgit2/tests/resources/attr_index/.gitted/info/exclude diff --git a/tests/resources/attr_index/.gitted/info/refs b/deps/libgit2/tests/resources/attr_index/.gitted/info/refs similarity index 100% rename from tests/resources/attr_index/.gitted/info/refs rename to deps/libgit2/tests/resources/attr_index/.gitted/info/refs diff --git a/tests/resources/attr_index/.gitted/logs/HEAD b/deps/libgit2/tests/resources/attr_index/.gitted/logs/HEAD similarity index 100% rename from tests/resources/attr_index/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/attr_index/.gitted/logs/HEAD diff --git a/tests/resources/attr_index/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/attr_index/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/attr_index/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/attr_index/.gitted/logs/refs/heads/master diff --git a/tests/resources/attr_index/.gitted/objects/38/12cfef36615db1788d4e63f90028007e17a348 b/deps/libgit2/tests/resources/attr_index/.gitted/objects/38/12cfef36615db1788d4e63f90028007e17a348 similarity index 100% rename from tests/resources/attr_index/.gitted/objects/38/12cfef36615db1788d4e63f90028007e17a348 rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/38/12cfef36615db1788d4e63f90028007e17a348 diff --git a/tests/resources/attr_index/.gitted/objects/59/d942b8be2784bc96db9b22202c10815c9a077b b/deps/libgit2/tests/resources/attr_index/.gitted/objects/59/d942b8be2784bc96db9b22202c10815c9a077b similarity index 100% rename from tests/resources/attr_index/.gitted/objects/59/d942b8be2784bc96db9b22202c10815c9a077b rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/59/d942b8be2784bc96db9b22202c10815c9a077b diff --git a/tests/resources/attr_index/.gitted/objects/cd/f17ea3fe625ef812f4dce7f423f4f299287505 b/deps/libgit2/tests/resources/attr_index/.gitted/objects/cd/f17ea3fe625ef812f4dce7f423f4f299287505 similarity index 100% rename from tests/resources/attr_index/.gitted/objects/cd/f17ea3fe625ef812f4dce7f423f4f299287505 rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/cd/f17ea3fe625ef812f4dce7f423f4f299287505 diff --git a/tests/resources/attr_index/.gitted/objects/f7/2502ddd01412bb20796ff812af56fd53b82b52 b/deps/libgit2/tests/resources/attr_index/.gitted/objects/f7/2502ddd01412bb20796ff812af56fd53b82b52 similarity index 100% rename from tests/resources/attr_index/.gitted/objects/f7/2502ddd01412bb20796ff812af56fd53b82b52 rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/f7/2502ddd01412bb20796ff812af56fd53b82b52 diff --git a/tests/resources/attr_index/.gitted/objects/info/packs b/deps/libgit2/tests/resources/attr_index/.gitted/objects/info/packs similarity index 100% rename from tests/resources/attr_index/.gitted/objects/info/packs rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/info/packs diff --git a/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.idx b/deps/libgit2/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.idx similarity index 100% rename from tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.idx rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.idx diff --git a/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.pack b/deps/libgit2/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.pack similarity index 100% rename from tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.pack rename to deps/libgit2/tests/resources/attr_index/.gitted/objects/pack/pack-4e6438607204ce78827e3885594b2c0bb4f13895.pack diff --git a/tests/resources/attr_index/.gitted/packed-refs b/deps/libgit2/tests/resources/attr_index/.gitted/packed-refs similarity index 100% rename from tests/resources/attr_index/.gitted/packed-refs rename to deps/libgit2/tests/resources/attr_index/.gitted/packed-refs diff --git a/tests/resources/attr_index/.gitted/refs/heads/master b/deps/libgit2/tests/resources/attr_index/.gitted/refs/heads/master similarity index 100% rename from tests/resources/attr_index/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/attr_index/.gitted/refs/heads/master diff --git a/tests/resources/attr_index/README.md b/deps/libgit2/tests/resources/attr_index/README.md similarity index 100% rename from tests/resources/attr_index/README.md rename to deps/libgit2/tests/resources/attr_index/README.md diff --git a/tests/resources/attr_index/README.txt b/deps/libgit2/tests/resources/attr_index/README.txt similarity index 100% rename from tests/resources/attr_index/README.txt rename to deps/libgit2/tests/resources/attr_index/README.txt diff --git a/tests/resources/attr_index/gitattributes b/deps/libgit2/tests/resources/attr_index/gitattributes similarity index 100% rename from tests/resources/attr_index/gitattributes rename to deps/libgit2/tests/resources/attr_index/gitattributes diff --git a/tests/resources/attr_index/sub/sub/.gitattributes b/deps/libgit2/tests/resources/attr_index/sub/sub/.gitattributes similarity index 100% rename from tests/resources/attr_index/sub/sub/.gitattributes rename to deps/libgit2/tests/resources/attr_index/sub/sub/.gitattributes diff --git a/tests/resources/attr_index/sub/sub/README.md b/deps/libgit2/tests/resources/attr_index/sub/sub/README.md similarity index 100% rename from tests/resources/attr_index/sub/sub/README.md rename to deps/libgit2/tests/resources/attr_index/sub/sub/README.md diff --git a/tests/resources/attr_index/sub/sub/README.txt b/deps/libgit2/tests/resources/attr_index/sub/sub/README.txt similarity index 100% rename from tests/resources/attr_index/sub/sub/README.txt rename to deps/libgit2/tests/resources/attr_index/sub/sub/README.txt diff --git a/tests/resources/bad.index b/deps/libgit2/tests/resources/bad.index similarity index 100% rename from tests/resources/bad.index rename to deps/libgit2/tests/resources/bad.index diff --git a/tests/resources/bad_tag.git/HEAD b/deps/libgit2/tests/resources/bad_tag.git/HEAD similarity index 100% rename from tests/resources/bad_tag.git/HEAD rename to deps/libgit2/tests/resources/bad_tag.git/HEAD diff --git a/tests/resources/bad_tag.git/config b/deps/libgit2/tests/resources/bad_tag.git/config similarity index 100% rename from tests/resources/bad_tag.git/config rename to deps/libgit2/tests/resources/bad_tag.git/config diff --git a/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.idx b/deps/libgit2/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.idx similarity index 100% rename from tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.idx rename to deps/libgit2/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.idx diff --git a/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.pack b/deps/libgit2/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.pack similarity index 100% rename from tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.pack rename to deps/libgit2/tests/resources/bad_tag.git/objects/pack/pack-7a28f4e000a17f49a41d7a79fc2f762a8a7d9164.pack diff --git a/tests/resources/bad_tag.git/packed-refs b/deps/libgit2/tests/resources/bad_tag.git/packed-refs similarity index 100% rename from tests/resources/bad_tag.git/packed-refs rename to deps/libgit2/tests/resources/bad_tag.git/packed-refs diff --git a/tests/resources/bad_tag.git/refs/dummy-marker.txt b/deps/libgit2/tests/resources/bad_tag.git/refs/dummy-marker.txt similarity index 100% rename from tests/resources/bad_tag.git/refs/dummy-marker.txt rename to deps/libgit2/tests/resources/bad_tag.git/refs/dummy-marker.txt diff --git a/tests/resources/big.index b/deps/libgit2/tests/resources/big.index similarity index 100% rename from tests/resources/big.index rename to deps/libgit2/tests/resources/big.index diff --git a/tests/resources/binaryunicode/.gitted/HEAD b/deps/libgit2/tests/resources/binaryunicode/.gitted/HEAD similarity index 100% rename from tests/resources/binaryunicode/.gitted/HEAD rename to deps/libgit2/tests/resources/binaryunicode/.gitted/HEAD diff --git a/tests/resources/binaryunicode/.gitted/config b/deps/libgit2/tests/resources/binaryunicode/.gitted/config similarity index 100% rename from tests/resources/binaryunicode/.gitted/config rename to deps/libgit2/tests/resources/binaryunicode/.gitted/config diff --git a/tests/resources/binaryunicode/.gitted/description b/deps/libgit2/tests/resources/binaryunicode/.gitted/description similarity index 100% rename from tests/resources/binaryunicode/.gitted/description rename to deps/libgit2/tests/resources/binaryunicode/.gitted/description diff --git a/tests/resources/binaryunicode/.gitted/index b/deps/libgit2/tests/resources/binaryunicode/.gitted/index similarity index 100% rename from tests/resources/binaryunicode/.gitted/index rename to deps/libgit2/tests/resources/binaryunicode/.gitted/index diff --git a/tests/resources/binaryunicode/.gitted/info/exclude b/deps/libgit2/tests/resources/binaryunicode/.gitted/info/exclude similarity index 100% rename from tests/resources/binaryunicode/.gitted/info/exclude rename to deps/libgit2/tests/resources/binaryunicode/.gitted/info/exclude diff --git a/tests/resources/binaryunicode/.gitted/info/refs b/deps/libgit2/tests/resources/binaryunicode/.gitted/info/refs similarity index 100% rename from tests/resources/binaryunicode/.gitted/info/refs rename to deps/libgit2/tests/resources/binaryunicode/.gitted/info/refs diff --git a/tests/resources/binaryunicode/.gitted/objects/info/packs b/deps/libgit2/tests/resources/binaryunicode/.gitted/objects/info/packs similarity index 100% rename from tests/resources/binaryunicode/.gitted/objects/info/packs rename to deps/libgit2/tests/resources/binaryunicode/.gitted/objects/info/packs diff --git a/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.idx b/deps/libgit2/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.idx similarity index 100% rename from tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.idx rename to deps/libgit2/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.idx diff --git a/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.pack b/deps/libgit2/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.pack similarity index 100% rename from tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.pack rename to deps/libgit2/tests/resources/binaryunicode/.gitted/objects/pack/pack-c5bfca875b4995d7aba6e5abf36241f3c397327d.pack diff --git a/tests/resources/binaryunicode/.gitted/refs/heads/branch1 b/deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/branch1 similarity index 100% rename from tests/resources/binaryunicode/.gitted/refs/heads/branch1 rename to deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/branch1 diff --git a/tests/resources/binaryunicode/.gitted/refs/heads/branch2 b/deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/branch2 similarity index 100% rename from tests/resources/binaryunicode/.gitted/refs/heads/branch2 rename to deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/branch2 diff --git a/tests/resources/binaryunicode/.gitted/refs/heads/master b/deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/master similarity index 100% rename from tests/resources/binaryunicode/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/binaryunicode/.gitted/refs/heads/master diff --git a/tests/resources/binaryunicode/file.txt b/deps/libgit2/tests/resources/binaryunicode/file.txt similarity index 100% rename from tests/resources/binaryunicode/file.txt rename to deps/libgit2/tests/resources/binaryunicode/file.txt diff --git a/tests/resources/blametest.git/HEAD b/deps/libgit2/tests/resources/blametest.git/HEAD similarity index 100% rename from tests/resources/blametest.git/HEAD rename to deps/libgit2/tests/resources/blametest.git/HEAD diff --git a/tests/resources/blametest.git/config b/deps/libgit2/tests/resources/blametest.git/config similarity index 100% rename from tests/resources/blametest.git/config rename to deps/libgit2/tests/resources/blametest.git/config diff --git a/tests/resources/blametest.git/description b/deps/libgit2/tests/resources/blametest.git/description similarity index 100% rename from tests/resources/blametest.git/description rename to deps/libgit2/tests/resources/blametest.git/description diff --git a/tests/resources/blametest.git/objects/0c/bab4d45fd61e55a1c9697f9f9cb07a12e15448 b/deps/libgit2/tests/resources/blametest.git/objects/0c/bab4d45fd61e55a1c9697f9f9cb07a12e15448 similarity index 100% rename from tests/resources/blametest.git/objects/0c/bab4d45fd61e55a1c9697f9f9cb07a12e15448 rename to deps/libgit2/tests/resources/blametest.git/objects/0c/bab4d45fd61e55a1c9697f9f9cb07a12e15448 diff --git a/tests/resources/blametest.git/objects/1a/ac69ae5d96461afc4d81d0066cb12f5b05a35b b/deps/libgit2/tests/resources/blametest.git/objects/1a/ac69ae5d96461afc4d81d0066cb12f5b05a35b similarity index 100% rename from tests/resources/blametest.git/objects/1a/ac69ae5d96461afc4d81d0066cb12f5b05a35b rename to deps/libgit2/tests/resources/blametest.git/objects/1a/ac69ae5d96461afc4d81d0066cb12f5b05a35b diff --git a/tests/resources/blametest.git/objects/1b/5f0775af166331c854bd8d1bca3450eaf2532a b/deps/libgit2/tests/resources/blametest.git/objects/1b/5f0775af166331c854bd8d1bca3450eaf2532a similarity index 100% rename from tests/resources/blametest.git/objects/1b/5f0775af166331c854bd8d1bca3450eaf2532a rename to deps/libgit2/tests/resources/blametest.git/objects/1b/5f0775af166331c854bd8d1bca3450eaf2532a diff --git a/tests/resources/blametest.git/objects/48/2f2c370e35c2c314fc1f96db2beb33f955a26a b/deps/libgit2/tests/resources/blametest.git/objects/48/2f2c370e35c2c314fc1f96db2beb33f955a26a similarity index 100% rename from tests/resources/blametest.git/objects/48/2f2c370e35c2c314fc1f96db2beb33f955a26a rename to deps/libgit2/tests/resources/blametest.git/objects/48/2f2c370e35c2c314fc1f96db2beb33f955a26a diff --git a/tests/resources/blametest.git/objects/63/d671eb32d250e4a83766ebbc60e818c1e1e93a b/deps/libgit2/tests/resources/blametest.git/objects/63/d671eb32d250e4a83766ebbc60e818c1e1e93a similarity index 100% rename from tests/resources/blametest.git/objects/63/d671eb32d250e4a83766ebbc60e818c1e1e93a rename to deps/libgit2/tests/resources/blametest.git/objects/63/d671eb32d250e4a83766ebbc60e818c1e1e93a diff --git a/tests/resources/blametest.git/objects/63/eb57322e363e18d460da5ea8284f3cd2340b36 b/deps/libgit2/tests/resources/blametest.git/objects/63/eb57322e363e18d460da5ea8284f3cd2340b36 similarity index 100% rename from tests/resources/blametest.git/objects/63/eb57322e363e18d460da5ea8284f3cd2340b36 rename to deps/libgit2/tests/resources/blametest.git/objects/63/eb57322e363e18d460da5ea8284f3cd2340b36 diff --git a/tests/resources/blametest.git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc b/deps/libgit2/tests/resources/blametest.git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc similarity index 100% rename from tests/resources/blametest.git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc rename to deps/libgit2/tests/resources/blametest.git/objects/8b/137891791fe96927ad78e64b0aad7bded08bdc diff --git a/tests/resources/blametest.git/objects/96/679d59cf9f74d69b3c920f258559b5e8c9a18a b/deps/libgit2/tests/resources/blametest.git/objects/96/679d59cf9f74d69b3c920f258559b5e8c9a18a similarity index 100% rename from tests/resources/blametest.git/objects/96/679d59cf9f74d69b3c920f258559b5e8c9a18a rename to deps/libgit2/tests/resources/blametest.git/objects/96/679d59cf9f74d69b3c920f258559b5e8c9a18a diff --git a/tests/resources/blametest.git/objects/98/89d6e5557761aa8e3607e80c874a6dc51ada7c b/deps/libgit2/tests/resources/blametest.git/objects/98/89d6e5557761aa8e3607e80c874a6dc51ada7c similarity index 100% rename from tests/resources/blametest.git/objects/98/89d6e5557761aa8e3607e80c874a6dc51ada7c rename to deps/libgit2/tests/resources/blametest.git/objects/98/89d6e5557761aa8e3607e80c874a6dc51ada7c diff --git a/tests/resources/blametest.git/objects/aa/06ecca6c4ad6432ab9313e556ca92ba4bcf9e9 b/deps/libgit2/tests/resources/blametest.git/objects/aa/06ecca6c4ad6432ab9313e556ca92ba4bcf9e9 similarity index 100% rename from tests/resources/blametest.git/objects/aa/06ecca6c4ad6432ab9313e556ca92ba4bcf9e9 rename to deps/libgit2/tests/resources/blametest.git/objects/aa/06ecca6c4ad6432ab9313e556ca92ba4bcf9e9 diff --git a/tests/resources/blametest.git/objects/b1/76dfc3a4dc8734e4c579f77236a9c8d0a965d2 b/deps/libgit2/tests/resources/blametest.git/objects/b1/76dfc3a4dc8734e4c579f77236a9c8d0a965d2 similarity index 100% rename from tests/resources/blametest.git/objects/b1/76dfc3a4dc8734e4c579f77236a9c8d0a965d2 rename to deps/libgit2/tests/resources/blametest.git/objects/b1/76dfc3a4dc8734e4c579f77236a9c8d0a965d2 diff --git a/tests/resources/blametest.git/objects/b9/0bb887b7c03750ae6b352ffe76ab9d2e86ee7d b/deps/libgit2/tests/resources/blametest.git/objects/b9/0bb887b7c03750ae6b352ffe76ab9d2e86ee7d similarity index 100% rename from tests/resources/blametest.git/objects/b9/0bb887b7c03750ae6b352ffe76ab9d2e86ee7d rename to deps/libgit2/tests/resources/blametest.git/objects/b9/0bb887b7c03750ae6b352ffe76ab9d2e86ee7d diff --git a/tests/resources/blametest.git/objects/b9/9f7ac0b88909253d829554c14af488c3b0f3a5 b/deps/libgit2/tests/resources/blametest.git/objects/b9/9f7ac0b88909253d829554c14af488c3b0f3a5 similarity index 100% rename from tests/resources/blametest.git/objects/b9/9f7ac0b88909253d829554c14af488c3b0f3a5 rename to deps/libgit2/tests/resources/blametest.git/objects/b9/9f7ac0b88909253d829554c14af488c3b0f3a5 diff --git a/tests/resources/blametest.git/objects/bc/7c5ac2bafe828a68e9d1d460343718d6fbe136 b/deps/libgit2/tests/resources/blametest.git/objects/bc/7c5ac2bafe828a68e9d1d460343718d6fbe136 similarity index 100% rename from tests/resources/blametest.git/objects/bc/7c5ac2bafe828a68e9d1d460343718d6fbe136 rename to deps/libgit2/tests/resources/blametest.git/objects/bc/7c5ac2bafe828a68e9d1d460343718d6fbe136 diff --git a/tests/resources/blametest.git/objects/cf/e0e1e1e3ba18f149fd47f5e1aef6016b2260c3 b/deps/libgit2/tests/resources/blametest.git/objects/cf/e0e1e1e3ba18f149fd47f5e1aef6016b2260c3 similarity index 100% rename from tests/resources/blametest.git/objects/cf/e0e1e1e3ba18f149fd47f5e1aef6016b2260c3 rename to deps/libgit2/tests/resources/blametest.git/objects/cf/e0e1e1e3ba18f149fd47f5e1aef6016b2260c3 diff --git a/tests/resources/blametest.git/objects/d0/67729932057cdb7527a833d6799c4ddc520640 b/deps/libgit2/tests/resources/blametest.git/objects/d0/67729932057cdb7527a833d6799c4ddc520640 similarity index 100% rename from tests/resources/blametest.git/objects/d0/67729932057cdb7527a833d6799c4ddc520640 rename to deps/libgit2/tests/resources/blametest.git/objects/d0/67729932057cdb7527a833d6799c4ddc520640 diff --git a/tests/resources/blametest.git/objects/da/237394e6132d20d30f175b9b73c8638fddddda b/deps/libgit2/tests/resources/blametest.git/objects/da/237394e6132d20d30f175b9b73c8638fddddda similarity index 100% rename from tests/resources/blametest.git/objects/da/237394e6132d20d30f175b9b73c8638fddddda rename to deps/libgit2/tests/resources/blametest.git/objects/da/237394e6132d20d30f175b9b73c8638fddddda diff --git a/tests/resources/blametest.git/objects/e5/b41c1ea533f87388ab69b13baf0b5a562d6243 b/deps/libgit2/tests/resources/blametest.git/objects/e5/b41c1ea533f87388ab69b13baf0b5a562d6243 similarity index 100% rename from tests/resources/blametest.git/objects/e5/b41c1ea533f87388ab69b13baf0b5a562d6243 rename to deps/libgit2/tests/resources/blametest.git/objects/e5/b41c1ea533f87388ab69b13baf0b5a562d6243 diff --git a/tests/resources/blametest.git/objects/ef/32df4d259143933715c74951f932d9892364d1 b/deps/libgit2/tests/resources/blametest.git/objects/ef/32df4d259143933715c74951f932d9892364d1 similarity index 100% rename from tests/resources/blametest.git/objects/ef/32df4d259143933715c74951f932d9892364d1 rename to deps/libgit2/tests/resources/blametest.git/objects/ef/32df4d259143933715c74951f932d9892364d1 diff --git a/tests/resources/blametest.git/refs/heads/master b/deps/libgit2/tests/resources/blametest.git/refs/heads/master similarity index 100% rename from tests/resources/blametest.git/refs/heads/master rename to deps/libgit2/tests/resources/blametest.git/refs/heads/master diff --git a/tests/resources/cherrypick/.gitted/HEAD b/deps/libgit2/tests/resources/cherrypick/.gitted/HEAD similarity index 100% rename from tests/resources/cherrypick/.gitted/HEAD rename to deps/libgit2/tests/resources/cherrypick/.gitted/HEAD diff --git a/tests/resources/cherrypick/.gitted/config b/deps/libgit2/tests/resources/cherrypick/.gitted/config similarity index 100% rename from tests/resources/cherrypick/.gitted/config rename to deps/libgit2/tests/resources/cherrypick/.gitted/config diff --git a/tests/resources/cherrypick/.gitted/index b/deps/libgit2/tests/resources/cherrypick/.gitted/index similarity index 100% rename from tests/resources/cherrypick/.gitted/index rename to deps/libgit2/tests/resources/cherrypick/.gitted/index diff --git a/tests/resources/cherrypick/.gitted/info/exclude b/deps/libgit2/tests/resources/cherrypick/.gitted/info/exclude similarity index 100% rename from tests/resources/cherrypick/.gitted/info/exclude rename to deps/libgit2/tests/resources/cherrypick/.gitted/info/exclude diff --git a/tests/resources/cherrypick/.gitted/objects/01/a2b453c2647c71ccfefc285f2266d1f00b8253 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/01/a2b453c2647c71ccfefc285f2266d1f00b8253 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/01/a2b453c2647c71ccfefc285f2266d1f00b8253 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/01/a2b453c2647c71ccfefc285f2266d1f00b8253 diff --git a/tests/resources/cherrypick/.gitted/objects/02/67838e09bbc5969bba035be2d27c8a6de694d8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/02/67838e09bbc5969bba035be2d27c8a6de694d8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/02/67838e09bbc5969bba035be2d27c8a6de694d8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/02/67838e09bbc5969bba035be2d27c8a6de694d8 diff --git a/tests/resources/cherrypick/.gitted/objects/06/3fc9f01e6e9ec2a8d8f749885e931875e50d37 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/06/3fc9f01e6e9ec2a8d8f749885e931875e50d37 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/06/3fc9f01e6e9ec2a8d8f749885e931875e50d37 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/06/3fc9f01e6e9ec2a8d8f749885e931875e50d37 diff --git a/tests/resources/cherrypick/.gitted/objects/08/9ac03f76058b5ba0b44bb268f317f9242481e9 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/08/9ac03f76058b5ba0b44bb268f317f9242481e9 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/08/9ac03f76058b5ba0b44bb268f317f9242481e9 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/08/9ac03f76058b5ba0b44bb268f317f9242481e9 diff --git a/tests/resources/cherrypick/.gitted/objects/0d/447a6c2528b06616cde3b209a4b4ea3dcb8d65 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/0d/447a6c2528b06616cde3b209a4b4ea3dcb8d65 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/0d/447a6c2528b06616cde3b209a4b4ea3dcb8d65 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/0d/447a6c2528b06616cde3b209a4b4ea3dcb8d65 diff --git a/tests/resources/cherrypick/.gitted/objects/11/24c2c1ae07b26fded662d6c3f3631d9dc16f88 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/11/24c2c1ae07b26fded662d6c3f3631d9dc16f88 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/11/24c2c1ae07b26fded662d6c3f3631d9dc16f88 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/11/24c2c1ae07b26fded662d6c3f3631d9dc16f88 diff --git a/tests/resources/cherrypick/.gitted/objects/12/905f4ea5b76f9d3fdcfe73e462201c06ae632a b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/12/905f4ea5b76f9d3fdcfe73e462201c06ae632a similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/12/905f4ea5b76f9d3fdcfe73e462201c06ae632a rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/12/905f4ea5b76f9d3fdcfe73e462201c06ae632a diff --git a/tests/resources/cherrypick/.gitted/objects/19/c5c7207054604b69c84d08a7571ef9672bb5c2 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/19/c5c7207054604b69c84d08a7571ef9672bb5c2 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/19/c5c7207054604b69c84d08a7571ef9672bb5c2 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/19/c5c7207054604b69c84d08a7571ef9672bb5c2 diff --git a/tests/resources/cherrypick/.gitted/objects/1c/2116845780455ecf916538c1cc27c4222452af b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/1c/2116845780455ecf916538c1cc27c4222452af similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/1c/2116845780455ecf916538c1cc27c4222452af rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/1c/2116845780455ecf916538c1cc27c4222452af diff --git a/tests/resources/cherrypick/.gitted/objects/1c/c85eb4ff0a8438fde1b14274c6f87f891b36a0 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/1c/c85eb4ff0a8438fde1b14274c6f87f891b36a0 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/1c/c85eb4ff0a8438fde1b14274c6f87f891b36a0 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/1c/c85eb4ff0a8438fde1b14274c6f87f891b36a0 diff --git a/tests/resources/cherrypick/.gitted/objects/1e/1cb7391d25dcd8daba88f1f627f3045982286c b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/1e/1cb7391d25dcd8daba88f1f627f3045982286c similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/1e/1cb7391d25dcd8daba88f1f627f3045982286c rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/1e/1cb7391d25dcd8daba88f1f627f3045982286c diff --git a/tests/resources/cherrypick/.gitted/objects/20/fc1a4c9d994021f43d33ab75e4252e27ca661d b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/20/fc1a4c9d994021f43d33ab75e4252e27ca661d similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/20/fc1a4c9d994021f43d33ab75e4252e27ca661d rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/20/fc1a4c9d994021f43d33ab75e4252e27ca661d diff --git a/tests/resources/cherrypick/.gitted/objects/28/d9eb4208074ad1cc84e71ccc908b34573f05d2 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/28/d9eb4208074ad1cc84e71ccc908b34573f05d2 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/28/d9eb4208074ad1cc84e71ccc908b34573f05d2 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/28/d9eb4208074ad1cc84e71ccc908b34573f05d2 diff --git a/tests/resources/cherrypick/.gitted/objects/2a/26c7e88b285613b302ba76712bc998863f3cbc b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/2a/26c7e88b285613b302ba76712bc998863f3cbc similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/2a/26c7e88b285613b302ba76712bc998863f3cbc rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/2a/26c7e88b285613b302ba76712bc998863f3cbc diff --git a/tests/resources/cherrypick/.gitted/objects/2a/c3b376093de405b0a951bff578655b1c2b7fa1 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/2a/c3b376093de405b0a951bff578655b1c2b7fa1 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/2a/c3b376093de405b0a951bff578655b1c2b7fa1 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/2a/c3b376093de405b0a951bff578655b1c2b7fa1 diff --git a/tests/resources/cherrypick/.gitted/objects/2c/acbcaabf785f1ac231e8519849d4ad38692f2c b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/2c/acbcaabf785f1ac231e8519849d4ad38692f2c similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/2c/acbcaabf785f1ac231e8519849d4ad38692f2c rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/2c/acbcaabf785f1ac231e8519849d4ad38692f2c diff --git a/tests/resources/cherrypick/.gitted/objects/35/cb210149022c7379b0a67b0dec13cc628ff87d b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/35/cb210149022c7379b0a67b0dec13cc628ff87d similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/35/cb210149022c7379b0a67b0dec13cc628ff87d rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/35/cb210149022c7379b0a67b0dec13cc628ff87d diff --git a/tests/resources/cherrypick/.gitted/objects/38/c05a857e831a7e759d83778bfc85d003e21c45 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/38/c05a857e831a7e759d83778bfc85d003e21c45 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/38/c05a857e831a7e759d83778bfc85d003e21c45 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/38/c05a857e831a7e759d83778bfc85d003e21c45 diff --git a/tests/resources/cherrypick/.gitted/objects/3f/9eed8946df9e2c737d3b8dc0b8e78959aacd92 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/3f/9eed8946df9e2c737d3b8dc0b8e78959aacd92 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/3f/9eed8946df9e2c737d3b8dc0b8e78959aacd92 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/3f/9eed8946df9e2c737d3b8dc0b8e78959aacd92 diff --git a/tests/resources/cherrypick/.gitted/objects/40/9a1bec58bf35348e8b62b72bb9c1f45cf5a587 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/40/9a1bec58bf35348e8b62b72bb9c1f45cf5a587 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/40/9a1bec58bf35348e8b62b72bb9c1f45cf5a587 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/40/9a1bec58bf35348e8b62b72bb9c1f45cf5a587 diff --git a/tests/resources/cherrypick/.gitted/objects/44/cd2ed2052c9c68f9a439d208e9614dc2a55c70 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/44/cd2ed2052c9c68f9a439d208e9614dc2a55c70 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/44/cd2ed2052c9c68f9a439d208e9614dc2a55c70 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/44/cd2ed2052c9c68f9a439d208e9614dc2a55c70 diff --git a/tests/resources/cherrypick/.gitted/objects/48/7434cace79238a7091e2220611d4f20a765690 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/48/7434cace79238a7091e2220611d4f20a765690 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/48/7434cace79238a7091e2220611d4f20a765690 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/48/7434cace79238a7091e2220611d4f20a765690 diff --git a/tests/resources/cherrypick/.gitted/objects/49/20ad2f17162dcc8823ad491444dcb87f5899c9 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/49/20ad2f17162dcc8823ad491444dcb87f5899c9 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/49/20ad2f17162dcc8823ad491444dcb87f5899c9 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/49/20ad2f17162dcc8823ad491444dcb87f5899c9 diff --git a/tests/resources/cherrypick/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 diff --git a/tests/resources/cherrypick/.gitted/objects/4c/532774cc1fea37f6efc2256763a64d38c8cdde b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/4c/532774cc1fea37f6efc2256763a64d38c8cdde similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/4c/532774cc1fea37f6efc2256763a64d38c8cdde rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/4c/532774cc1fea37f6efc2256763a64d38c8cdde diff --git a/tests/resources/cherrypick/.gitted/objects/51/145af30d411a50195b66517d825e69bf57ed22 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/51/145af30d411a50195b66517d825e69bf57ed22 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/51/145af30d411a50195b66517d825e69bf57ed22 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/51/145af30d411a50195b66517d825e69bf57ed22 diff --git a/tests/resources/cherrypick/.gitted/objects/54/61de53ffadbf15be4dd6345997c15689573209 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/54/61de53ffadbf15be4dd6345997c15689573209 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/54/61de53ffadbf15be4dd6345997c15689573209 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/54/61de53ffadbf15be4dd6345997c15689573209 diff --git a/tests/resources/cherrypick/.gitted/objects/54/784f10955e92ab27e4fa832e40cb2baf1edbdc b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/54/784f10955e92ab27e4fa832e40cb2baf1edbdc similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/54/784f10955e92ab27e4fa832e40cb2baf1edbdc rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/54/784f10955e92ab27e4fa832e40cb2baf1edbdc diff --git a/tests/resources/cherrypick/.gitted/objects/56/3f6473a3858f99b80e5f93c660512ed38e1e6f b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/56/3f6473a3858f99b80e5f93c660512ed38e1e6f similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/56/3f6473a3858f99b80e5f93c660512ed38e1e6f rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/56/3f6473a3858f99b80e5f93c660512ed38e1e6f diff --git a/tests/resources/cherrypick/.gitted/objects/58/a957ef0061c1a8ef995c855dfab4f5da8d6617 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/58/a957ef0061c1a8ef995c855dfab4f5da8d6617 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/58/a957ef0061c1a8ef995c855dfab4f5da8d6617 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/58/a957ef0061c1a8ef995c855dfab4f5da8d6617 diff --git a/tests/resources/cherrypick/.gitted/objects/5d/c7e1f440ce74d5503a0dfbc6c30e091475f774 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/5d/c7e1f440ce74d5503a0dfbc6c30e091475f774 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/5d/c7e1f440ce74d5503a0dfbc6c30e091475f774 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/5d/c7e1f440ce74d5503a0dfbc6c30e091475f774 diff --git a/tests/resources/cherrypick/.gitted/objects/5e/2206cda1c56430ad107a6866a829c159e0b9ea b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/5e/2206cda1c56430ad107a6866a829c159e0b9ea similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/5e/2206cda1c56430ad107a6866a829c159e0b9ea rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/5e/2206cda1c56430ad107a6866a829c159e0b9ea diff --git a/tests/resources/cherrypick/.gitted/objects/5f/77a2a13935ac62a629553f8944ad57b1ed8b4a b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/5f/77a2a13935ac62a629553f8944ad57b1ed8b4a similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/5f/77a2a13935ac62a629553f8944ad57b1ed8b4a rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/5f/77a2a13935ac62a629553f8944ad57b1ed8b4a diff --git a/tests/resources/cherrypick/.gitted/objects/63/c0d92b95253c4a40d3883f423a54be47d2c4c8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/63/c0d92b95253c4a40d3883f423a54be47d2c4c8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/63/c0d92b95253c4a40d3883f423a54be47d2c4c8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/63/c0d92b95253c4a40d3883f423a54be47d2c4c8 diff --git a/tests/resources/cherrypick/.gitted/objects/6c/e83eb5f0fd34a10c3d25c6b36d2ed7ec0d6ce7 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/6c/e83eb5f0fd34a10c3d25c6b36d2ed7ec0d6ce7 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/6c/e83eb5f0fd34a10c3d25c6b36d2ed7ec0d6ce7 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/6c/e83eb5f0fd34a10c3d25c6b36d2ed7ec0d6ce7 diff --git a/tests/resources/cherrypick/.gitted/objects/6d/1c2afe5eeb9e497528e2780ac468a5465cbc96 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/6d/1c2afe5eeb9e497528e2780ac468a5465cbc96 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/6d/1c2afe5eeb9e497528e2780ac468a5465cbc96 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/6d/1c2afe5eeb9e497528e2780ac468a5465cbc96 diff --git a/tests/resources/cherrypick/.gitted/objects/74/f06b5bfec6d33d7264f73606b57a7c0b963819 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/74/f06b5bfec6d33d7264f73606b57a7c0b963819 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/74/f06b5bfec6d33d7264f73606b57a7c0b963819 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/74/f06b5bfec6d33d7264f73606b57a7c0b963819 diff --git a/tests/resources/cherrypick/.gitted/objects/82/8b08c52d2cba30952e0e008f60b25b5ba0d41a b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/82/8b08c52d2cba30952e0e008f60b25b5ba0d41a similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/82/8b08c52d2cba30952e0e008f60b25b5ba0d41a rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/82/8b08c52d2cba30952e0e008f60b25b5ba0d41a diff --git a/tests/resources/cherrypick/.gitted/objects/85/36dd6f0ec3ddecb9f9b6c8c64c6d322cd01211 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/85/36dd6f0ec3ddecb9f9b6c8c64c6d322cd01211 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/85/36dd6f0ec3ddecb9f9b6c8c64c6d322cd01211 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/85/36dd6f0ec3ddecb9f9b6c8c64c6d322cd01211 diff --git a/tests/resources/cherrypick/.gitted/objects/85/a4a1d791973644f24c72f5e89420d3064cc452 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/85/a4a1d791973644f24c72f5e89420d3064cc452 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/85/a4a1d791973644f24c72f5e89420d3064cc452 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/85/a4a1d791973644f24c72f5e89420d3064cc452 diff --git a/tests/resources/cherrypick/.gitted/objects/8b/5c30499a71001189b647f4d5b57fa8f04897ce b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/8b/5c30499a71001189b647f4d5b57fa8f04897ce similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/8b/5c30499a71001189b647f4d5b57fa8f04897ce rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/8b/5c30499a71001189b647f4d5b57fa8f04897ce diff --git a/tests/resources/cherrypick/.gitted/objects/96/4ea3da044d9083181a88ba6701de9e35778bf4 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/96/4ea3da044d9083181a88ba6701de9e35778bf4 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/96/4ea3da044d9083181a88ba6701de9e35778bf4 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/96/4ea3da044d9083181a88ba6701de9e35778bf4 diff --git a/tests/resources/cherrypick/.gitted/objects/9c/c39fca3765a2facbe31157f7d60c2602193f36 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/9c/c39fca3765a2facbe31157f7d60c2602193f36 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/9c/c39fca3765a2facbe31157f7d60c2602193f36 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/9c/c39fca3765a2facbe31157f7d60c2602193f36 diff --git a/tests/resources/cherrypick/.gitted/objects/9c/cb9bf50c011fd58dcbaa65df917bf79539717f b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/9c/cb9bf50c011fd58dcbaa65df917bf79539717f similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/9c/cb9bf50c011fd58dcbaa65df917bf79539717f rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/9c/cb9bf50c011fd58dcbaa65df917bf79539717f diff --git a/tests/resources/cherrypick/.gitted/objects/a1/0b59f4280491afe6e430c30654a7acc67d4a33 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a1/0b59f4280491afe6e430c30654a7acc67d4a33 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a1/0b59f4280491afe6e430c30654a7acc67d4a33 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a1/0b59f4280491afe6e430c30654a7acc67d4a33 diff --git a/tests/resources/cherrypick/.gitted/objects/a2/1b4bfe7a04ab18024fb57f4ae9a52a1acef394 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a2/1b4bfe7a04ab18024fb57f4ae9a52a1acef394 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a2/1b4bfe7a04ab18024fb57f4ae9a52a1acef394 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a2/1b4bfe7a04ab18024fb57f4ae9a52a1acef394 diff --git a/tests/resources/cherrypick/.gitted/objects/a4/3a050c588d4e92f11a6b139680923e9728477d b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a4/3a050c588d4e92f11a6b139680923e9728477d similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a4/3a050c588d4e92f11a6b139680923e9728477d rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a4/3a050c588d4e92f11a6b139680923e9728477d diff --git a/tests/resources/cherrypick/.gitted/objects/a5/8ca3fee5eb68b11adc2703e5843f968c9dad1e b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a5/8ca3fee5eb68b11adc2703e5843f968c9dad1e similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a5/8ca3fee5eb68b11adc2703e5843f968c9dad1e rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a5/8ca3fee5eb68b11adc2703e5843f968c9dad1e diff --git a/tests/resources/cherrypick/.gitted/objects/a6/61b5dec1004e2c62654ded3762370c27cf266b b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a6/61b5dec1004e2c62654ded3762370c27cf266b similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a6/61b5dec1004e2c62654ded3762370c27cf266b rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a6/61b5dec1004e2c62654ded3762370c27cf266b diff --git a/tests/resources/cherrypick/.gitted/objects/a6/9ef8fcbb9a2c509a7dbf4f23d257eb551d5610 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a6/9ef8fcbb9a2c509a7dbf4f23d257eb551d5610 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a6/9ef8fcbb9a2c509a7dbf4f23d257eb551d5610 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a6/9ef8fcbb9a2c509a7dbf4f23d257eb551d5610 diff --git a/tests/resources/cherrypick/.gitted/objects/a8/3c6f70297b805dedc549e6583582966f6ebcab b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a8/3c6f70297b805dedc549e6583582966f6ebcab similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a8/3c6f70297b805dedc549e6583582966f6ebcab rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a8/3c6f70297b805dedc549e6583582966f6ebcab diff --git a/tests/resources/cherrypick/.gitted/objects/a9/020cd240774e4d672732bcb82d516d9685da76 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/a9/020cd240774e4d672732bcb82d516d9685da76 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/a9/020cd240774e4d672732bcb82d516d9685da76 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/a9/020cd240774e4d672732bcb82d516d9685da76 diff --git a/tests/resources/cherrypick/.gitted/objects/ab/4115f808bc585b60f822da7020af86d20f62c8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/ab/4115f808bc585b60f822da7020af86d20f62c8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/ab/4115f808bc585b60f822da7020af86d20f62c8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/ab/4115f808bc585b60f822da7020af86d20f62c8 diff --git a/tests/resources/cherrypick/.gitted/objects/ab/e4603bc7cd5b8167a267e0e2418fd2348f8cff b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/ab/e4603bc7cd5b8167a267e0e2418fd2348f8cff similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/ab/e4603bc7cd5b8167a267e0e2418fd2348f8cff rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/ab/e4603bc7cd5b8167a267e0e2418fd2348f8cff diff --git a/tests/resources/cherrypick/.gitted/objects/b8/26e9b36e22e949ec885e7a1f3db496bbab6cd0 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/b8/26e9b36e22e949ec885e7a1f3db496bbab6cd0 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/b8/26e9b36e22e949ec885e7a1f3db496bbab6cd0 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/b8/26e9b36e22e949ec885e7a1f3db496bbab6cd0 diff --git a/tests/resources/cherrypick/.gitted/objects/ba/fbf6912c09505ac60575cd43d3f2aba3bd84d8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/ba/fbf6912c09505ac60575cd43d3f2aba3bd84d8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/ba/fbf6912c09505ac60575cd43d3f2aba3bd84d8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/ba/fbf6912c09505ac60575cd43d3f2aba3bd84d8 diff --git a/tests/resources/cherrypick/.gitted/objects/bb/14296ffa9dfbf935ec9ce2f9ed7808d952226b b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/bb/14296ffa9dfbf935ec9ce2f9ed7808d952226b similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/bb/14296ffa9dfbf935ec9ce2f9ed7808d952226b rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/bb/14296ffa9dfbf935ec9ce2f9ed7808d952226b diff --git a/tests/resources/cherrypick/.gitted/objects/bc/4dd0744364d1db380a9811bd264c101065231e b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/bc/4dd0744364d1db380a9811bd264c101065231e similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/bc/4dd0744364d1db380a9811bd264c101065231e rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/bc/4dd0744364d1db380a9811bd264c101065231e diff --git a/tests/resources/cherrypick/.gitted/objects/bd/65d4083845ed5ed4e1fe5feb85ac395d0760c8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/65d4083845ed5ed4e1fe5feb85ac395d0760c8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/bd/65d4083845ed5ed4e1fe5feb85ac395d0760c8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/65d4083845ed5ed4e1fe5feb85ac395d0760c8 diff --git a/tests/resources/cherrypick/.gitted/objects/bd/6ffc8c6c41f0f85ff9e3d61c9479516bac0024 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/6ffc8c6c41f0f85ff9e3d61c9479516bac0024 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/bd/6ffc8c6c41f0f85ff9e3d61c9479516bac0024 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/6ffc8c6c41f0f85ff9e3d61c9479516bac0024 diff --git a/tests/resources/cherrypick/.gitted/objects/bd/a51965cb36c0c5731c8cb50b80a36cac81018e b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/a51965cb36c0c5731c8cb50b80a36cac81018e similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/bd/a51965cb36c0c5731c8cb50b80a36cac81018e rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/bd/a51965cb36c0c5731c8cb50b80a36cac81018e diff --git a/tests/resources/cherrypick/.gitted/objects/ce/d8fb81b6ec534d5deaf2a48b4b96c799712507 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/ce/d8fb81b6ec534d5deaf2a48b4b96c799712507 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/ce/d8fb81b6ec534d5deaf2a48b4b96c799712507 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/ce/d8fb81b6ec534d5deaf2a48b4b96c799712507 diff --git a/tests/resources/cherrypick/.gitted/objects/cf/c4f0999a8367568e049af4f72e452d40828a15 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/cf/c4f0999a8367568e049af4f72e452d40828a15 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/cf/c4f0999a8367568e049af4f72e452d40828a15 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/cf/c4f0999a8367568e049af4f72e452d40828a15 diff --git a/tests/resources/cherrypick/.gitted/objects/d0/f21e17beb5b9d953b1d8349049818a4f2edd1e b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/d0/f21e17beb5b9d953b1d8349049818a4f2edd1e similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/d0/f21e17beb5b9d953b1d8349049818a4f2edd1e rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/d0/f21e17beb5b9d953b1d8349049818a4f2edd1e diff --git a/tests/resources/cherrypick/.gitted/objects/d3/d77487660ee3c0194ee01dc5eaf478782b1c7e b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/d3/d77487660ee3c0194ee01dc5eaf478782b1c7e similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/d3/d77487660ee3c0194ee01dc5eaf478782b1c7e rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/d3/d77487660ee3c0194ee01dc5eaf478782b1c7e diff --git a/tests/resources/cherrypick/.gitted/objects/e2/33b9ed408a95e9d4b65fec7fc34943a556deb2 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/e2/33b9ed408a95e9d4b65fec7fc34943a556deb2 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/e2/33b9ed408a95e9d4b65fec7fc34943a556deb2 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/e2/33b9ed408a95e9d4b65fec7fc34943a556deb2 diff --git a/tests/resources/cherrypick/.gitted/objects/e5/183bfd18e3a0a691fadde2f0d5610b73282d31 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/e5/183bfd18e3a0a691fadde2f0d5610b73282d31 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/e5/183bfd18e3a0a691fadde2f0d5610b73282d31 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/e5/183bfd18e3a0a691fadde2f0d5610b73282d31 diff --git a/tests/resources/cherrypick/.gitted/objects/e6/ae8889c40c77d7be02758235b5b3f7a4f2a129 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/e6/ae8889c40c77d7be02758235b5b3f7a4f2a129 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/e6/ae8889c40c77d7be02758235b5b3f7a4f2a129 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/e6/ae8889c40c77d7be02758235b5b3f7a4f2a129 diff --git a/tests/resources/cherrypick/.gitted/objects/e7/811a2bc55635f182750f0420da5ad232c1af91 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/e7/811a2bc55635f182750f0420da5ad232c1af91 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/e7/811a2bc55635f182750f0420da5ad232c1af91 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/e7/811a2bc55635f182750f0420da5ad232c1af91 diff --git a/tests/resources/cherrypick/.gitted/objects/e9/b63f3655b2ad80c0ff587389b5a9589a3a7110 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/e9/b63f3655b2ad80c0ff587389b5a9589a3a7110 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/e9/b63f3655b2ad80c0ff587389b5a9589a3a7110 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/e9/b63f3655b2ad80c0ff587389b5a9589a3a7110 diff --git a/tests/resources/cherrypick/.gitted/objects/eb/da71fe44dcb60c53b8fbd53208a1204d32e959 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/eb/da71fe44dcb60c53b8fbd53208a1204d32e959 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/eb/da71fe44dcb60c53b8fbd53208a1204d32e959 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/eb/da71fe44dcb60c53b8fbd53208a1204d32e959 diff --git a/tests/resources/cherrypick/.gitted/objects/f0/5ed049854c1596a7cc0e957fab34961077f3ae b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/f0/5ed049854c1596a7cc0e957fab34961077f3ae similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/f0/5ed049854c1596a7cc0e957fab34961077f3ae rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/f0/5ed049854c1596a7cc0e957fab34961077f3ae diff --git a/tests/resources/cherrypick/.gitted/objects/f0/a4e1c66bb548cd2b22eebefda703872e969775 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/f0/a4e1c66bb548cd2b22eebefda703872e969775 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/f0/a4e1c66bb548cd2b22eebefda703872e969775 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/f0/a4e1c66bb548cd2b22eebefda703872e969775 diff --git a/tests/resources/cherrypick/.gitted/objects/f2/ec8c8cf1a9fb7aa047a25a4308bfe860237ad4 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/f2/ec8c8cf1a9fb7aa047a25a4308bfe860237ad4 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/f2/ec8c8cf1a9fb7aa047a25a4308bfe860237ad4 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/f2/ec8c8cf1a9fb7aa047a25a4308bfe860237ad4 diff --git a/tests/resources/cherrypick/.gitted/objects/f5/684c96bf40c709877b56404cd8a5dd2d2a7978 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/f5/684c96bf40c709877b56404cd8a5dd2d2a7978 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/f5/684c96bf40c709877b56404cd8a5dd2d2a7978 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/f5/684c96bf40c709877b56404cd8a5dd2d2a7978 diff --git a/tests/resources/cherrypick/.gitted/objects/f9/0f9dcbdac2cce5cc166346160e19cb693ef4e8 b/deps/libgit2/tests/resources/cherrypick/.gitted/objects/f9/0f9dcbdac2cce5cc166346160e19cb693ef4e8 similarity index 100% rename from tests/resources/cherrypick/.gitted/objects/f9/0f9dcbdac2cce5cc166346160e19cb693ef4e8 rename to deps/libgit2/tests/resources/cherrypick/.gitted/objects/f9/0f9dcbdac2cce5cc166346160e19cb693ef4e8 diff --git a/tests/resources/cherrypick/.gitted/refs/heads/automerge-branch b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/automerge-branch similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/automerge-branch rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/automerge-branch diff --git a/tests/resources/cherrypick/.gitted/refs/heads/master b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/master similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/master diff --git a/tests/resources/cherrypick/.gitted/refs/heads/merge-branch b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-branch similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/merge-branch rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-branch diff --git a/tests/resources/cherrypick/.gitted/refs/heads/merge-conflicts b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-conflicts similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/merge-conflicts rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-conflicts diff --git a/tests/resources/cherrypick/.gitted/refs/heads/merge-mainline b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-mainline similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/merge-mainline rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/merge-mainline diff --git a/tests/resources/cherrypick/.gitted/refs/heads/orphan b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/orphan similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/orphan rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/orphan diff --git a/tests/resources/cherrypick/.gitted/refs/heads/renames b/deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/renames similarity index 100% rename from tests/resources/cherrypick/.gitted/refs/heads/renames rename to deps/libgit2/tests/resources/cherrypick/.gitted/refs/heads/renames diff --git a/tests/resources/cherrypick/file1.txt b/deps/libgit2/tests/resources/cherrypick/file1.txt similarity index 100% rename from tests/resources/cherrypick/file1.txt rename to deps/libgit2/tests/resources/cherrypick/file1.txt diff --git a/tests/resources/cherrypick/file2.txt b/deps/libgit2/tests/resources/cherrypick/file2.txt similarity index 100% rename from tests/resources/cherrypick/file2.txt rename to deps/libgit2/tests/resources/cherrypick/file2.txt diff --git a/tests/resources/cherrypick/file3.txt b/deps/libgit2/tests/resources/cherrypick/file3.txt similarity index 100% rename from tests/resources/cherrypick/file3.txt rename to deps/libgit2/tests/resources/cherrypick/file3.txt diff --git a/tests/resources/config/.gitconfig b/deps/libgit2/tests/resources/config/.gitconfig similarity index 100% rename from tests/resources/config/.gitconfig rename to deps/libgit2/tests/resources/config/.gitconfig diff --git a/tests/resources/config/config-include b/deps/libgit2/tests/resources/config/config-include similarity index 100% rename from tests/resources/config/config-include rename to deps/libgit2/tests/resources/config/config-include diff --git a/tests/resources/config/config-included b/deps/libgit2/tests/resources/config/config-included similarity index 100% rename from tests/resources/config/config-included rename to deps/libgit2/tests/resources/config/config-included diff --git a/tests/resources/config/config0 b/deps/libgit2/tests/resources/config/config0 similarity index 100% rename from tests/resources/config/config0 rename to deps/libgit2/tests/resources/config/config0 diff --git a/tests/resources/config/config1 b/deps/libgit2/tests/resources/config/config1 similarity index 100% rename from tests/resources/config/config1 rename to deps/libgit2/tests/resources/config/config1 diff --git a/tests/resources/config/config10 b/deps/libgit2/tests/resources/config/config10 similarity index 100% rename from tests/resources/config/config10 rename to deps/libgit2/tests/resources/config/config10 diff --git a/tests/resources/config/config11 b/deps/libgit2/tests/resources/config/config11 similarity index 100% rename from tests/resources/config/config11 rename to deps/libgit2/tests/resources/config/config11 diff --git a/tests/resources/config/config12 b/deps/libgit2/tests/resources/config/config12 similarity index 100% rename from tests/resources/config/config12 rename to deps/libgit2/tests/resources/config/config12 diff --git a/tests/resources/config/config13 b/deps/libgit2/tests/resources/config/config13 similarity index 100% rename from tests/resources/config/config13 rename to deps/libgit2/tests/resources/config/config13 diff --git a/tests/resources/config/config14 b/deps/libgit2/tests/resources/config/config14 similarity index 100% rename from tests/resources/config/config14 rename to deps/libgit2/tests/resources/config/config14 diff --git a/tests/resources/config/config15 b/deps/libgit2/tests/resources/config/config15 similarity index 100% rename from tests/resources/config/config15 rename to deps/libgit2/tests/resources/config/config15 diff --git a/tests/resources/config/config16 b/deps/libgit2/tests/resources/config/config16 similarity index 100% rename from tests/resources/config/config16 rename to deps/libgit2/tests/resources/config/config16 diff --git a/tests/resources/config/config17 b/deps/libgit2/tests/resources/config/config17 similarity index 100% rename from tests/resources/config/config17 rename to deps/libgit2/tests/resources/config/config17 diff --git a/tests/resources/config/config18 b/deps/libgit2/tests/resources/config/config18 similarity index 100% rename from tests/resources/config/config18 rename to deps/libgit2/tests/resources/config/config18 diff --git a/tests/resources/config/config19 b/deps/libgit2/tests/resources/config/config19 similarity index 100% rename from tests/resources/config/config19 rename to deps/libgit2/tests/resources/config/config19 diff --git a/tests/resources/config/config2 b/deps/libgit2/tests/resources/config/config2 similarity index 100% rename from tests/resources/config/config2 rename to deps/libgit2/tests/resources/config/config2 diff --git a/tests/resources/config/config20 b/deps/libgit2/tests/resources/config/config20 similarity index 100% rename from tests/resources/config/config20 rename to deps/libgit2/tests/resources/config/config20 diff --git a/tests/resources/config/config3 b/deps/libgit2/tests/resources/config/config3 similarity index 100% rename from tests/resources/config/config3 rename to deps/libgit2/tests/resources/config/config3 diff --git a/tests/resources/config/config4 b/deps/libgit2/tests/resources/config/config4 similarity index 100% rename from tests/resources/config/config4 rename to deps/libgit2/tests/resources/config/config4 diff --git a/tests/resources/config/config5 b/deps/libgit2/tests/resources/config/config5 similarity index 100% rename from tests/resources/config/config5 rename to deps/libgit2/tests/resources/config/config5 diff --git a/tests/resources/config/config6 b/deps/libgit2/tests/resources/config/config6 similarity index 100% rename from tests/resources/config/config6 rename to deps/libgit2/tests/resources/config/config6 diff --git a/tests/resources/config/config7 b/deps/libgit2/tests/resources/config/config7 similarity index 100% rename from tests/resources/config/config7 rename to deps/libgit2/tests/resources/config/config7 diff --git a/tests/resources/config/config8 b/deps/libgit2/tests/resources/config/config8 similarity index 100% rename from tests/resources/config/config8 rename to deps/libgit2/tests/resources/config/config8 diff --git a/tests/resources/config/config9 b/deps/libgit2/tests/resources/config/config9 similarity index 100% rename from tests/resources/config/config9 rename to deps/libgit2/tests/resources/config/config9 diff --git a/tests/resources/crlf/.gitted/HEAD b/deps/libgit2/tests/resources/crlf/.gitted/HEAD similarity index 100% rename from tests/resources/crlf/.gitted/HEAD rename to deps/libgit2/tests/resources/crlf/.gitted/HEAD diff --git a/tests/resources/crlf/.gitted/config b/deps/libgit2/tests/resources/crlf/.gitted/config similarity index 100% rename from tests/resources/crlf/.gitted/config rename to deps/libgit2/tests/resources/crlf/.gitted/config diff --git a/tests/resources/crlf/.gitted/objects/04/de00b358f13389948756732158eaaaefa1448c b/deps/libgit2/tests/resources/crlf/.gitted/objects/04/de00b358f13389948756732158eaaaefa1448c similarity index 100% rename from tests/resources/crlf/.gitted/objects/04/de00b358f13389948756732158eaaaefa1448c rename to deps/libgit2/tests/resources/crlf/.gitted/objects/04/de00b358f13389948756732158eaaaefa1448c diff --git a/tests/resources/crlf/.gitted/objects/0a/a76e474d259bd7c13eb726a1396c381db55c88 b/deps/libgit2/tests/resources/crlf/.gitted/objects/0a/a76e474d259bd7c13eb726a1396c381db55c88 similarity index 100% rename from tests/resources/crlf/.gitted/objects/0a/a76e474d259bd7c13eb726a1396c381db55c88 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/0a/a76e474d259bd7c13eb726a1396c381db55c88 diff --git a/tests/resources/crlf/.gitted/objects/0d/06894e14df22e066763ae906e0ed3eb79c205f b/deps/libgit2/tests/resources/crlf/.gitted/objects/0d/06894e14df22e066763ae906e0ed3eb79c205f similarity index 100% rename from tests/resources/crlf/.gitted/objects/0d/06894e14df22e066763ae906e0ed3eb79c205f rename to deps/libgit2/tests/resources/crlf/.gitted/objects/0d/06894e14df22e066763ae906e0ed3eb79c205f diff --git a/tests/resources/crlf/.gitted/objects/0f/f5a53f19bfd2b5eea1ba550295c47515678987 b/deps/libgit2/tests/resources/crlf/.gitted/objects/0f/f5a53f19bfd2b5eea1ba550295c47515678987 similarity index 100% rename from tests/resources/crlf/.gitted/objects/0f/f5a53f19bfd2b5eea1ba550295c47515678987 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/0f/f5a53f19bfd2b5eea1ba550295c47515678987 diff --git a/tests/resources/crlf/.gitted/objects/12/faf3c1ea55f572473cec9052fca468c3584ccb b/deps/libgit2/tests/resources/crlf/.gitted/objects/12/faf3c1ea55f572473cec9052fca468c3584ccb similarity index 100% rename from tests/resources/crlf/.gitted/objects/12/faf3c1ea55f572473cec9052fca468c3584ccb rename to deps/libgit2/tests/resources/crlf/.gitted/objects/12/faf3c1ea55f572473cec9052fca468c3584ccb diff --git a/tests/resources/crlf/.gitted/objects/2c/9a868cfdf8e270d0ec68164433376c68fb1789 b/deps/libgit2/tests/resources/crlf/.gitted/objects/2c/9a868cfdf8e270d0ec68164433376c68fb1789 similarity index 100% rename from tests/resources/crlf/.gitted/objects/2c/9a868cfdf8e270d0ec68164433376c68fb1789 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/2c/9a868cfdf8e270d0ec68164433376c68fb1789 diff --git a/tests/resources/crlf/.gitted/objects/38/1cfe630df902bc29271a202d3277981180e4a6 b/deps/libgit2/tests/resources/crlf/.gitted/objects/38/1cfe630df902bc29271a202d3277981180e4a6 similarity index 100% rename from tests/resources/crlf/.gitted/objects/38/1cfe630df902bc29271a202d3277981180e4a6 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/38/1cfe630df902bc29271a202d3277981180e4a6 diff --git a/tests/resources/crlf/.gitted/objects/79/9770d1cff46753a57db7a066159b5610da6e3a b/deps/libgit2/tests/resources/crlf/.gitted/objects/79/9770d1cff46753a57db7a066159b5610da6e3a similarity index 100% rename from tests/resources/crlf/.gitted/objects/79/9770d1cff46753a57db7a066159b5610da6e3a rename to deps/libgit2/tests/resources/crlf/.gitted/objects/79/9770d1cff46753a57db7a066159b5610da6e3a diff --git a/tests/resources/crlf/.gitted/objects/7c/ce67e58173e2b01f7db124ceaabe3183d19c49 b/deps/libgit2/tests/resources/crlf/.gitted/objects/7c/ce67e58173e2b01f7db124ceaabe3183d19c49 similarity index 100% rename from tests/resources/crlf/.gitted/objects/7c/ce67e58173e2b01f7db124ceaabe3183d19c49 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/7c/ce67e58173e2b01f7db124ceaabe3183d19c49 diff --git a/tests/resources/crlf/.gitted/objects/a9/a2e8913c1dbe2812fac5e6b4e0a4bd5d0d5966 b/deps/libgit2/tests/resources/crlf/.gitted/objects/a9/a2e8913c1dbe2812fac5e6b4e0a4bd5d0d5966 similarity index 100% rename from tests/resources/crlf/.gitted/objects/a9/a2e8913c1dbe2812fac5e6b4e0a4bd5d0d5966 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/a9/a2e8913c1dbe2812fac5e6b4e0a4bd5d0d5966 diff --git a/tests/resources/crlf/.gitted/objects/ba/aa042ab2976f8264e467988e6112ee518ec62e b/deps/libgit2/tests/resources/crlf/.gitted/objects/ba/aa042ab2976f8264e467988e6112ee518ec62e similarity index 100% rename from tests/resources/crlf/.gitted/objects/ba/aa042ab2976f8264e467988e6112ee518ec62e rename to deps/libgit2/tests/resources/crlf/.gitted/objects/ba/aa042ab2976f8264e467988e6112ee518ec62e diff --git a/tests/resources/crlf/.gitted/objects/dc/88e3b917de821e25962bea7ec1f55c4ce2112c b/deps/libgit2/tests/resources/crlf/.gitted/objects/dc/88e3b917de821e25962bea7ec1f55c4ce2112c similarity index 100% rename from tests/resources/crlf/.gitted/objects/dc/88e3b917de821e25962bea7ec1f55c4ce2112c rename to deps/libgit2/tests/resources/crlf/.gitted/objects/dc/88e3b917de821e25962bea7ec1f55c4ce2112c diff --git a/tests/resources/crlf/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/crlf/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/crlf/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/crlf/.gitted/objects/ea/030d3c6cec212069eca698cabaa5b4550f1511 b/deps/libgit2/tests/resources/crlf/.gitted/objects/ea/030d3c6cec212069eca698cabaa5b4550f1511 similarity index 100% rename from tests/resources/crlf/.gitted/objects/ea/030d3c6cec212069eca698cabaa5b4550f1511 rename to deps/libgit2/tests/resources/crlf/.gitted/objects/ea/030d3c6cec212069eca698cabaa5b4550f1511 diff --git a/tests/resources/crlf/.gitted/objects/ef/0dcd356d77221e9c27f4f3928ad28e80b87ceb b/deps/libgit2/tests/resources/crlf/.gitted/objects/ef/0dcd356d77221e9c27f4f3928ad28e80b87ceb similarity index 100% rename from tests/resources/crlf/.gitted/objects/ef/0dcd356d77221e9c27f4f3928ad28e80b87ceb rename to deps/libgit2/tests/resources/crlf/.gitted/objects/ef/0dcd356d77221e9c27f4f3928ad28e80b87ceb diff --git a/tests/resources/crlf/.gitted/objects/fe/085d9ace90cc675b87df15e1aeed0c3a31407f b/deps/libgit2/tests/resources/crlf/.gitted/objects/fe/085d9ace90cc675b87df15e1aeed0c3a31407f similarity index 100% rename from tests/resources/crlf/.gitted/objects/fe/085d9ace90cc675b87df15e1aeed0c3a31407f rename to deps/libgit2/tests/resources/crlf/.gitted/objects/fe/085d9ace90cc675b87df15e1aeed0c3a31407f diff --git a/tests/resources/crlf/.gitted/refs/heads/master b/deps/libgit2/tests/resources/crlf/.gitted/refs/heads/master similarity index 100% rename from tests/resources/crlf/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/crlf/.gitted/refs/heads/master diff --git a/tests/resources/crlf/.gitted/refs/heads/utf8 b/deps/libgit2/tests/resources/crlf/.gitted/refs/heads/utf8 similarity index 100% rename from tests/resources/crlf/.gitted/refs/heads/utf8 rename to deps/libgit2/tests/resources/crlf/.gitted/refs/heads/utf8 diff --git a/tests/resources/deprecated-mode.git/HEAD b/deps/libgit2/tests/resources/deprecated-mode.git/HEAD similarity index 100% rename from tests/resources/deprecated-mode.git/HEAD rename to deps/libgit2/tests/resources/deprecated-mode.git/HEAD diff --git a/tests/resources/deprecated-mode.git/config b/deps/libgit2/tests/resources/deprecated-mode.git/config similarity index 100% rename from tests/resources/deprecated-mode.git/config rename to deps/libgit2/tests/resources/deprecated-mode.git/config diff --git a/tests/resources/deprecated-mode.git/description b/deps/libgit2/tests/resources/deprecated-mode.git/description similarity index 100% rename from tests/resources/deprecated-mode.git/description rename to deps/libgit2/tests/resources/deprecated-mode.git/description diff --git a/tests/resources/deprecated-mode.git/index b/deps/libgit2/tests/resources/deprecated-mode.git/index similarity index 100% rename from tests/resources/deprecated-mode.git/index rename to deps/libgit2/tests/resources/deprecated-mode.git/index diff --git a/tests/resources/deprecated-mode.git/info/exclude b/deps/libgit2/tests/resources/deprecated-mode.git/info/exclude similarity index 100% rename from tests/resources/deprecated-mode.git/info/exclude rename to deps/libgit2/tests/resources/deprecated-mode.git/info/exclude diff --git a/tests/resources/deprecated-mode.git/objects/06/262edc257418e9987caf999f9a7a3e1547adff b/deps/libgit2/tests/resources/deprecated-mode.git/objects/06/262edc257418e9987caf999f9a7a3e1547adff similarity index 100% rename from tests/resources/deprecated-mode.git/objects/06/262edc257418e9987caf999f9a7a3e1547adff rename to deps/libgit2/tests/resources/deprecated-mode.git/objects/06/262edc257418e9987caf999f9a7a3e1547adff diff --git a/tests/resources/deprecated-mode.git/objects/08/10fb7818088ff5ac41ee49199b51473b1bd6c7 b/deps/libgit2/tests/resources/deprecated-mode.git/objects/08/10fb7818088ff5ac41ee49199b51473b1bd6c7 similarity index 100% rename from tests/resources/deprecated-mode.git/objects/08/10fb7818088ff5ac41ee49199b51473b1bd6c7 rename to deps/libgit2/tests/resources/deprecated-mode.git/objects/08/10fb7818088ff5ac41ee49199b51473b1bd6c7 diff --git a/tests/resources/deprecated-mode.git/objects/1b/05fdaa881ee45b48cbaa5e9b037d667a47745e b/deps/libgit2/tests/resources/deprecated-mode.git/objects/1b/05fdaa881ee45b48cbaa5e9b037d667a47745e similarity index 100% rename from tests/resources/deprecated-mode.git/objects/1b/05fdaa881ee45b48cbaa5e9b037d667a47745e rename to deps/libgit2/tests/resources/deprecated-mode.git/objects/1b/05fdaa881ee45b48cbaa5e9b037d667a47745e diff --git a/tests/resources/deprecated-mode.git/objects/3d/0970ec547fc41ef8a5882dde99c6adce65b021 b/deps/libgit2/tests/resources/deprecated-mode.git/objects/3d/0970ec547fc41ef8a5882dde99c6adce65b021 similarity index 100% rename from tests/resources/deprecated-mode.git/objects/3d/0970ec547fc41ef8a5882dde99c6adce65b021 rename to deps/libgit2/tests/resources/deprecated-mode.git/objects/3d/0970ec547fc41ef8a5882dde99c6adce65b021 diff --git a/tests/resources/deprecated-mode.git/refs/heads/master b/deps/libgit2/tests/resources/deprecated-mode.git/refs/heads/master similarity index 100% rename from tests/resources/deprecated-mode.git/refs/heads/master rename to deps/libgit2/tests/resources/deprecated-mode.git/refs/heads/master diff --git a/tests/resources/diff/.gitted/HEAD b/deps/libgit2/tests/resources/diff/.gitted/HEAD similarity index 100% rename from tests/resources/diff/.gitted/HEAD rename to deps/libgit2/tests/resources/diff/.gitted/HEAD diff --git a/tests/resources/diff/.gitted/config b/deps/libgit2/tests/resources/diff/.gitted/config similarity index 100% rename from tests/resources/diff/.gitted/config rename to deps/libgit2/tests/resources/diff/.gitted/config diff --git a/tests/resources/diff/.gitted/description b/deps/libgit2/tests/resources/diff/.gitted/description similarity index 100% rename from tests/resources/diff/.gitted/description rename to deps/libgit2/tests/resources/diff/.gitted/description diff --git a/tests/resources/diff/.gitted/index b/deps/libgit2/tests/resources/diff/.gitted/index similarity index 100% rename from tests/resources/diff/.gitted/index rename to deps/libgit2/tests/resources/diff/.gitted/index diff --git a/tests/resources/diff/.gitted/info/exclude b/deps/libgit2/tests/resources/diff/.gitted/info/exclude similarity index 100% rename from tests/resources/diff/.gitted/info/exclude rename to deps/libgit2/tests/resources/diff/.gitted/info/exclude diff --git a/tests/resources/diff/.gitted/logs/HEAD b/deps/libgit2/tests/resources/diff/.gitted/logs/HEAD similarity index 100% rename from tests/resources/diff/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/diff/.gitted/logs/HEAD diff --git a/tests/resources/diff/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/diff/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/diff/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/diff/.gitted/logs/refs/heads/master diff --git a/tests/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 b/deps/libgit2/tests/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 similarity index 100% rename from tests/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 rename to deps/libgit2/tests/resources/diff/.gitted/objects/29/ab7053bb4dde0298e03e2c179e890b7dd465a7 diff --git a/tests/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 b/deps/libgit2/tests/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 similarity index 100% rename from tests/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 rename to deps/libgit2/tests/resources/diff/.gitted/objects/3e/5bcbad2a68e5bc60a53b8388eea53a1a7ab847 diff --git a/tests/resources/diff/.gitted/objects/54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 b/deps/libgit2/tests/resources/diff/.gitted/objects/54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 similarity index 100% rename from tests/resources/diff/.gitted/objects/54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 rename to deps/libgit2/tests/resources/diff/.gitted/objects/54/6c735f16a3b44d9784075c2c0dab2ac9bf1989 diff --git a/tests/resources/diff/.gitted/objects/7a/9e0b02e63179929fed24f0a3e0f19168114d10 b/deps/libgit2/tests/resources/diff/.gitted/objects/7a/9e0b02e63179929fed24f0a3e0f19168114d10 similarity index 100% rename from tests/resources/diff/.gitted/objects/7a/9e0b02e63179929fed24f0a3e0f19168114d10 rename to deps/libgit2/tests/resources/diff/.gitted/objects/7a/9e0b02e63179929fed24f0a3e0f19168114d10 diff --git a/tests/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 b/deps/libgit2/tests/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 similarity index 100% rename from tests/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 rename to deps/libgit2/tests/resources/diff/.gitted/objects/7b/808f723a8ca90df319682c221187235af76693 diff --git a/tests/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c b/deps/libgit2/tests/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c similarity index 100% rename from tests/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c rename to deps/libgit2/tests/resources/diff/.gitted/objects/88/789109439c1e1c3cd45224001edee5304ed53c diff --git a/tests/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 b/deps/libgit2/tests/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 similarity index 100% rename from tests/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 rename to deps/libgit2/tests/resources/diff/.gitted/objects/cb/8294e696339863df760b2ff5d1e275bee72455 diff --git a/tests/resources/diff/.gitted/objects/d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 b/deps/libgit2/tests/resources/diff/.gitted/objects/d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 similarity index 100% rename from tests/resources/diff/.gitted/objects/d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 rename to deps/libgit2/tests/resources/diff/.gitted/objects/d7/0d245ed97ed2aa596dd1af6536e4bfdb047b69 diff --git a/tests/resources/diff/.gitted/refs/heads/master b/deps/libgit2/tests/resources/diff/.gitted/refs/heads/master similarity index 100% rename from tests/resources/diff/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/diff/.gitted/refs/heads/master diff --git a/tests/resources/diff/another.txt b/deps/libgit2/tests/resources/diff/another.txt similarity index 100% rename from tests/resources/diff/another.txt rename to deps/libgit2/tests/resources/diff/another.txt diff --git a/tests/resources/diff/readme.txt b/deps/libgit2/tests/resources/diff/readme.txt similarity index 100% rename from tests/resources/diff/readme.txt rename to deps/libgit2/tests/resources/diff/readme.txt diff --git a/tests/resources/diff_format_email/.gitted/HEAD b/deps/libgit2/tests/resources/diff_format_email/.gitted/HEAD similarity index 100% rename from tests/resources/diff_format_email/.gitted/HEAD rename to deps/libgit2/tests/resources/diff_format_email/.gitted/HEAD diff --git a/tests/resources/diff_format_email/.gitted/config b/deps/libgit2/tests/resources/diff_format_email/.gitted/config similarity index 100% rename from tests/resources/diff_format_email/.gitted/config rename to deps/libgit2/tests/resources/diff_format_email/.gitted/config diff --git a/tests/resources/diff_format_email/.gitted/index b/deps/libgit2/tests/resources/diff_format_email/.gitted/index similarity index 100% rename from tests/resources/diff_format_email/.gitted/index rename to deps/libgit2/tests/resources/diff_format_email/.gitted/index diff --git a/tests/resources/diff_format_email/.gitted/info/exclude b/deps/libgit2/tests/resources/diff_format_email/.gitted/info/exclude similarity index 100% rename from tests/resources/diff_format_email/.gitted/info/exclude rename to deps/libgit2/tests/resources/diff_format_email/.gitted/info/exclude diff --git a/tests/resources/diff_format_email/.gitted/objects/0a/37045ca6d8503e9bcf06a12abbbc8e92664cce b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/0a/37045ca6d8503e9bcf06a12abbbc8e92664cce similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/0a/37045ca6d8503e9bcf06a12abbbc8e92664cce rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/0a/37045ca6d8503e9bcf06a12abbbc8e92664cce diff --git a/tests/resources/diff_format_email/.gitted/objects/10/808fe9c9be5a190c0ba68d1a002233fb363508 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/10/808fe9c9be5a190c0ba68d1a002233fb363508 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/10/808fe9c9be5a190c0ba68d1a002233fb363508 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/10/808fe9c9be5a190c0ba68d1a002233fb363508 diff --git a/tests/resources/diff_format_email/.gitted/objects/13/ecf3d572dbc5e5b32c8ba067d1d1e0939572e8 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/13/ecf3d572dbc5e5b32c8ba067d1d1e0939572e8 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/13/ecf3d572dbc5e5b32c8ba067d1d1e0939572e8 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/13/ecf3d572dbc5e5b32c8ba067d1d1e0939572e8 diff --git a/tests/resources/diff_format_email/.gitted/objects/17/cfad36e93db7706b16bef5ef842ba1e5ca06ab b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/17/cfad36e93db7706b16bef5ef842ba1e5ca06ab similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/17/cfad36e93db7706b16bef5ef842ba1e5ca06ab rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/17/cfad36e93db7706b16bef5ef842ba1e5ca06ab diff --git a/tests/resources/diff_format_email/.gitted/objects/1a/9932083f96b0db42552103d40076f62fa8235e b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1a/9932083f96b0db42552103d40076f62fa8235e similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/1a/9932083f96b0db42552103d40076f62fa8235e rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1a/9932083f96b0db42552103d40076f62fa8235e diff --git a/tests/resources/diff_format_email/.gitted/objects/1a/e3be57f869687d983066a0f5d2aaea1b82ddc5 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1a/e3be57f869687d983066a0f5d2aaea1b82ddc5 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/1a/e3be57f869687d983066a0f5d2aaea1b82ddc5 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1a/e3be57f869687d983066a0f5d2aaea1b82ddc5 diff --git a/tests/resources/diff_format_email/.gitted/objects/1b/525b0a6c5218b069b601ce91fce8eaf0a54e20 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1b/525b0a6c5218b069b601ce91fce8eaf0a54e20 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/1b/525b0a6c5218b069b601ce91fce8eaf0a54e20 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1b/525b0a6c5218b069b601ce91fce8eaf0a54e20 diff --git a/tests/resources/diff_format_email/.gitted/objects/1e/82c3b234e37da82e5b23e0e2a70bca68ee12c6 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1e/82c3b234e37da82e5b23e0e2a70bca68ee12c6 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/1e/82c3b234e37da82e5b23e0e2a70bca68ee12c6 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1e/82c3b234e37da82e5b23e0e2a70bca68ee12c6 diff --git a/tests/resources/diff_format_email/.gitted/objects/1e/875da9b1e67f853b2eec3e202c21c867097234 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1e/875da9b1e67f853b2eec3e202c21c867097234 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/1e/875da9b1e67f853b2eec3e202c21c867097234 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/1e/875da9b1e67f853b2eec3e202c21c867097234 diff --git a/tests/resources/diff_format_email/.gitted/objects/20/609dbbc32bbfc827528eec3fcea2d024e6dd8a b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/20/609dbbc32bbfc827528eec3fcea2d024e6dd8a similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/20/609dbbc32bbfc827528eec3fcea2d024e6dd8a rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/20/609dbbc32bbfc827528eec3fcea2d024e6dd8a diff --git a/tests/resources/diff_format_email/.gitted/objects/23/f92946d3f38bd090f700d3e8e7b728ffc58264 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/23/f92946d3f38bd090f700d3e8e7b728ffc58264 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/23/f92946d3f38bd090f700d3e8e7b728ffc58264 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/23/f92946d3f38bd090f700d3e8e7b728ffc58264 diff --git a/tests/resources/diff_format_email/.gitted/objects/24/97c5249408494e66e25070a8c74e49eaeeb6c3 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/24/97c5249408494e66e25070a8c74e49eaeeb6c3 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/24/97c5249408494e66e25070a8c74e49eaeeb6c3 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/24/97c5249408494e66e25070a8c74e49eaeeb6c3 diff --git a/tests/resources/diff_format_email/.gitted/objects/24/9a4263be23b4d1c02484cb840b6eca4c6cf74d b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/24/9a4263be23b4d1c02484cb840b6eca4c6cf74d similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/24/9a4263be23b4d1c02484cb840b6eca4c6cf74d rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/24/9a4263be23b4d1c02484cb840b6eca4c6cf74d diff --git a/tests/resources/diff_format_email/.gitted/objects/25/2a3e19fd2c6fb7b20c111142c5bd5fb9ea6b8e b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/25/2a3e19fd2c6fb7b20c111142c5bd5fb9ea6b8e similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/25/2a3e19fd2c6fb7b20c111142c5bd5fb9ea6b8e rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/25/2a3e19fd2c6fb7b20c111142c5bd5fb9ea6b8e diff --git a/tests/resources/diff_format_email/.gitted/objects/27/93544db9060bab4f9169e5b89c82f9fa7c7fa6 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/27/93544db9060bab4f9169e5b89c82f9fa7c7fa6 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/27/93544db9060bab4f9169e5b89c82f9fa7c7fa6 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/27/93544db9060bab4f9169e5b89c82f9fa7c7fa6 diff --git a/tests/resources/diff_format_email/.gitted/objects/29/1f1ff3cbb9a6f153678d9657679e3d4bf257df b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/29/1f1ff3cbb9a6f153678d9657679e3d4bf257df similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/29/1f1ff3cbb9a6f153678d9657679e3d4bf257df rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/29/1f1ff3cbb9a6f153678d9657679e3d4bf257df diff --git a/tests/resources/diff_format_email/.gitted/objects/2f/f7b811eee62a73959350b1f7349f6f4d0c882d b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/2f/f7b811eee62a73959350b1f7349f6f4d0c882d similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/2f/f7b811eee62a73959350b1f7349f6f4d0c882d rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/2f/f7b811eee62a73959350b1f7349f6f4d0c882d diff --git a/tests/resources/diff_format_email/.gitted/objects/39/91dce9e71a0641ca49a6a4eea6c9e7ff402ed4 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/39/91dce9e71a0641ca49a6a4eea6c9e7ff402ed4 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/39/91dce9e71a0641ca49a6a4eea6c9e7ff402ed4 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/39/91dce9e71a0641ca49a6a4eea6c9e7ff402ed4 diff --git a/tests/resources/diff_format_email/.gitted/objects/45/eef2a9317e179984649de247269e38cd5d99cf b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/45/eef2a9317e179984649de247269e38cd5d99cf similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/45/eef2a9317e179984649de247269e38cd5d99cf rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/45/eef2a9317e179984649de247269e38cd5d99cf diff --git a/tests/resources/diff_format_email/.gitted/objects/4a/076277b884c519a932be67e346db2ac80a98fa b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4a/076277b884c519a932be67e346db2ac80a98fa similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/4a/076277b884c519a932be67e346db2ac80a98fa rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4a/076277b884c519a932be67e346db2ac80a98fa diff --git a/tests/resources/diff_format_email/.gitted/objects/4c/3bd7182ad66ea7aa20ba47ae82812b710d169c b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4c/3bd7182ad66ea7aa20ba47ae82812b710d169c similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/4c/3bd7182ad66ea7aa20ba47ae82812b710d169c rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4c/3bd7182ad66ea7aa20ba47ae82812b710d169c diff --git a/tests/resources/diff_format_email/.gitted/objects/4c/a10087e696d2ba78d07b146a118e9a7096ed4f b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4c/a10087e696d2ba78d07b146a118e9a7096ed4f similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/4c/a10087e696d2ba78d07b146a118e9a7096ed4f rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4c/a10087e696d2ba78d07b146a118e9a7096ed4f diff --git a/tests/resources/diff_format_email/.gitted/objects/4d/de2b17d1c982cd988f21d24350a214401e4a1e b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4d/de2b17d1c982cd988f21d24350a214401e4a1e similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/4d/de2b17d1c982cd988f21d24350a214401e4a1e rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4d/de2b17d1c982cd988f21d24350a214401e4a1e diff --git a/tests/resources/diff_format_email/.gitted/objects/4f/31e0248ac800a1edc78b74f74e86f5eba90e87 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4f/31e0248ac800a1edc78b74f74e86f5eba90e87 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/4f/31e0248ac800a1edc78b74f74e86f5eba90e87 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/4f/31e0248ac800a1edc78b74f74e86f5eba90e87 diff --git a/tests/resources/diff_format_email/.gitted/objects/50/17c9456d013b2c7712d29aab73b681c880f509 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/50/17c9456d013b2c7712d29aab73b681c880f509 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/50/17c9456d013b2c7712d29aab73b681c880f509 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/50/17c9456d013b2c7712d29aab73b681c880f509 diff --git a/tests/resources/diff_format_email/.gitted/objects/50/438cfa585c1d15cf3650ed1bf641da937cc261 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/50/438cfa585c1d15cf3650ed1bf641da937cc261 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/50/438cfa585c1d15cf3650ed1bf641da937cc261 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/50/438cfa585c1d15cf3650ed1bf641da937cc261 diff --git a/tests/resources/diff_format_email/.gitted/objects/52/c3cd1ff6234b95fecbaf9ef13624da17697b8d b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/52/c3cd1ff6234b95fecbaf9ef13624da17697b8d similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/52/c3cd1ff6234b95fecbaf9ef13624da17697b8d rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/52/c3cd1ff6234b95fecbaf9ef13624da17697b8d diff --git a/tests/resources/diff_format_email/.gitted/objects/55/0d730ba1b8c4937ea170b37c7ba91d792c0aaa b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/55/0d730ba1b8c4937ea170b37c7ba91d792c0aaa similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/55/0d730ba1b8c4937ea170b37c7ba91d792c0aaa rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/55/0d730ba1b8c4937ea170b37c7ba91d792c0aaa diff --git a/tests/resources/diff_format_email/.gitted/objects/66/81f1844dc677e5ff07ffd993461f5c441e6af5 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/66/81f1844dc677e5ff07ffd993461f5c441e6af5 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/66/81f1844dc677e5ff07ffd993461f5c441e6af5 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/66/81f1844dc677e5ff07ffd993461f5c441e6af5 diff --git a/tests/resources/diff_format_email/.gitted/objects/69/ddefb5c245e2f9ee62bd4cabd8ebe60a01e448 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/69/ddefb5c245e2f9ee62bd4cabd8ebe60a01e448 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/69/ddefb5c245e2f9ee62bd4cabd8ebe60a01e448 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/69/ddefb5c245e2f9ee62bd4cabd8ebe60a01e448 diff --git a/tests/resources/diff_format_email/.gitted/objects/6b/6c2067c6d968f9bddb9b900ee1ab7e5b067430 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6b/6c2067c6d968f9bddb9b900ee1ab7e5b067430 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/6b/6c2067c6d968f9bddb9b900ee1ab7e5b067430 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6b/6c2067c6d968f9bddb9b900ee1ab7e5b067430 diff --git a/tests/resources/diff_format_email/.gitted/objects/6b/ef49b206b29d9c46456e075722cd1a48b41e4c b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6b/ef49b206b29d9c46456e075722cd1a48b41e4c similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/6b/ef49b206b29d9c46456e075722cd1a48b41e4c rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6b/ef49b206b29d9c46456e075722cd1a48b41e4c diff --git a/tests/resources/diff_format_email/.gitted/objects/6c/15659c036377aebf3b4569959ca1f5bedb551f b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6c/15659c036377aebf3b4569959ca1f5bedb551f similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/6c/15659c036377aebf3b4569959ca1f5bedb551f rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6c/15659c036377aebf3b4569959ca1f5bedb551f diff --git a/tests/resources/diff_format_email/.gitted/objects/6e/05acc5a5dab507d91a0a0cc0fb05a3dd98892d b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6e/05acc5a5dab507d91a0a0cc0fb05a3dd98892d similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/6e/05acc5a5dab507d91a0a0cc0fb05a3dd98892d rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/6e/05acc5a5dab507d91a0a0cc0fb05a3dd98892d diff --git a/tests/resources/diff_format_email/.gitted/objects/74/6d514eae0c330261d37940cab33aa97fefbd93 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/74/6d514eae0c330261d37940cab33aa97fefbd93 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/74/6d514eae0c330261d37940cab33aa97fefbd93 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/74/6d514eae0c330261d37940cab33aa97fefbd93 diff --git a/tests/resources/diff_format_email/.gitted/objects/74/a4d5394ebcfa7e9f445680897dfbc96586bc86 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/74/a4d5394ebcfa7e9f445680897dfbc96586bc86 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/74/a4d5394ebcfa7e9f445680897dfbc96586bc86 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/74/a4d5394ebcfa7e9f445680897dfbc96586bc86 diff --git a/tests/resources/diff_format_email/.gitted/objects/77/d0a3ed37236a7941d564f08d68d3b36462d231 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/77/d0a3ed37236a7941d564f08d68d3b36462d231 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/77/d0a3ed37236a7941d564f08d68d3b36462d231 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/77/d0a3ed37236a7941d564f08d68d3b36462d231 diff --git a/tests/resources/diff_format_email/.gitted/objects/7a/de76dd34bba4733cf9878079f9fd4a456a9189 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7a/de76dd34bba4733cf9878079f9fd4a456a9189 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/7a/de76dd34bba4733cf9878079f9fd4a456a9189 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7a/de76dd34bba4733cf9878079f9fd4a456a9189 diff --git a/tests/resources/diff_format_email/.gitted/objects/7a/ff11da95ca2be0bfb74b06e7cc1c480559dbe7 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7a/ff11da95ca2be0bfb74b06e7cc1c480559dbe7 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/7a/ff11da95ca2be0bfb74b06e7cc1c480559dbe7 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7a/ff11da95ca2be0bfb74b06e7cc1c480559dbe7 diff --git a/tests/resources/diff_format_email/.gitted/objects/7f/854619451620f7fbcec7ea171675e615ce92b6 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7f/854619451620f7fbcec7ea171675e615ce92b6 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/7f/854619451620f7fbcec7ea171675e615ce92b6 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/7f/854619451620f7fbcec7ea171675e615ce92b6 diff --git a/tests/resources/diff_format_email/.gitted/objects/87/3806f6f27e631eb0b23e4b56bea2bfac14a373 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/87/3806f6f27e631eb0b23e4b56bea2bfac14a373 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/87/3806f6f27e631eb0b23e4b56bea2bfac14a373 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/87/3806f6f27e631eb0b23e4b56bea2bfac14a373 diff --git a/tests/resources/diff_format_email/.gitted/objects/89/47a46e2097638ca6040ad4877246f4186ec3bd b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/89/47a46e2097638ca6040ad4877246f4186ec3bd similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/89/47a46e2097638ca6040ad4877246f4186ec3bd rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/89/47a46e2097638ca6040ad4877246f4186ec3bd diff --git a/tests/resources/diff_format_email/.gitted/objects/89/7d3af16ca9e420cd071b1c4541bd2b91d04c8c b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/89/7d3af16ca9e420cd071b1c4541bd2b91d04c8c similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/89/7d3af16ca9e420cd071b1c4541bd2b91d04c8c rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/89/7d3af16ca9e420cd071b1c4541bd2b91d04c8c diff --git a/tests/resources/diff_format_email/.gitted/objects/8d/7523f6fcb2404257889abe0d96f093d9f524f9 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/8d/7523f6fcb2404257889abe0d96f093d9f524f9 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/8d/7523f6fcb2404257889abe0d96f093d9f524f9 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/8d/7523f6fcb2404257889abe0d96f093d9f524f9 diff --git a/tests/resources/diff_format_email/.gitted/objects/8d/fa038554d5b682a51bda8ee3038cee6c63be76 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/8d/fa038554d5b682a51bda8ee3038cee6c63be76 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/8d/fa038554d5b682a51bda8ee3038cee6c63be76 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/8d/fa038554d5b682a51bda8ee3038cee6c63be76 diff --git a/tests/resources/diff_format_email/.gitted/objects/92/64b96c6d104d0e07ae33d3007b6a48246c6f92 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/92/64b96c6d104d0e07ae33d3007b6a48246c6f92 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/92/64b96c6d104d0e07ae33d3007b6a48246c6f92 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/92/64b96c6d104d0e07ae33d3007b6a48246c6f92 diff --git a/tests/resources/diff_format_email/.gitted/objects/94/350226b3aa14efac831c803a51f7a09f3fc31a b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/350226b3aa14efac831c803a51f7a09f3fc31a similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/94/350226b3aa14efac831c803a51f7a09f3fc31a rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/350226b3aa14efac831c803a51f7a09f3fc31a diff --git a/tests/resources/diff_format_email/.gitted/objects/94/75e21dcbc515af8f641576400e4b450e5f4c03 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/75e21dcbc515af8f641576400e4b450e5f4c03 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/94/75e21dcbc515af8f641576400e4b450e5f4c03 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/75e21dcbc515af8f641576400e4b450e5f4c03 diff --git a/tests/resources/diff_format_email/.gitted/objects/94/aaae8954e8bb613de636071da663a621695911 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/aaae8954e8bb613de636071da663a621695911 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/94/aaae8954e8bb613de636071da663a621695911 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/94/aaae8954e8bb613de636071da663a621695911 diff --git a/tests/resources/diff_format_email/.gitted/objects/9a/2d780ac2ea0aeabdb9d2a876e6bbfff17b2c44 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/2d780ac2ea0aeabdb9d2a876e6bbfff17b2c44 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/9a/2d780ac2ea0aeabdb9d2a876e6bbfff17b2c44 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/2d780ac2ea0aeabdb9d2a876e6bbfff17b2c44 diff --git a/tests/resources/diff_format_email/.gitted/objects/9a/c0329b8b7a4046210d8b8b02ac02055667de63 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/c0329b8b7a4046210d8b8b02ac02055667de63 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/9a/c0329b8b7a4046210d8b8b02ac02055667de63 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/c0329b8b7a4046210d8b8b02ac02055667de63 diff --git a/tests/resources/diff_format_email/.gitted/objects/9a/c35ff15cd8864aeafd889e4826a3150f0b06c4 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/c35ff15cd8864aeafd889e4826a3150f0b06c4 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/9a/c35ff15cd8864aeafd889e4826a3150f0b06c4 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9a/c35ff15cd8864aeafd889e4826a3150f0b06c4 diff --git a/tests/resources/diff_format_email/.gitted/objects/9b/997daca2a0beb5cc44b32c64f100a9a26d4d4b b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9b/997daca2a0beb5cc44b32c64f100a9a26d4d4b similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/9b/997daca2a0beb5cc44b32c64f100a9a26d4d4b rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/9b/997daca2a0beb5cc44b32c64f100a9a26d4d4b diff --git a/tests/resources/diff_format_email/.gitted/objects/a3/ac918e3a6604294b239cb956363e83d71abb3b b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a3/ac918e3a6604294b239cb956363e83d71abb3b similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/a3/ac918e3a6604294b239cb956363e83d71abb3b rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a3/ac918e3a6604294b239cb956363e83d71abb3b diff --git a/tests/resources/diff_format_email/.gitted/objects/a5/ac978d4f2a1784f847f41223a34c3e78934238 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a5/ac978d4f2a1784f847f41223a34c3e78934238 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/a5/ac978d4f2a1784f847f41223a34c3e78934238 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a5/ac978d4f2a1784f847f41223a34c3e78934238 diff --git a/tests/resources/diff_format_email/.gitted/objects/a7/29eab45c84563135e8631d4010230bc0479f1f b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a7/29eab45c84563135e8631d4010230bc0479f1f similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/a7/29eab45c84563135e8631d4010230bc0479f1f rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a7/29eab45c84563135e8631d4010230bc0479f1f diff --git a/tests/resources/diff_format_email/.gitted/objects/a9/7157a0d0571698728b6f2f7675b456c98c5961 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a9/7157a0d0571698728b6f2f7675b456c98c5961 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/a9/7157a0d0571698728b6f2f7675b456c98c5961 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/a9/7157a0d0571698728b6f2f7675b456c98c5961 diff --git a/tests/resources/diff_format_email/.gitted/objects/af/8f41d0cb7a3079a8f8e231ea2ab8b97837ce13 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/af/8f41d0cb7a3079a8f8e231ea2ab8b97837ce13 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/af/8f41d0cb7a3079a8f8e231ea2ab8b97837ce13 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/af/8f41d0cb7a3079a8f8e231ea2ab8b97837ce13 diff --git a/tests/resources/diff_format_email/.gitted/objects/b0/5cecf1949d192b6df852b3f71853ef820ee235 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/b0/5cecf1949d192b6df852b3f71853ef820ee235 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/b0/5cecf1949d192b6df852b3f71853ef820ee235 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/b0/5cecf1949d192b6df852b3f71853ef820ee235 diff --git a/tests/resources/diff_format_email/.gitted/objects/b4/f457c219dbb3517be908d4e70f0ada2fd8b8f9 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/b4/f457c219dbb3517be908d4e70f0ada2fd8b8f9 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/b4/f457c219dbb3517be908d4e70f0ada2fd8b8f9 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/b4/f457c219dbb3517be908d4e70f0ada2fd8b8f9 diff --git a/tests/resources/diff_format_email/.gitted/objects/bd/474b2519cc15eab801ff851cc7d50f0dee49a1 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/bd/474b2519cc15eab801ff851cc7d50f0dee49a1 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/bd/474b2519cc15eab801ff851cc7d50f0dee49a1 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/bd/474b2519cc15eab801ff851cc7d50f0dee49a1 diff --git a/tests/resources/diff_format_email/.gitted/objects/bd/f7ba6bc5c4e57ca6595928dcbe6753c8a663ff b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/bd/f7ba6bc5c4e57ca6595928dcbe6753c8a663ff similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/bd/f7ba6bc5c4e57ca6595928dcbe6753c8a663ff rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/bd/f7ba6bc5c4e57ca6595928dcbe6753c8a663ff diff --git a/tests/resources/diff_format_email/.gitted/objects/cb/a89408dc016f4caddb6dc886fcb58f587a78df b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cb/a89408dc016f4caddb6dc886fcb58f587a78df similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/cb/a89408dc016f4caddb6dc886fcb58f587a78df rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cb/a89408dc016f4caddb6dc886fcb58f587a78df diff --git a/tests/resources/diff_format_email/.gitted/objects/cd/471f0d8770371e1bc78bcbb38db4c7e4106bd2 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cd/471f0d8770371e1bc78bcbb38db4c7e4106bd2 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/cd/471f0d8770371e1bc78bcbb38db4c7e4106bd2 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cd/471f0d8770371e1bc78bcbb38db4c7e4106bd2 diff --git a/tests/resources/diff_format_email/.gitted/objects/cd/ed722d05305c6b181f188c118d2d9810f39bb8 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cd/ed722d05305c6b181f188c118d2d9810f39bb8 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/cd/ed722d05305c6b181f188c118d2d9810f39bb8 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/cd/ed722d05305c6b181f188c118d2d9810f39bb8 diff --git a/tests/resources/diff_format_email/.gitted/objects/ce/2792fcae8d704a56901754a0583a7418a21d8a b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ce/2792fcae8d704a56901754a0583a7418a21d8a similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/ce/2792fcae8d704a56901754a0583a7418a21d8a rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ce/2792fcae8d704a56901754a0583a7418a21d8a diff --git a/tests/resources/diff_format_email/.gitted/objects/d1/4aa252e52a709d03a3d3d0d965e177eb0a674e b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/d1/4aa252e52a709d03a3d3d0d965e177eb0a674e similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/d1/4aa252e52a709d03a3d3d0d965e177eb0a674e rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/d1/4aa252e52a709d03a3d3d0d965e177eb0a674e diff --git a/tests/resources/diff_format_email/.gitted/objects/d7/bb447df12c6a8aba8727005482fb211f11297a b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/d7/bb447df12c6a8aba8727005482fb211f11297a similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/d7/bb447df12c6a8aba8727005482fb211f11297a rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/d7/bb447df12c6a8aba8727005482fb211f11297a diff --git a/tests/resources/diff_format_email/.gitted/objects/db/e8727e4806ae88ccc3f0755cae8f8cb7efa2cc b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/db/e8727e4806ae88ccc3f0755cae8f8cb7efa2cc similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/db/e8727e4806ae88ccc3f0755cae8f8cb7efa2cc rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/db/e8727e4806ae88ccc3f0755cae8f8cb7efa2cc diff --git a/tests/resources/diff_format_email/.gitted/objects/e1/2af77c510e8ce4c261a3758736109c2c2dd1f0 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e1/2af77c510e8ce4c261a3758736109c2c2dd1f0 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/e1/2af77c510e8ce4c261a3758736109c2c2dd1f0 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e1/2af77c510e8ce4c261a3758736109c2c2dd1f0 diff --git a/tests/resources/diff_format_email/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/diff_format_email/.gitted/objects/e9/091231467304a5ef112de02361d795ef051ee1 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e9/091231467304a5ef112de02361d795ef051ee1 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/e9/091231467304a5ef112de02361d795ef051ee1 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/e9/091231467304a5ef112de02361d795ef051ee1 diff --git a/tests/resources/diff_format_email/.gitted/objects/ee/251372f131d82e575f16fe51c778406d88f8c2 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ee/251372f131d82e575f16fe51c778406d88f8c2 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/ee/251372f131d82e575f16fe51c778406d88f8c2 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ee/251372f131d82e575f16fe51c778406d88f8c2 diff --git a/tests/resources/diff_format_email/.gitted/objects/f3/d35bd592fefd8280fc0c302fa9f27dbdd721a3 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f3/d35bd592fefd8280fc0c302fa9f27dbdd721a3 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/f3/d35bd592fefd8280fc0c302fa9f27dbdd721a3 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f3/d35bd592fefd8280fc0c302fa9f27dbdd721a3 diff --git a/tests/resources/diff_format_email/.gitted/objects/f4/07be01334e07bfb8f57cd2078f0ee3eb61e085 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f4/07be01334e07bfb8f57cd2078f0ee3eb61e085 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/f4/07be01334e07bfb8f57cd2078f0ee3eb61e085 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f4/07be01334e07bfb8f57cd2078f0ee3eb61e085 diff --git a/tests/resources/diff_format_email/.gitted/objects/f9/e215d309644e24fa50d6bd6e6eedba166e56bc b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f9/e215d309644e24fa50d6bd6e6eedba166e56bc similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/f9/e215d309644e24fa50d6bd6e6eedba166e56bc rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/f9/e215d309644e24fa50d6bd6e6eedba166e56bc diff --git a/tests/resources/diff_format_email/.gitted/objects/fc/a0c10eb9f1af6494a448d5733d283f5232a514 b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/fc/a0c10eb9f1af6494a448d5733d283f5232a514 similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/fc/a0c10eb9f1af6494a448d5733d283f5232a514 rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/fc/a0c10eb9f1af6494a448d5733d283f5232a514 diff --git a/tests/resources/diff_format_email/.gitted/objects/ff/8d35b41494f7f0dc92f95d67f54fff274d3fcb b/deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ff/8d35b41494f7f0dc92f95d67f54fff274d3fcb similarity index 100% rename from tests/resources/diff_format_email/.gitted/objects/ff/8d35b41494f7f0dc92f95d67f54fff274d3fcb rename to deps/libgit2/tests/resources/diff_format_email/.gitted/objects/ff/8d35b41494f7f0dc92f95d67f54fff274d3fcb diff --git a/tests/resources/diff_format_email/.gitted/refs/heads/binary b/deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/binary similarity index 100% rename from tests/resources/diff_format_email/.gitted/refs/heads/binary rename to deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/binary diff --git a/tests/resources/diff_format_email/.gitted/refs/heads/master b/deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/master similarity index 100% rename from tests/resources/diff_format_email/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/master diff --git a/tests/resources/diff_format_email/.gitted/refs/heads/multihunk b/deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/multihunk similarity index 100% rename from tests/resources/diff_format_email/.gitted/refs/heads/multihunk rename to deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/multihunk diff --git a/tests/resources/diff_format_email/.gitted/refs/heads/rename b/deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/rename similarity index 100% rename from tests/resources/diff_format_email/.gitted/refs/heads/rename rename to deps/libgit2/tests/resources/diff_format_email/.gitted/refs/heads/rename diff --git a/tests/resources/diff_format_email/file1.txt.renamed b/deps/libgit2/tests/resources/diff_format_email/file1.txt.renamed similarity index 100% rename from tests/resources/diff_format_email/file1.txt.renamed rename to deps/libgit2/tests/resources/diff_format_email/file1.txt.renamed diff --git a/tests/resources/diff_format_email/file2.txt b/deps/libgit2/tests/resources/diff_format_email/file2.txt similarity index 100% rename from tests/resources/diff_format_email/file2.txt rename to deps/libgit2/tests/resources/diff_format_email/file2.txt diff --git a/tests/resources/diff_format_email/file3.txt b/deps/libgit2/tests/resources/diff_format_email/file3.txt similarity index 100% rename from tests/resources/diff_format_email/file3.txt rename to deps/libgit2/tests/resources/diff_format_email/file3.txt diff --git a/tests/resources/duplicate.git/COMMIT_EDITMSG b/deps/libgit2/tests/resources/duplicate.git/COMMIT_EDITMSG similarity index 100% rename from tests/resources/duplicate.git/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/duplicate.git/COMMIT_EDITMSG diff --git a/tests/resources/duplicate.git/HEAD b/deps/libgit2/tests/resources/duplicate.git/HEAD similarity index 100% rename from tests/resources/duplicate.git/HEAD rename to deps/libgit2/tests/resources/duplicate.git/HEAD diff --git a/tests/resources/duplicate.git/config b/deps/libgit2/tests/resources/duplicate.git/config similarity index 100% rename from tests/resources/duplicate.git/config rename to deps/libgit2/tests/resources/duplicate.git/config diff --git a/tests/resources/duplicate.git/description b/deps/libgit2/tests/resources/duplicate.git/description similarity index 100% rename from tests/resources/duplicate.git/description rename to deps/libgit2/tests/resources/duplicate.git/description diff --git a/tests/resources/duplicate.git/index b/deps/libgit2/tests/resources/duplicate.git/index similarity index 100% rename from tests/resources/duplicate.git/index rename to deps/libgit2/tests/resources/duplicate.git/index diff --git a/tests/resources/duplicate.git/info/exclude b/deps/libgit2/tests/resources/duplicate.git/info/exclude similarity index 100% rename from tests/resources/duplicate.git/info/exclude rename to deps/libgit2/tests/resources/duplicate.git/info/exclude diff --git a/tests/resources/duplicate.git/info/refs b/deps/libgit2/tests/resources/duplicate.git/info/refs similarity index 100% rename from tests/resources/duplicate.git/info/refs rename to deps/libgit2/tests/resources/duplicate.git/info/refs diff --git a/tests/resources/duplicate.git/logs/HEAD b/deps/libgit2/tests/resources/duplicate.git/logs/HEAD similarity index 100% rename from tests/resources/duplicate.git/logs/HEAD rename to deps/libgit2/tests/resources/duplicate.git/logs/HEAD diff --git a/tests/resources/duplicate.git/logs/refs/heads/master b/deps/libgit2/tests/resources/duplicate.git/logs/refs/heads/master similarity index 100% rename from tests/resources/duplicate.git/logs/refs/heads/master rename to deps/libgit2/tests/resources/duplicate.git/logs/refs/heads/master diff --git a/tests/resources/duplicate.git/objects/03/8d718da6a1ebbc6a7780a96ed75a70cc2ad6e2 b/deps/libgit2/tests/resources/duplicate.git/objects/03/8d718da6a1ebbc6a7780a96ed75a70cc2ad6e2 similarity index 100% rename from tests/resources/duplicate.git/objects/03/8d718da6a1ebbc6a7780a96ed75a70cc2ad6e2 rename to deps/libgit2/tests/resources/duplicate.git/objects/03/8d718da6a1ebbc6a7780a96ed75a70cc2ad6e2 diff --git a/tests/resources/duplicate.git/objects/0d/deadede9e6d6ccddce0ee1e5749eed0485e5ea b/deps/libgit2/tests/resources/duplicate.git/objects/0d/deadede9e6d6ccddce0ee1e5749eed0485e5ea similarity index 100% rename from tests/resources/duplicate.git/objects/0d/deadede9e6d6ccddce0ee1e5749eed0485e5ea rename to deps/libgit2/tests/resources/duplicate.git/objects/0d/deadede9e6d6ccddce0ee1e5749eed0485e5ea diff --git a/tests/resources/duplicate.git/objects/ce/013625030ba8dba906f756967f9e9ca394464a b/deps/libgit2/tests/resources/duplicate.git/objects/ce/013625030ba8dba906f756967f9e9ca394464a similarity index 100% rename from tests/resources/duplicate.git/objects/ce/013625030ba8dba906f756967f9e9ca394464a rename to deps/libgit2/tests/resources/duplicate.git/objects/ce/013625030ba8dba906f756967f9e9ca394464a diff --git a/tests/resources/duplicate.git/objects/info/packs b/deps/libgit2/tests/resources/duplicate.git/objects/info/packs similarity index 100% rename from tests/resources/duplicate.git/objects/info/packs rename to deps/libgit2/tests/resources/duplicate.git/objects/info/packs diff --git a/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.idx b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.idx similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.idx rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.idx diff --git a/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.pack b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.pack similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.pack rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-29a4896f0a0b9c9947b0927c57a5c03dcae052e3.pack diff --git a/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.idx b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.idx similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.idx rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.idx diff --git a/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.pack b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.pack similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.pack rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-b18eeacbd65cbd30a365d7564b45a468e8bd43d6.pack diff --git a/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.idx b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.idx similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.idx rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.idx diff --git a/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.pack b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.pack similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.pack rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-e87994ad581c9af946de0eb890175c08cd005f38.pack diff --git a/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.idx b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.idx similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.idx rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.idx diff --git a/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.pack b/deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.pack similarity index 100% rename from tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.pack rename to deps/libgit2/tests/resources/duplicate.git/objects/pack/pack-f4ef1aa326265de7d05018ee51acc0a8717fe1ea.pack diff --git a/tests/resources/duplicate.git/packed-refs b/deps/libgit2/tests/resources/duplicate.git/packed-refs similarity index 100% rename from tests/resources/duplicate.git/packed-refs rename to deps/libgit2/tests/resources/duplicate.git/packed-refs diff --git a/tests/resources/duplicate.git/refs/heads/dummy-marker.txt b/deps/libgit2/tests/resources/duplicate.git/refs/heads/dummy-marker.txt similarity index 100% rename from tests/resources/duplicate.git/refs/heads/dummy-marker.txt rename to deps/libgit2/tests/resources/duplicate.git/refs/heads/dummy-marker.txt diff --git a/tests/resources/empty_bare.git/HEAD b/deps/libgit2/tests/resources/empty_bare.git/HEAD similarity index 100% rename from tests/resources/empty_bare.git/HEAD rename to deps/libgit2/tests/resources/empty_bare.git/HEAD diff --git a/tests/resources/empty_bare.git/config b/deps/libgit2/tests/resources/empty_bare.git/config similarity index 100% rename from tests/resources/empty_bare.git/config rename to deps/libgit2/tests/resources/empty_bare.git/config diff --git a/tests/resources/empty_bare.git/description b/deps/libgit2/tests/resources/empty_bare.git/description similarity index 100% rename from tests/resources/empty_bare.git/description rename to deps/libgit2/tests/resources/empty_bare.git/description diff --git a/tests/resources/empty_bare.git/info/exclude b/deps/libgit2/tests/resources/empty_bare.git/info/exclude similarity index 100% rename from tests/resources/empty_bare.git/info/exclude rename to deps/libgit2/tests/resources/empty_bare.git/info/exclude diff --git a/tests/resources/empty_bare.git/objects/info/dummy-marker.txt b/deps/libgit2/tests/resources/empty_bare.git/objects/info/dummy-marker.txt similarity index 100% rename from tests/resources/empty_bare.git/objects/info/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_bare.git/objects/info/dummy-marker.txt diff --git a/tests/resources/empty_bare.git/objects/pack/dummy-marker.txt b/deps/libgit2/tests/resources/empty_bare.git/objects/pack/dummy-marker.txt similarity index 100% rename from tests/resources/empty_bare.git/objects/pack/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_bare.git/objects/pack/dummy-marker.txt diff --git a/tests/resources/empty_bare.git/refs/heads/dummy-marker.txt b/deps/libgit2/tests/resources/empty_bare.git/refs/heads/dummy-marker.txt similarity index 100% rename from tests/resources/empty_bare.git/refs/heads/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_bare.git/refs/heads/dummy-marker.txt diff --git a/tests/resources/empty_bare.git/refs/tags/dummy-marker.txt b/deps/libgit2/tests/resources/empty_bare.git/refs/tags/dummy-marker.txt similarity index 100% rename from tests/resources/empty_bare.git/refs/tags/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_bare.git/refs/tags/dummy-marker.txt diff --git a/tests/resources/empty_standard_repo/.gitted/HEAD b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/HEAD similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/HEAD rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/HEAD diff --git a/tests/resources/empty_standard_repo/.gitted/config b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/config similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/config rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/config diff --git a/tests/resources/empty_standard_repo/.gitted/description b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/description similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/description rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/description diff --git a/tests/resources/empty_standard_repo/.gitted/info/exclude b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/info/exclude similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/info/exclude rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/info/exclude diff --git a/tests/resources/empty_standard_repo/.gitted/objects/info/dummy-marker.txt b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/objects/info/dummy-marker.txt similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/objects/info/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/objects/info/dummy-marker.txt diff --git a/tests/resources/empty_standard_repo/.gitted/objects/pack/dummy-marker.txt b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/objects/pack/dummy-marker.txt similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/objects/pack/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/objects/pack/dummy-marker.txt diff --git a/tests/resources/empty_standard_repo/.gitted/refs/heads/dummy-marker.txt b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/refs/heads/dummy-marker.txt similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/refs/heads/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/refs/heads/dummy-marker.txt diff --git a/tests/resources/empty_standard_repo/.gitted/refs/tags/dummy-marker.txt b/deps/libgit2/tests/resources/empty_standard_repo/.gitted/refs/tags/dummy-marker.txt similarity index 100% rename from tests/resources/empty_standard_repo/.gitted/refs/tags/dummy-marker.txt rename to deps/libgit2/tests/resources/empty_standard_repo/.gitted/refs/tags/dummy-marker.txt diff --git a/tests/resources/filemodes/.gitted/HEAD b/deps/libgit2/tests/resources/filemodes/.gitted/HEAD similarity index 100% rename from tests/resources/filemodes/.gitted/HEAD rename to deps/libgit2/tests/resources/filemodes/.gitted/HEAD diff --git a/tests/resources/filemodes/.gitted/config b/deps/libgit2/tests/resources/filemodes/.gitted/config similarity index 100% rename from tests/resources/filemodes/.gitted/config rename to deps/libgit2/tests/resources/filemodes/.gitted/config diff --git a/tests/resources/filemodes/.gitted/description b/deps/libgit2/tests/resources/filemodes/.gitted/description similarity index 100% rename from tests/resources/filemodes/.gitted/description rename to deps/libgit2/tests/resources/filemodes/.gitted/description diff --git a/tests/resources/filemodes/.gitted/index b/deps/libgit2/tests/resources/filemodes/.gitted/index similarity index 100% rename from tests/resources/filemodes/.gitted/index rename to deps/libgit2/tests/resources/filemodes/.gitted/index diff --git a/tests/resources/filemodes/.gitted/info/exclude b/deps/libgit2/tests/resources/filemodes/.gitted/info/exclude similarity index 100% rename from tests/resources/filemodes/.gitted/info/exclude rename to deps/libgit2/tests/resources/filemodes/.gitted/info/exclude diff --git a/tests/resources/filemodes/.gitted/logs/HEAD b/deps/libgit2/tests/resources/filemodes/.gitted/logs/HEAD similarity index 100% rename from tests/resources/filemodes/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/filemodes/.gitted/logs/HEAD diff --git a/tests/resources/filemodes/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/filemodes/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/filemodes/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/filemodes/.gitted/logs/refs/heads/master diff --git a/tests/resources/filemodes/.gitted/objects/99/62c8453ba6f0cf8dac7c5dcc2fa2897fa9964a b/deps/libgit2/tests/resources/filemodes/.gitted/objects/99/62c8453ba6f0cf8dac7c5dcc2fa2897fa9964a similarity index 100% rename from tests/resources/filemodes/.gitted/objects/99/62c8453ba6f0cf8dac7c5dcc2fa2897fa9964a rename to deps/libgit2/tests/resources/filemodes/.gitted/objects/99/62c8453ba6f0cf8dac7c5dcc2fa2897fa9964a diff --git a/tests/resources/filemodes/.gitted/objects/a5/c5dd0fc6c313159a69b1d19d7f61a9f978e8f1 b/deps/libgit2/tests/resources/filemodes/.gitted/objects/a5/c5dd0fc6c313159a69b1d19d7f61a9f978e8f1 similarity index 100% rename from tests/resources/filemodes/.gitted/objects/a5/c5dd0fc6c313159a69b1d19d7f61a9f978e8f1 rename to deps/libgit2/tests/resources/filemodes/.gitted/objects/a5/c5dd0fc6c313159a69b1d19d7f61a9f978e8f1 diff --git a/tests/resources/filemodes/.gitted/objects/e7/48d196331bcb20267eaaee4ff3326cb73b8182 b/deps/libgit2/tests/resources/filemodes/.gitted/objects/e7/48d196331bcb20267eaaee4ff3326cb73b8182 similarity index 100% rename from tests/resources/filemodes/.gitted/objects/e7/48d196331bcb20267eaaee4ff3326cb73b8182 rename to deps/libgit2/tests/resources/filemodes/.gitted/objects/e7/48d196331bcb20267eaaee4ff3326cb73b8182 diff --git a/tests/resources/filemodes/.gitted/refs/heads/master b/deps/libgit2/tests/resources/filemodes/.gitted/refs/heads/master similarity index 100% rename from tests/resources/filemodes/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/filemodes/.gitted/refs/heads/master diff --git a/tests/resources/filemodes/exec_off b/deps/libgit2/tests/resources/filemodes/exec_off similarity index 100% rename from tests/resources/filemodes/exec_off rename to deps/libgit2/tests/resources/filemodes/exec_off diff --git a/tests/resources/filemodes/exec_off2on_staged b/deps/libgit2/tests/resources/filemodes/exec_off2on_staged similarity index 100% rename from tests/resources/filemodes/exec_off2on_staged rename to deps/libgit2/tests/resources/filemodes/exec_off2on_staged diff --git a/tests/resources/filemodes/exec_off2on_workdir b/deps/libgit2/tests/resources/filemodes/exec_off2on_workdir similarity index 100% rename from tests/resources/filemodes/exec_off2on_workdir rename to deps/libgit2/tests/resources/filemodes/exec_off2on_workdir diff --git a/tests/resources/filemodes/exec_off_untracked b/deps/libgit2/tests/resources/filemodes/exec_off_untracked similarity index 100% rename from tests/resources/filemodes/exec_off_untracked rename to deps/libgit2/tests/resources/filemodes/exec_off_untracked diff --git a/tests/resources/filemodes/exec_on b/deps/libgit2/tests/resources/filemodes/exec_on similarity index 100% rename from tests/resources/filemodes/exec_on rename to deps/libgit2/tests/resources/filemodes/exec_on diff --git a/tests/resources/filemodes/exec_on2off_staged b/deps/libgit2/tests/resources/filemodes/exec_on2off_staged similarity index 100% rename from tests/resources/filemodes/exec_on2off_staged rename to deps/libgit2/tests/resources/filemodes/exec_on2off_staged diff --git a/tests/resources/filemodes/exec_on2off_workdir b/deps/libgit2/tests/resources/filemodes/exec_on2off_workdir similarity index 100% rename from tests/resources/filemodes/exec_on2off_workdir rename to deps/libgit2/tests/resources/filemodes/exec_on2off_workdir diff --git a/tests/resources/filemodes/exec_on_untracked b/deps/libgit2/tests/resources/filemodes/exec_on_untracked similarity index 100% rename from tests/resources/filemodes/exec_on_untracked rename to deps/libgit2/tests/resources/filemodes/exec_on_untracked diff --git a/tests/resources/gitgit.index b/deps/libgit2/tests/resources/gitgit.index similarity index 100% rename from tests/resources/gitgit.index rename to deps/libgit2/tests/resources/gitgit.index diff --git a/tests/resources/icase/.gitted/HEAD b/deps/libgit2/tests/resources/icase/.gitted/HEAD similarity index 100% rename from tests/resources/icase/.gitted/HEAD rename to deps/libgit2/tests/resources/icase/.gitted/HEAD diff --git a/tests/resources/icase/.gitted/config b/deps/libgit2/tests/resources/icase/.gitted/config similarity index 100% rename from tests/resources/icase/.gitted/config rename to deps/libgit2/tests/resources/icase/.gitted/config diff --git a/tests/resources/icase/.gitted/description b/deps/libgit2/tests/resources/icase/.gitted/description similarity index 100% rename from tests/resources/icase/.gitted/description rename to deps/libgit2/tests/resources/icase/.gitted/description diff --git a/tests/resources/icase/.gitted/index b/deps/libgit2/tests/resources/icase/.gitted/index similarity index 100% rename from tests/resources/icase/.gitted/index rename to deps/libgit2/tests/resources/icase/.gitted/index diff --git a/tests/resources/icase/.gitted/info/exclude b/deps/libgit2/tests/resources/icase/.gitted/info/exclude similarity index 100% rename from tests/resources/icase/.gitted/info/exclude rename to deps/libgit2/tests/resources/icase/.gitted/info/exclude diff --git a/tests/resources/icase/.gitted/logs/HEAD b/deps/libgit2/tests/resources/icase/.gitted/logs/HEAD similarity index 100% rename from tests/resources/icase/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/icase/.gitted/logs/HEAD diff --git a/tests/resources/icase/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/icase/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/icase/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/icase/.gitted/logs/refs/heads/master diff --git a/tests/resources/icase/.gitted/objects/3e/257c57f136a1cb8f2b8e9a2e5bc8ec0258bdce b/deps/libgit2/tests/resources/icase/.gitted/objects/3e/257c57f136a1cb8f2b8e9a2e5bc8ec0258bdce similarity index 100% rename from tests/resources/icase/.gitted/objects/3e/257c57f136a1cb8f2b8e9a2e5bc8ec0258bdce rename to deps/libgit2/tests/resources/icase/.gitted/objects/3e/257c57f136a1cb8f2b8e9a2e5bc8ec0258bdce diff --git a/tests/resources/icase/.gitted/objects/4d/d6027d083575c7431396dc2a3174afeb393c93 b/deps/libgit2/tests/resources/icase/.gitted/objects/4d/d6027d083575c7431396dc2a3174afeb393c93 similarity index 100% rename from tests/resources/icase/.gitted/objects/4d/d6027d083575c7431396dc2a3174afeb393c93 rename to deps/libgit2/tests/resources/icase/.gitted/objects/4d/d6027d083575c7431396dc2a3174afeb393c93 diff --git a/tests/resources/icase/.gitted/objects/62/e0af52c199ec731fe4ad230041cd3286192d49 b/deps/libgit2/tests/resources/icase/.gitted/objects/62/e0af52c199ec731fe4ad230041cd3286192d49 similarity index 100% rename from tests/resources/icase/.gitted/objects/62/e0af52c199ec731fe4ad230041cd3286192d49 rename to deps/libgit2/tests/resources/icase/.gitted/objects/62/e0af52c199ec731fe4ad230041cd3286192d49 diff --git a/tests/resources/icase/.gitted/objects/76/d6e1d231b1085fcce151427e9899335de74be6 b/deps/libgit2/tests/resources/icase/.gitted/objects/76/d6e1d231b1085fcce151427e9899335de74be6 similarity index 100% rename from tests/resources/icase/.gitted/objects/76/d6e1d231b1085fcce151427e9899335de74be6 rename to deps/libgit2/tests/resources/icase/.gitted/objects/76/d6e1d231b1085fcce151427e9899335de74be6 diff --git a/tests/resources/icase/.gitted/objects/d4/4e18fb93b7107b5cd1b95d601591d77869a1b6 b/deps/libgit2/tests/resources/icase/.gitted/objects/d4/4e18fb93b7107b5cd1b95d601591d77869a1b6 similarity index 100% rename from tests/resources/icase/.gitted/objects/d4/4e18fb93b7107b5cd1b95d601591d77869a1b6 rename to deps/libgit2/tests/resources/icase/.gitted/objects/d4/4e18fb93b7107b5cd1b95d601591d77869a1b6 diff --git a/tests/resources/icase/.gitted/refs/heads/master b/deps/libgit2/tests/resources/icase/.gitted/refs/heads/master similarity index 100% rename from tests/resources/icase/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/icase/.gitted/refs/heads/master diff --git a/tests/resources/icase/B b/deps/libgit2/tests/resources/icase/B similarity index 100% rename from tests/resources/icase/B rename to deps/libgit2/tests/resources/icase/B diff --git a/tests/resources/icase/D b/deps/libgit2/tests/resources/icase/D similarity index 100% rename from tests/resources/icase/D rename to deps/libgit2/tests/resources/icase/D diff --git a/tests/resources/icase/F b/deps/libgit2/tests/resources/icase/F similarity index 100% rename from tests/resources/icase/F rename to deps/libgit2/tests/resources/icase/F diff --git a/tests/resources/icase/H b/deps/libgit2/tests/resources/icase/H similarity index 100% rename from tests/resources/icase/H rename to deps/libgit2/tests/resources/icase/H diff --git a/tests/resources/icase/J b/deps/libgit2/tests/resources/icase/J similarity index 100% rename from tests/resources/icase/J rename to deps/libgit2/tests/resources/icase/J diff --git a/tests/resources/icase/L/1 b/deps/libgit2/tests/resources/icase/L/1 similarity index 100% rename from tests/resources/icase/L/1 rename to deps/libgit2/tests/resources/icase/L/1 diff --git a/tests/resources/icase/L/B b/deps/libgit2/tests/resources/icase/L/B similarity index 100% rename from tests/resources/icase/L/B rename to deps/libgit2/tests/resources/icase/L/B diff --git a/tests/resources/icase/L/D b/deps/libgit2/tests/resources/icase/L/D similarity index 100% rename from tests/resources/icase/L/D rename to deps/libgit2/tests/resources/icase/L/D diff --git a/tests/resources/icase/L/a b/deps/libgit2/tests/resources/icase/L/a similarity index 100% rename from tests/resources/icase/L/a rename to deps/libgit2/tests/resources/icase/L/a diff --git a/tests/resources/icase/L/c b/deps/libgit2/tests/resources/icase/L/c similarity index 100% rename from tests/resources/icase/L/c rename to deps/libgit2/tests/resources/icase/L/c diff --git a/tests/resources/icase/a b/deps/libgit2/tests/resources/icase/a similarity index 100% rename from tests/resources/icase/a rename to deps/libgit2/tests/resources/icase/a diff --git a/tests/resources/icase/c b/deps/libgit2/tests/resources/icase/c similarity index 100% rename from tests/resources/icase/c rename to deps/libgit2/tests/resources/icase/c diff --git a/tests/resources/icase/e b/deps/libgit2/tests/resources/icase/e similarity index 100% rename from tests/resources/icase/e rename to deps/libgit2/tests/resources/icase/e diff --git a/tests/resources/icase/g b/deps/libgit2/tests/resources/icase/g similarity index 100% rename from tests/resources/icase/g rename to deps/libgit2/tests/resources/icase/g diff --git a/tests/resources/icase/i b/deps/libgit2/tests/resources/icase/i similarity index 100% rename from tests/resources/icase/i rename to deps/libgit2/tests/resources/icase/i diff --git a/tests/resources/icase/k/1 b/deps/libgit2/tests/resources/icase/k/1 similarity index 100% rename from tests/resources/icase/k/1 rename to deps/libgit2/tests/resources/icase/k/1 diff --git a/tests/resources/icase/k/B b/deps/libgit2/tests/resources/icase/k/B similarity index 100% rename from tests/resources/icase/k/B rename to deps/libgit2/tests/resources/icase/k/B diff --git a/tests/resources/icase/k/D b/deps/libgit2/tests/resources/icase/k/D similarity index 100% rename from tests/resources/icase/k/D rename to deps/libgit2/tests/resources/icase/k/D diff --git a/tests/resources/icase/k/a b/deps/libgit2/tests/resources/icase/k/a similarity index 100% rename from tests/resources/icase/k/a rename to deps/libgit2/tests/resources/icase/k/a diff --git a/tests/resources/icase/k/c b/deps/libgit2/tests/resources/icase/k/c similarity index 100% rename from tests/resources/icase/k/c rename to deps/libgit2/tests/resources/icase/k/c diff --git a/tests/resources/issue_1397/.gitted/HEAD b/deps/libgit2/tests/resources/issue_1397/.gitted/HEAD similarity index 100% rename from tests/resources/issue_1397/.gitted/HEAD rename to deps/libgit2/tests/resources/issue_1397/.gitted/HEAD diff --git a/tests/resources/issue_1397/.gitted/config b/deps/libgit2/tests/resources/issue_1397/.gitted/config similarity index 100% rename from tests/resources/issue_1397/.gitted/config rename to deps/libgit2/tests/resources/issue_1397/.gitted/config diff --git a/tests/resources/issue_1397/.gitted/index b/deps/libgit2/tests/resources/issue_1397/.gitted/index similarity index 100% rename from tests/resources/issue_1397/.gitted/index rename to deps/libgit2/tests/resources/issue_1397/.gitted/index diff --git a/tests/resources/issue_1397/.gitted/objects/7f/483a738f867e5b21c8f377d70311f011eb48b5 b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/7f/483a738f867e5b21c8f377d70311f011eb48b5 similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/7f/483a738f867e5b21c8f377d70311f011eb48b5 rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/7f/483a738f867e5b21c8f377d70311f011eb48b5 diff --git a/tests/resources/issue_1397/.gitted/objects/83/12e0889a9cbab77c732b6bc39b51a683e3a318 b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/83/12e0889a9cbab77c732b6bc39b51a683e3a318 similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/83/12e0889a9cbab77c732b6bc39b51a683e3a318 rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/83/12e0889a9cbab77c732b6bc39b51a683e3a318 diff --git a/tests/resources/issue_1397/.gitted/objects/8a/7ef047fc933edb62e84e7977b0612ec3f6f283 b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/8a/7ef047fc933edb62e84e7977b0612ec3f6f283 similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/8a/7ef047fc933edb62e84e7977b0612ec3f6f283 rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/8a/7ef047fc933edb62e84e7977b0612ec3f6f283 diff --git a/tests/resources/issue_1397/.gitted/objects/8e/8f80088a9274fd23584992f587083ca1bcbbac b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/8e/8f80088a9274fd23584992f587083ca1bcbbac similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/8e/8f80088a9274fd23584992f587083ca1bcbbac rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/8e/8f80088a9274fd23584992f587083ca1bcbbac diff --git a/tests/resources/issue_1397/.gitted/objects/f2/c62dea0372a0578e053697d5c1ba1ac05e774a b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/f2/c62dea0372a0578e053697d5c1ba1ac05e774a similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/f2/c62dea0372a0578e053697d5c1ba1ac05e774a rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/f2/c62dea0372a0578e053697d5c1ba1ac05e774a diff --git a/tests/resources/issue_1397/.gitted/objects/ff/3578d64d199d5b48d92bbb569e0a273e411741 b/deps/libgit2/tests/resources/issue_1397/.gitted/objects/ff/3578d64d199d5b48d92bbb569e0a273e411741 similarity index 100% rename from tests/resources/issue_1397/.gitted/objects/ff/3578d64d199d5b48d92bbb569e0a273e411741 rename to deps/libgit2/tests/resources/issue_1397/.gitted/objects/ff/3578d64d199d5b48d92bbb569e0a273e411741 diff --git a/tests/resources/issue_1397/.gitted/refs/heads/master b/deps/libgit2/tests/resources/issue_1397/.gitted/refs/heads/master similarity index 100% rename from tests/resources/issue_1397/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/issue_1397/.gitted/refs/heads/master diff --git a/tests/resources/issue_1397/crlf_file.txt b/deps/libgit2/tests/resources/issue_1397/crlf_file.txt similarity index 100% rename from tests/resources/issue_1397/crlf_file.txt rename to deps/libgit2/tests/resources/issue_1397/crlf_file.txt diff --git a/tests/resources/issue_1397/some_other_crlf_file.txt b/deps/libgit2/tests/resources/issue_1397/some_other_crlf_file.txt similarity index 100% rename from tests/resources/issue_1397/some_other_crlf_file.txt rename to deps/libgit2/tests/resources/issue_1397/some_other_crlf_file.txt diff --git a/tests/resources/issue_592/.gitted/COMMIT_EDITMSG b/deps/libgit2/tests/resources/issue_592/.gitted/COMMIT_EDITMSG similarity index 100% rename from tests/resources/issue_592/.gitted/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/issue_592/.gitted/COMMIT_EDITMSG diff --git a/tests/resources/issue_592/.gitted/HEAD b/deps/libgit2/tests/resources/issue_592/.gitted/HEAD similarity index 100% rename from tests/resources/issue_592/.gitted/HEAD rename to deps/libgit2/tests/resources/issue_592/.gitted/HEAD diff --git a/tests/resources/issue_592/.gitted/config b/deps/libgit2/tests/resources/issue_592/.gitted/config similarity index 100% rename from tests/resources/issue_592/.gitted/config rename to deps/libgit2/tests/resources/issue_592/.gitted/config diff --git a/tests/resources/issue_592/.gitted/index b/deps/libgit2/tests/resources/issue_592/.gitted/index similarity index 100% rename from tests/resources/issue_592/.gitted/index rename to deps/libgit2/tests/resources/issue_592/.gitted/index diff --git a/tests/resources/issue_592/.gitted/info/exclude b/deps/libgit2/tests/resources/issue_592/.gitted/info/exclude similarity index 100% rename from tests/resources/issue_592/.gitted/info/exclude rename to deps/libgit2/tests/resources/issue_592/.gitted/info/exclude diff --git a/tests/resources/issue_592/.gitted/logs/HEAD b/deps/libgit2/tests/resources/issue_592/.gitted/logs/HEAD similarity index 100% rename from tests/resources/issue_592/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/issue_592/.gitted/logs/HEAD diff --git a/tests/resources/issue_592/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/issue_592/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/issue_592/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/issue_592/.gitted/logs/refs/heads/master diff --git a/tests/resources/issue_592/.gitted/objects/06/07ee9d4ccce8e4c4fa13c2c7d727e7faba4e0e b/deps/libgit2/tests/resources/issue_592/.gitted/objects/06/07ee9d4ccce8e4c4fa13c2c7d727e7faba4e0e similarity index 100% rename from tests/resources/issue_592/.gitted/objects/06/07ee9d4ccce8e4c4fa13c2c7d727e7faba4e0e rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/06/07ee9d4ccce8e4c4fa13c2c7d727e7faba4e0e diff --git a/tests/resources/issue_592/.gitted/objects/49/363a72a90d9424240258cd3759f23788ecf1d8 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/49/363a72a90d9424240258cd3759f23788ecf1d8 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/49/363a72a90d9424240258cd3759f23788ecf1d8 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/49/363a72a90d9424240258cd3759f23788ecf1d8 diff --git a/tests/resources/issue_592/.gitted/objects/4d/383e87f0371ba8fa353f3912db6862b2625e85 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/4d/383e87f0371ba8fa353f3912db6862b2625e85 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/4d/383e87f0371ba8fa353f3912db6862b2625e85 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/4d/383e87f0371ba8fa353f3912db6862b2625e85 diff --git a/tests/resources/issue_592/.gitted/objects/71/44be264b61825fbff68046fe999bdfe96a1792 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/71/44be264b61825fbff68046fe999bdfe96a1792 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/71/44be264b61825fbff68046fe999bdfe96a1792 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/71/44be264b61825fbff68046fe999bdfe96a1792 diff --git a/tests/resources/issue_592/.gitted/objects/be/de83ee10b5b3f00239660b00acec2d55fd0b84 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/be/de83ee10b5b3f00239660b00acec2d55fd0b84 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/be/de83ee10b5b3f00239660b00acec2d55fd0b84 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/be/de83ee10b5b3f00239660b00acec2d55fd0b84 diff --git a/tests/resources/issue_592/.gitted/objects/e3/8fcc7a6060f5eb5b876e836b52ae4769363f21 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/e3/8fcc7a6060f5eb5b876e836b52ae4769363f21 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/e3/8fcc7a6060f5eb5b876e836b52ae4769363f21 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/e3/8fcc7a6060f5eb5b876e836b52ae4769363f21 diff --git a/tests/resources/issue_592/.gitted/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 b/deps/libgit2/tests/resources/issue_592/.gitted/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 similarity index 100% rename from tests/resources/issue_592/.gitted/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 rename to deps/libgit2/tests/resources/issue_592/.gitted/objects/f1/adef63cb08891a0942b76fc4b9c50c6c494bc7 diff --git a/tests/resources/issue_592/.gitted/refs/heads/master b/deps/libgit2/tests/resources/issue_592/.gitted/refs/heads/master similarity index 100% rename from tests/resources/issue_592/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/issue_592/.gitted/refs/heads/master diff --git a/tests/resources/issue_592/a.txt b/deps/libgit2/tests/resources/issue_592/a.txt similarity index 100% rename from tests/resources/issue_592/a.txt rename to deps/libgit2/tests/resources/issue_592/a.txt diff --git a/tests/resources/issue_592/c/a.txt b/deps/libgit2/tests/resources/issue_592/c/a.txt similarity index 100% rename from tests/resources/issue_592/c/a.txt rename to deps/libgit2/tests/resources/issue_592/c/a.txt diff --git a/tests/resources/issue_592/l.txt b/deps/libgit2/tests/resources/issue_592/l.txt similarity index 100% rename from tests/resources/issue_592/l.txt rename to deps/libgit2/tests/resources/issue_592/l.txt diff --git a/tests/resources/issue_592/t/a.txt b/deps/libgit2/tests/resources/issue_592/t/a.txt similarity index 100% rename from tests/resources/issue_592/t/a.txt rename to deps/libgit2/tests/resources/issue_592/t/a.txt diff --git a/tests/resources/issue_592/t/b.txt b/deps/libgit2/tests/resources/issue_592/t/b.txt similarity index 100% rename from tests/resources/issue_592/t/b.txt rename to deps/libgit2/tests/resources/issue_592/t/b.txt diff --git a/tests/resources/issue_592b/.gitted/HEAD b/deps/libgit2/tests/resources/issue_592b/.gitted/HEAD similarity index 100% rename from tests/resources/issue_592b/.gitted/HEAD rename to deps/libgit2/tests/resources/issue_592b/.gitted/HEAD diff --git a/tests/resources/issue_592b/.gitted/config b/deps/libgit2/tests/resources/issue_592b/.gitted/config similarity index 100% rename from tests/resources/issue_592b/.gitted/config rename to deps/libgit2/tests/resources/issue_592b/.gitted/config diff --git a/tests/resources/issue_592b/.gitted/description b/deps/libgit2/tests/resources/issue_592b/.gitted/description similarity index 100% rename from tests/resources/issue_592b/.gitted/description rename to deps/libgit2/tests/resources/issue_592b/.gitted/description diff --git a/tests/resources/issue_592b/.gitted/index b/deps/libgit2/tests/resources/issue_592b/.gitted/index similarity index 100% rename from tests/resources/issue_592b/.gitted/index rename to deps/libgit2/tests/resources/issue_592b/.gitted/index diff --git a/tests/resources/issue_592b/.gitted/info/exclude b/deps/libgit2/tests/resources/issue_592b/.gitted/info/exclude similarity index 100% rename from tests/resources/issue_592b/.gitted/info/exclude rename to deps/libgit2/tests/resources/issue_592b/.gitted/info/exclude diff --git a/tests/resources/issue_592b/.gitted/logs/HEAD b/deps/libgit2/tests/resources/issue_592b/.gitted/logs/HEAD similarity index 100% rename from tests/resources/issue_592b/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/issue_592b/.gitted/logs/HEAD diff --git a/tests/resources/issue_592b/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/issue_592b/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/issue_592b/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/issue_592b/.gitted/logs/refs/heads/master diff --git a/tests/resources/issue_592b/.gitted/objects/3f/bf1852f72fd268e36457b13a18cdd9a4c9ea35 b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/3f/bf1852f72fd268e36457b13a18cdd9a4c9ea35 similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/3f/bf1852f72fd268e36457b13a18cdd9a4c9ea35 rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/3f/bf1852f72fd268e36457b13a18cdd9a4c9ea35 diff --git a/tests/resources/issue_592b/.gitted/objects/6f/a891d3e578c83e1c03bdb9e0fdd8e6e934157f b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/6f/a891d3e578c83e1c03bdb9e0fdd8e6e934157f similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/6f/a891d3e578c83e1c03bdb9e0fdd8e6e934157f rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/6f/a891d3e578c83e1c03bdb9e0fdd8e6e934157f diff --git a/tests/resources/issue_592b/.gitted/objects/80/07d41d5794e6ce4d4d2c97e370d5a9aa6d5213 b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/80/07d41d5794e6ce4d4d2c97e370d5a9aa6d5213 similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/80/07d41d5794e6ce4d4d2c97e370d5a9aa6d5213 rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/80/07d41d5794e6ce4d4d2c97e370d5a9aa6d5213 diff --git a/tests/resources/issue_592b/.gitted/objects/a6/5fb6583a7c425284142f285bc359a2d6565513 b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/a6/5fb6583a7c425284142f285bc359a2d6565513 similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/a6/5fb6583a7c425284142f285bc359a2d6565513 rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/a6/5fb6583a7c425284142f285bc359a2d6565513 diff --git a/tests/resources/issue_592b/.gitted/objects/ae/be7a55922c7097ef91ca3a7bc327a901d87c2c b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/ae/be7a55922c7097ef91ca3a7bc327a901d87c2c similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/ae/be7a55922c7097ef91ca3a7bc327a901d87c2c rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/ae/be7a55922c7097ef91ca3a7bc327a901d87c2c diff --git a/tests/resources/issue_592b/.gitted/objects/b3/44b055867fcdc1f01eaa75056a43e868eb4fbc b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/b3/44b055867fcdc1f01eaa75056a43e868eb4fbc similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/b3/44b055867fcdc1f01eaa75056a43e868eb4fbc rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/b3/44b055867fcdc1f01eaa75056a43e868eb4fbc diff --git a/tests/resources/issue_592b/.gitted/objects/f7/d75fbfad8b1d2e307ced287ea78aad403cdce3 b/deps/libgit2/tests/resources/issue_592b/.gitted/objects/f7/d75fbfad8b1d2e307ced287ea78aad403cdce3 similarity index 100% rename from tests/resources/issue_592b/.gitted/objects/f7/d75fbfad8b1d2e307ced287ea78aad403cdce3 rename to deps/libgit2/tests/resources/issue_592b/.gitted/objects/f7/d75fbfad8b1d2e307ced287ea78aad403cdce3 diff --git a/tests/resources/issue_592b/.gitted/refs/heads/master b/deps/libgit2/tests/resources/issue_592b/.gitted/refs/heads/master similarity index 100% rename from tests/resources/issue_592b/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/issue_592b/.gitted/refs/heads/master diff --git a/tests/resources/issue_592b/gitignore b/deps/libgit2/tests/resources/issue_592b/gitignore similarity index 100% rename from tests/resources/issue_592b/gitignore rename to deps/libgit2/tests/resources/issue_592b/gitignore diff --git a/tests/resources/issue_592b/ignored/contained/ignored3.txt b/deps/libgit2/tests/resources/issue_592b/ignored/contained/ignored3.txt similarity index 100% rename from tests/resources/issue_592b/ignored/contained/ignored3.txt rename to deps/libgit2/tests/resources/issue_592b/ignored/contained/ignored3.txt diff --git a/tests/resources/issue_592b/ignored/contained/tracked3.txt b/deps/libgit2/tests/resources/issue_592b/ignored/contained/tracked3.txt similarity index 100% rename from tests/resources/issue_592b/ignored/contained/tracked3.txt rename to deps/libgit2/tests/resources/issue_592b/ignored/contained/tracked3.txt diff --git a/tests/resources/issue_592b/ignored/ignored2.txt b/deps/libgit2/tests/resources/issue_592b/ignored/ignored2.txt similarity index 100% rename from tests/resources/issue_592b/ignored/ignored2.txt rename to deps/libgit2/tests/resources/issue_592b/ignored/ignored2.txt diff --git a/tests/resources/issue_592b/ignored/tracked2.txt b/deps/libgit2/tests/resources/issue_592b/ignored/tracked2.txt similarity index 100% rename from tests/resources/issue_592b/ignored/tracked2.txt rename to deps/libgit2/tests/resources/issue_592b/ignored/tracked2.txt diff --git a/tests/resources/issue_592b/ignored1.txt b/deps/libgit2/tests/resources/issue_592b/ignored1.txt similarity index 100% rename from tests/resources/issue_592b/ignored1.txt rename to deps/libgit2/tests/resources/issue_592b/ignored1.txt diff --git a/tests/resources/issue_592b/tracked1.txt b/deps/libgit2/tests/resources/issue_592b/tracked1.txt similarity index 100% rename from tests/resources/issue_592b/tracked1.txt rename to deps/libgit2/tests/resources/issue_592b/tracked1.txt diff --git a/tests/resources/merge-resolve/.gitted/COMMIT_EDITMSG b/deps/libgit2/tests/resources/merge-resolve/.gitted/COMMIT_EDITMSG similarity index 100% rename from tests/resources/merge-resolve/.gitted/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/merge-resolve/.gitted/COMMIT_EDITMSG diff --git a/tests/resources/merge-resolve/.gitted/HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/HEAD diff --git a/tests/resources/merge-resolve/.gitted/ORIG_HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/ORIG_HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/ORIG_HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/ORIG_HEAD diff --git a/tests/resources/merge-resolve/.gitted/config b/deps/libgit2/tests/resources/merge-resolve/.gitted/config similarity index 100% rename from tests/resources/merge-resolve/.gitted/config rename to deps/libgit2/tests/resources/merge-resolve/.gitted/config diff --git a/tests/resources/merge-resolve/.gitted/description b/deps/libgit2/tests/resources/merge-resolve/.gitted/description similarity index 100% rename from tests/resources/merge-resolve/.gitted/description rename to deps/libgit2/tests/resources/merge-resolve/.gitted/description diff --git a/tests/resources/merge-resolve/.gitted/index b/deps/libgit2/tests/resources/merge-resolve/.gitted/index similarity index 100% rename from tests/resources/merge-resolve/.gitted/index rename to deps/libgit2/tests/resources/merge-resolve/.gitted/index diff --git a/tests/resources/merge-resolve/.gitted/logs/HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/HEAD diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_ancestor diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side1 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/df_side2 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/ff_branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/ff_branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/ff_branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/ff_branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/master diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo1 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo2 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo3 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo4 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo5 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/octo6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/octo6 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/renames1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames1 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/renames2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/renames2 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-10-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-11-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-13-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-14-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-2alt-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-3alt-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-4-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-1-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-5alt-2-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-6-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-7-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-8-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9 diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/trivial-9-branch diff --git a/tests/resources/merge-resolve/.gitted/logs/refs/heads/unrelated b/deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/unrelated similarity index 100% rename from tests/resources/merge-resolve/.gitted/logs/refs/heads/unrelated rename to deps/libgit2/tests/resources/merge-resolve/.gitted/logs/refs/heads/unrelated diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/HEAD diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/ORIG_HEAD diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/config b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/config similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/config rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/config diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/index b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/index similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/index rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/index diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/info/exclude diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/18/fae1354bba0a5f1e6a531f9988369142c24a9e b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/18/fae1354bba0a5f1e6a531f9988369142c24a9e similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/18/fae1354bba0a5f1e6a531f9988369142c24a9e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/18/fae1354bba0a5f1e6a531f9988369142c24a9e diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/29/7aa6cd028b3336c7802c7a6f49143da4e1602d diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/38/6c80dc813b89d719797668f40c1be0a6efa996 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ab/435a147bae6d5906ecfd0916a570c4ab3eeea8 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ad/16e0a7684ea95bf892980a2ee412293ae979cc b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ad/16e0a7684ea95bf892980a2ee412293ae979cc similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/ad/16e0a7684ea95bf892980a2ee412293ae979cc rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ad/16e0a7684ea95bf892980a2ee412293ae979cc diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ae/39c77c70cb6bad18bb471912460c4e1ba0f586 b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ae/39c77c70cb6bad18bb471912460c4e1ba0f586 similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/ae/39c77c70cb6bad18bb471912460c4e1ba0f586 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/ae/39c77c70cb6bad18bb471912460c4e1ba0f586 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/c2/0765f6e24e8bbb63a648d0d11d84da63170190 b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/c2/0765f6e24e8bbb63a648d0d11d84da63170190 similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/c2/0765f6e24e8bbb63a648d0d11d84da63170190 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/c2/0765f6e24e8bbb63a648d0d11d84da63170190 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/d3/d806a4bef96889117fd7ebac0e3cb5ec152932 b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/d3/d806a4bef96889117fd7ebac0e3cb5ec152932 similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/d3/d806a4bef96889117fd7ebac0e3cb5ec152932 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/d3/d806a4bef96889117fd7ebac0e3cb5ec152932 diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/objects/f1/065ff5593604072837fecaad3e2e268cb0147b diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/packed-refs b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/packed-refs similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/packed-refs rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/packed-refs diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/refs/heads/master diff --git a/tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/merge-resolve/.gitted/modules/submodule/refs/remotes/origin/HEAD diff --git a/tests/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/5b6fcc8fec71d2550bef8462d169b3c26aa14b diff --git a/tests/resources/merge-resolve/.gitted/objects/00/9b9cab6fdac02915a88ecd078b7a792ed802d8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/9b9cab6fdac02915a88ecd078b7a792ed802d8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/00/9b9cab6fdac02915a88ecd078b7a792ed802d8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/9b9cab6fdac02915a88ecd078b7a792ed802d8 diff --git a/tests/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/00/c7d33f1ffa79d19c2272b370fcaeaadba49c08 diff --git a/tests/resources/merge-resolve/.gitted/objects/01/f149e1b8f84bd8896aaff6d6b22af88459ded0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/01/f149e1b8f84bd8896aaff6d6b22af88459ded0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/01/f149e1b8f84bd8896aaff6d6b22af88459ded0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/01/f149e1b8f84bd8896aaff6d6b22af88459ded0 diff --git a/tests/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/02/04a84f822acbf6386b36d33f1f6bc68bbbf858 diff --git a/tests/resources/merge-resolve/.gitted/objects/02/251f990ca8e92e7ae61d3426163fa821c64001 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/02/251f990ca8e92e7ae61d3426163fa821c64001 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/02/251f990ca8e92e7ae61d3426163fa821c64001 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/02/251f990ca8e92e7ae61d3426163fa821c64001 diff --git a/tests/resources/merge-resolve/.gitted/objects/03/21415405cb906c46869919af56d51dbbe5e85c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/21415405cb906c46869919af56d51dbbe5e85c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/03/21415405cb906c46869919af56d51dbbe5e85c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/21415405cb906c46869919af56d51dbbe5e85c diff --git a/tests/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/2ebc5ab85d9553bb187d3cd40875ff23a63ed0 diff --git a/tests/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/b87706555accbf874ccd410dbda01e8e70a67f diff --git a/tests/resources/merge-resolve/.gitted/objects/03/dad1005e5d06d418f50b12e0bcd48ff2306a03 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/dad1005e5d06d418f50b12e0bcd48ff2306a03 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/03/dad1005e5d06d418f50b12e0bcd48ff2306a03 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/03/dad1005e5d06d418f50b12e0bcd48ff2306a03 diff --git a/tests/resources/merge-resolve/.gitted/objects/05/1ffd7901a442faf56b226161649074f15c7c47 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/1ffd7901a442faf56b226161649074f15c7c47 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/05/1ffd7901a442faf56b226161649074f15c7c47 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/1ffd7901a442faf56b226161649074f15c7c47 diff --git a/tests/resources/merge-resolve/.gitted/objects/05/8541fc37114bfc1dddf6bd6bffc7fae5c2e6fe b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/8541fc37114bfc1dddf6bd6bffc7fae5c2e6fe similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/05/8541fc37114bfc1dddf6bd6bffc7fae5c2e6fe rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/8541fc37114bfc1dddf6bd6bffc7fae5c2e6fe diff --git a/tests/resources/merge-resolve/.gitted/objects/05/f3c1a2a56ca95c3d2ef28dc9ddf32b5cd6c91c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/f3c1a2a56ca95c3d2ef28dc9ddf32b5cd6c91c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/05/f3c1a2a56ca95c3d2ef28dc9ddf32b5cd6c91c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/05/f3c1a2a56ca95c3d2ef28dc9ddf32b5cd6c91c diff --git a/tests/resources/merge-resolve/.gitted/objects/07/a759da919f737221791d542f176ab49c88837f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/07/a759da919f737221791d542f176ab49c88837f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/07/a759da919f737221791d542f176ab49c88837f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/07/a759da919f737221791d542f176ab49c88837f diff --git a/tests/resources/merge-resolve/.gitted/objects/07/c514b04698e068892b31c8d352b85813b99c6e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/07/c514b04698e068892b31c8d352b85813b99c6e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/07/c514b04698e068892b31c8d352b85813b99c6e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/07/c514b04698e068892b31c8d352b85813b99c6e diff --git a/tests/resources/merge-resolve/.gitted/objects/09/055301463b7f2f8ee5d368f8ed5c0a40ad8515 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/055301463b7f2f8ee5d368f8ed5c0a40ad8515 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/09/055301463b7f2f8ee5d368f8ed5c0a40ad8515 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/055301463b7f2f8ee5d368f8ed5c0a40ad8515 diff --git a/tests/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/17bb159596aea4d295f4857da77e8f96b3c7dc diff --git a/tests/resources/merge-resolve/.gitted/objects/09/2ce8682d7f3a2a3a769a6daca58950168ba5c4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/2ce8682d7f3a2a3a769a6daca58950168ba5c4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/09/2ce8682d7f3a2a3a769a6daca58950168ba5c4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/2ce8682d7f3a2a3a769a6daca58950168ba5c4 diff --git a/tests/resources/merge-resolve/.gitted/objects/09/3bebf072dd4bbba88833667d6ffe454df199e1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/3bebf072dd4bbba88833667d6ffe454df199e1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/09/3bebf072dd4bbba88833667d6ffe454df199e1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/3bebf072dd4bbba88833667d6ffe454df199e1 diff --git a/tests/resources/merge-resolve/.gitted/objects/09/768bed22680cdb0859683fa9677ccc8d5a25c1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/768bed22680cdb0859683fa9677ccc8d5a25c1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/09/768bed22680cdb0859683fa9677ccc8d5a25c1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/09/768bed22680cdb0859683fa9677ccc8d5a25c1 diff --git a/tests/resources/merge-resolve/.gitted/objects/0a/75d9aac1dc84fb5aa51f7325c0ab53242ddef7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0a/75d9aac1dc84fb5aa51f7325c0ab53242ddef7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0a/75d9aac1dc84fb5aa51f7325c0ab53242ddef7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0a/75d9aac1dc84fb5aa51f7325c0ab53242ddef7 diff --git a/tests/resources/merge-resolve/.gitted/objects/0c/fd6c54ef6532d862408f562309dc9c74a401e8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0c/fd6c54ef6532d862408f562309dc9c74a401e8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0c/fd6c54ef6532d862408f562309dc9c74a401e8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0c/fd6c54ef6532d862408f562309dc9c74a401e8 diff --git a/tests/resources/merge-resolve/.gitted/objects/0d/52e3a556e189ba0948ae56780918011c1b167d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0d/52e3a556e189ba0948ae56780918011c1b167d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0d/52e3a556e189ba0948ae56780918011c1b167d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0d/52e3a556e189ba0948ae56780918011c1b167d diff --git a/tests/resources/merge-resolve/.gitted/objects/0d/872f8e871a30208305978ecbf9e66d864f1638 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0d/872f8e871a30208305978ecbf9e66d864f1638 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0d/872f8e871a30208305978ecbf9e66d864f1638 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0d/872f8e871a30208305978ecbf9e66d864f1638 diff --git a/tests/resources/merge-resolve/.gitted/objects/0e/c5f433959cd46177f745903353efb5be08d151 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0e/c5f433959cd46177f745903353efb5be08d151 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0e/c5f433959cd46177f745903353efb5be08d151 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0e/c5f433959cd46177f745903353efb5be08d151 diff --git a/tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/0f/3fc5dddc8964b9ac1040d0e957f9eb02d9efb3 diff --git a/tests/resources/merge-resolve/.gitted/objects/11/aeee27ac45a8402c2fd5b875d66dd844e5df00 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/aeee27ac45a8402c2fd5b875d66dd844e5df00 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/11/aeee27ac45a8402c2fd5b875d66dd844e5df00 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/aeee27ac45a8402c2fd5b875d66dd844e5df00 diff --git a/tests/resources/merge-resolve/.gitted/objects/11/deab00b2d3a6f5a3073988ac050c2d7b6655e2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/deab00b2d3a6f5a3073988ac050c2d7b6655e2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/11/deab00b2d3a6f5a3073988ac050c2d7b6655e2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/deab00b2d3a6f5a3073988ac050c2d7b6655e2 diff --git a/tests/resources/merge-resolve/.gitted/objects/11/f4f3c08b737f5fd896cbefa1425ee63b21b2fa b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/f4f3c08b737f5fd896cbefa1425ee63b21b2fa similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/11/f4f3c08b737f5fd896cbefa1425ee63b21b2fa rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/11/f4f3c08b737f5fd896cbefa1425ee63b21b2fa diff --git a/tests/resources/merge-resolve/.gitted/objects/13/d1be4ea52a6ced1d7a1d832f0ee3c399348e5e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/13/d1be4ea52a6ced1d7a1d832f0ee3c399348e5e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/13/d1be4ea52a6ced1d7a1d832f0ee3c399348e5e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/13/d1be4ea52a6ced1d7a1d832f0ee3c399348e5e diff --git a/tests/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/14/39088f509b79b1535b64193137d3ce4b240734 diff --git a/tests/resources/merge-resolve/.gitted/objects/15/8dc7bedb202f5b26502bf3574faa7f4238d56c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/15/8dc7bedb202f5b26502bf3574faa7f4238d56c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/15/8dc7bedb202f5b26502bf3574faa7f4238d56c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/15/8dc7bedb202f5b26502bf3574faa7f4238d56c diff --git a/tests/resources/merge-resolve/.gitted/objects/16/f825815cfd20a07a75c71554e82d8eede0b061 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/16/f825815cfd20a07a75c71554e82d8eede0b061 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/16/f825815cfd20a07a75c71554e82d8eede0b061 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/16/f825815cfd20a07a75c71554e82d8eede0b061 diff --git a/tests/resources/merge-resolve/.gitted/objects/17/8940b450f238a56c0d75b7955cb57b38191982 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/17/8940b450f238a56c0d75b7955cb57b38191982 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/17/8940b450f238a56c0d75b7955cb57b38191982 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/17/8940b450f238a56c0d75b7955cb57b38191982 diff --git a/tests/resources/merge-resolve/.gitted/objects/18/3310e30fb1499af8c619108ffea4d300b5e778 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/18/3310e30fb1499af8c619108ffea4d300b5e778 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/18/3310e30fb1499af8c619108ffea4d300b5e778 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/18/3310e30fb1499af8c619108ffea4d300b5e778 diff --git a/tests/resources/merge-resolve/.gitted/objects/18/cb316b1cefa0f8a6946f0e201a8e1a6f845ab9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/18/cb316b1cefa0f8a6946f0e201a8e1a6f845ab9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/18/cb316b1cefa0f8a6946f0e201a8e1a6f845ab9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/18/cb316b1cefa0f8a6946f0e201a8e1a6f845ab9 diff --git a/tests/resources/merge-resolve/.gitted/objects/19/b7ac485269b672a101060894de3ba9c2a24dd1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/19/b7ac485269b672a101060894de3ba9c2a24dd1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/19/b7ac485269b672a101060894de3ba9c2a24dd1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/19/b7ac485269b672a101060894de3ba9c2a24dd1 diff --git a/tests/resources/merge-resolve/.gitted/objects/1a/010b1c0f081b2e8901d55307a15c29ff30af0e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1a/010b1c0f081b2e8901d55307a15c29ff30af0e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/1a/010b1c0f081b2e8901d55307a15c29ff30af0e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1a/010b1c0f081b2e8901d55307a15c29ff30af0e diff --git a/tests/resources/merge-resolve/.gitted/objects/1c/51d885170f57a0c4e8c69ff6363d91a5b51f85 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1c/51d885170f57a0c4e8c69ff6363d91a5b51f85 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/1c/51d885170f57a0c4e8c69ff6363d91a5b51f85 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1c/51d885170f57a0c4e8c69ff6363d91a5b51f85 diff --git a/tests/resources/merge-resolve/.gitted/objects/1c/ff9ec6a47a537380dedfdd17c9e76d74259a2b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1c/ff9ec6a47a537380dedfdd17c9e76d74259a2b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/1c/ff9ec6a47a537380dedfdd17c9e76d74259a2b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1c/ff9ec6a47a537380dedfdd17c9e76d74259a2b diff --git a/tests/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1e/4ff029aee68d0d69ef9eb6efa6cbf1ec732f99 diff --git a/tests/resources/merge-resolve/.gitted/objects/1f/81433e3161efbf250576c58fede7f6b836f3d3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1f/81433e3161efbf250576c58fede7f6b836f3d3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/1f/81433e3161efbf250576c58fede7f6b836f3d3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/1f/81433e3161efbf250576c58fede7f6b836f3d3 diff --git a/tests/resources/merge-resolve/.gitted/objects/20/91d94c8bd3eb0835dc5220de5e8bb310fa1513 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/20/91d94c8bd3eb0835dc5220de5e8bb310fa1513 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/20/91d94c8bd3eb0835dc5220de5e8bb310fa1513 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/20/91d94c8bd3eb0835dc5220de5e8bb310fa1513 diff --git a/tests/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/21/671e290278286fb2ce4c63d01699b67adce331 diff --git a/tests/resources/merge-resolve/.gitted/objects/22/7792b52aaa0b238bea00ec7e509b02623f168c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/22/7792b52aaa0b238bea00ec7e509b02623f168c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/22/7792b52aaa0b238bea00ec7e509b02623f168c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/22/7792b52aaa0b238bea00ec7e509b02623f168c diff --git a/tests/resources/merge-resolve/.gitted/objects/23/3c0919c998ed110a4b6ff36f353aec8b713487 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/3c0919c998ed110a4b6ff36f353aec8b713487 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/23/3c0919c998ed110a4b6ff36f353aec8b713487 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/3c0919c998ed110a4b6ff36f353aec8b713487 diff --git a/tests/resources/merge-resolve/.gitted/objects/23/92a2dacc9efb562b8635d6579fb458751c7c5b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/92a2dacc9efb562b8635d6579fb458751c7c5b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/23/92a2dacc9efb562b8635d6579fb458751c7c5b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/92a2dacc9efb562b8635d6579fb458751c7c5b diff --git a/tests/resources/merge-resolve/.gitted/objects/23/ed141a6ae1e798b2f721afedbe947c119111ba b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/ed141a6ae1e798b2f721afedbe947c119111ba similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/23/ed141a6ae1e798b2f721afedbe947c119111ba rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/23/ed141a6ae1e798b2f721afedbe947c119111ba diff --git a/tests/resources/merge-resolve/.gitted/objects/24/1a1005cd9b980732741b74385b891142bcba28 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/1a1005cd9b980732741b74385b891142bcba28 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/24/1a1005cd9b980732741b74385b891142bcba28 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/1a1005cd9b980732741b74385b891142bcba28 diff --git a/tests/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/2591eb280ee9eeb2ce63524b9a8b9bc4cb515d diff --git a/tests/resources/merge-resolve/.gitted/objects/24/90b9f1a079420870027deefb49f51d6656cf74 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/90b9f1a079420870027deefb49f51d6656cf74 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/24/90b9f1a079420870027deefb49f51d6656cf74 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/24/90b9f1a079420870027deefb49f51d6656cf74 diff --git a/tests/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/25/9d08ca43af9200e9ea9a098e44a5a350ebd9b3 diff --git a/tests/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/25/c40b7660c08c8fb581f770312f41b9b03119d1 diff --git a/tests/resources/merge-resolve/.gitted/objects/26/153a3ff3649b6c2bb652d3f06878c6e0a172f9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/26/153a3ff3649b6c2bb652d3f06878c6e0a172f9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/26/153a3ff3649b6c2bb652d3f06878c6e0a172f9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/26/153a3ff3649b6c2bb652d3f06878c6e0a172f9 diff --git a/tests/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/27/133da702ba3c60af2a01e96c2555ff4045d692 diff --git a/tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/27/4bbe983022fb4c02f8a2bf2ebe8da4fe130054 diff --git a/tests/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/0de5dc27505dcdd83a75c8bf1fcd9462cd7add diff --git a/tests/resources/merge-resolve/.gitted/objects/2b/5f1f181ee3b58ea751f5dd5d8f9b445520a136 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/5f1f181ee3b58ea751f5dd5d8f9b445520a136 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2b/5f1f181ee3b58ea751f5dd5d8f9b445520a136 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/5f1f181ee3b58ea751f5dd5d8f9b445520a136 diff --git a/tests/resources/merge-resolve/.gitted/objects/2b/d0a343aeef7a2cf0d158478966a6e587ff3863 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/d0a343aeef7a2cf0d158478966a6e587ff3863 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2b/d0a343aeef7a2cf0d158478966a6e587ff3863 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/d0a343aeef7a2cf0d158478966a6e587ff3863 diff --git a/tests/resources/merge-resolve/.gitted/objects/2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2b/fdd7e1b6c6ae993f23dfe8e84a8e06a772fa2a diff --git a/tests/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2d/a538570bc1e5b2c3e855bf702f35248ad0735f diff --git a/tests/resources/merge-resolve/.gitted/objects/2f/2e37b7ebbae467978610896ca3aafcdad2ee67 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/2e37b7ebbae467978610896ca3aafcdad2ee67 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2f/2e37b7ebbae467978610896ca3aafcdad2ee67 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/2e37b7ebbae467978610896ca3aafcdad2ee67 diff --git a/tests/resources/merge-resolve/.gitted/objects/2f/4024ce528d36d8670c289cce5a7963e625bb0c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/4024ce528d36d8670c289cce5a7963e625bb0c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2f/4024ce528d36d8670c289cce5a7963e625bb0c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/4024ce528d36d8670c289cce5a7963e625bb0c diff --git a/tests/resources/merge-resolve/.gitted/objects/2f/56120107d680129a5d9791b521cb1e73a2ed31 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/56120107d680129a5d9791b521cb1e73a2ed31 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2f/56120107d680129a5d9791b521cb1e73a2ed31 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/56120107d680129a5d9791b521cb1e73a2ed31 diff --git a/tests/resources/merge-resolve/.gitted/objects/2f/598248eeccfc27e5ca44d9d96383f6dfea7b16 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/598248eeccfc27e5ca44d9d96383f6dfea7b16 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/2f/598248eeccfc27e5ca44d9d96383f6dfea7b16 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/2f/598248eeccfc27e5ca44d9d96383f6dfea7b16 diff --git a/tests/resources/merge-resolve/.gitted/objects/31/68dca1a561889b045a6441909f4c56145e666d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/31/68dca1a561889b045a6441909f4c56145e666d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/31/68dca1a561889b045a6441909f4c56145e666d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/31/68dca1a561889b045a6441909f4c56145e666d diff --git a/tests/resources/merge-resolve/.gitted/objects/31/d5472536041a83d986829240bbbdc897c6f8a6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/31/d5472536041a83d986829240bbbdc897c6f8a6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/31/d5472536041a83d986829240bbbdc897c6f8a6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/31/d5472536041a83d986829240bbbdc897c6f8a6 diff --git a/tests/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/32/21dd512b7e2dc4b5bd03046df6c81b2ab2070b diff --git a/tests/resources/merge-resolve/.gitted/objects/33/46d64325b39e5323733492cd55f808994a2475 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/33/46d64325b39e5323733492cd55f808994a2475 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/33/46d64325b39e5323733492cd55f808994a2475 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/33/46d64325b39e5323733492cd55f808994a2475 diff --git a/tests/resources/merge-resolve/.gitted/objects/33/d500f588fbbe65901d82b4e6b008e549064be0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/33/d500f588fbbe65901d82b4e6b008e549064be0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/33/d500f588fbbe65901d82b4e6b008e549064be0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/33/d500f588fbbe65901d82b4e6b008e549064be0 diff --git a/tests/resources/merge-resolve/.gitted/objects/34/8dcd41e2b467991578e92bedd16971b877ef1e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/34/8dcd41e2b467991578e92bedd16971b877ef1e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/34/8dcd41e2b467991578e92bedd16971b877ef1e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/34/8dcd41e2b467991578e92bedd16971b877ef1e diff --git a/tests/resources/merge-resolve/.gitted/objects/34/bfafff88eaf118402b44e6f3e2dbbf1a582b05 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/34/bfafff88eaf118402b44e6f3e2dbbf1a582b05 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/34/bfafff88eaf118402b44e6f3e2dbbf1a582b05 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/34/bfafff88eaf118402b44e6f3e2dbbf1a582b05 diff --git a/tests/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/0c6eb3010efc403a6bed682332635314e9ed58 diff --git a/tests/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/411bfb77cd2cc431f3a03a2b4976ed94b5d241 diff --git a/tests/resources/merge-resolve/.gitted/objects/35/4704d3613ad4228e4786fc76656b11e98236c4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/4704d3613ad4228e4786fc76656b11e98236c4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/35/4704d3613ad4228e4786fc76656b11e98236c4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/4704d3613ad4228e4786fc76656b11e98236c4 diff --git a/tests/resources/merge-resolve/.gitted/objects/35/632e43612c06a3ea924bfbacd48333da874c29 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/632e43612c06a3ea924bfbacd48333da874c29 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/35/632e43612c06a3ea924bfbacd48333da874c29 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/632e43612c06a3ea924bfbacd48333da874c29 diff --git a/tests/resources/merge-resolve/.gitted/objects/35/75826c96a975031d2c14368529cc5c4353a8fd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/75826c96a975031d2c14368529cc5c4353a8fd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/35/75826c96a975031d2c14368529cc5c4353a8fd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/35/75826c96a975031d2c14368529cc5c4353a8fd diff --git a/tests/resources/merge-resolve/.gitted/objects/36/219b49367146cb2e6a1555b5a9ebd4d0328495 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/36/219b49367146cb2e6a1555b5a9ebd4d0328495 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/36/219b49367146cb2e6a1555b5a9ebd4d0328495 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/36/219b49367146cb2e6a1555b5a9ebd4d0328495 diff --git a/tests/resources/merge-resolve/.gitted/objects/36/4bbe4ce80c7bd31e6307dce77d46e3e1759fb3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/36/4bbe4ce80c7bd31e6307dce77d46e3e1759fb3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/36/4bbe4ce80c7bd31e6307dce77d46e3e1759fb3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/36/4bbe4ce80c7bd31e6307dce77d46e3e1759fb3 diff --git a/tests/resources/merge-resolve/.gitted/objects/37/48859b001c6e627e712a07951aee40afd19b41 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/37/48859b001c6e627e712a07951aee40afd19b41 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/37/48859b001c6e627e712a07951aee40afd19b41 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/37/48859b001c6e627e712a07951aee40afd19b41 diff --git a/tests/resources/merge-resolve/.gitted/objects/38/5c8a0f26ddf79e9041e15e17dc352ed2c4cced b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/38/5c8a0f26ddf79e9041e15e17dc352ed2c4cced similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/38/5c8a0f26ddf79e9041e15e17dc352ed2c4cced rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/38/5c8a0f26ddf79e9041e15e17dc352ed2c4cced diff --git a/tests/resources/merge-resolve/.gitted/objects/3b/47b031b3e55ae11e14a05260b1c3ffd6838d55 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3b/47b031b3e55ae11e14a05260b1c3ffd6838d55 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/3b/47b031b3e55ae11e14a05260b1c3ffd6838d55 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3b/47b031b3e55ae11e14a05260b1c3ffd6838d55 diff --git a/tests/resources/merge-resolve/.gitted/objects/3b/bf0bf59b20df5d5fc58b9fc1dc07be637c301f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3b/bf0bf59b20df5d5fc58b9fc1dc07be637c301f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/3b/bf0bf59b20df5d5fc58b9fc1dc07be637c301f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3b/bf0bf59b20df5d5fc58b9fc1dc07be637c301f diff --git a/tests/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3e/f4d30382ca33fdeba9fda895a99e0891ba37aa diff --git a/tests/resources/merge-resolve/.gitted/objects/3e/f9bfe82f9635518ae89152322f3b46fd4ba25b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3e/f9bfe82f9635518ae89152322f3b46fd4ba25b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/3e/f9bfe82f9635518ae89152322f3b46fd4ba25b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/3e/f9bfe82f9635518ae89152322f3b46fd4ba25b diff --git a/tests/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/40/2784a46a4a3982294231594cbeb431f506d22c diff --git a/tests/resources/merge-resolve/.gitted/objects/41/2b32fb66137366147f1801ecc962452757d48a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/41/2b32fb66137366147f1801ecc962452757d48a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/41/2b32fb66137366147f1801ecc962452757d48a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/41/2b32fb66137366147f1801ecc962452757d48a diff --git a/tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/42/18670ab81cc219a9f94befb5c5dad90ec52648 diff --git a/tests/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/43/aafd43bea779ec74317dc361f45ae3f532a505 diff --git a/tests/resources/merge-resolve/.gitted/objects/43/c338656342227a3a3cd3aa85cbf784061f5425 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/43/c338656342227a3a3cd3aa85cbf784061f5425 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/43/c338656342227a3a3cd3aa85cbf784061f5425 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/43/c338656342227a3a3cd3aa85cbf784061f5425 diff --git a/tests/resources/merge-resolve/.gitted/objects/45/299c1ca5e07bba1fd90843056fb559f96b1f5a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/45/299c1ca5e07bba1fd90843056fb559f96b1f5a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/45/299c1ca5e07bba1fd90843056fb559f96b1f5a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/45/299c1ca5e07bba1fd90843056fb559f96b1f5a diff --git a/tests/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/46/6daf8552b891e5c22bc58c9d7fc1a2eb8f0289 diff --git a/tests/resources/merge-resolve/.gitted/objects/47/6dbb3e207313d1d8aaa120c6ad204bf1295e53 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/47/6dbb3e207313d1d8aaa120c6ad204bf1295e53 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/47/6dbb3e207313d1d8aaa120c6ad204bf1295e53 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/47/6dbb3e207313d1d8aaa120c6ad204bf1295e53 diff --git a/tests/resources/merge-resolve/.gitted/objects/47/8172cb2f5ff9b514bc9d04d3bd5ef5840cb3b2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/47/8172cb2f5ff9b514bc9d04d3bd5ef5840cb3b2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/47/8172cb2f5ff9b514bc9d04d3bd5ef5840cb3b2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/47/8172cb2f5ff9b514bc9d04d3bd5ef5840cb3b2 diff --git a/tests/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/130a28ef567af9a6a6104c38773fedfa5f9742 diff --git a/tests/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/9df817155e4bdd3c6ee192a72c52f481818230 diff --git a/tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/49/fd9edac79d15c8fbfca2d481cbb900beba22a6 diff --git a/tests/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4a/9550ebcc97ce22b22f45af7b829bb030d003f5 diff --git a/tests/resources/merge-resolve/.gitted/objects/4b/253da36a0ae8bfce63aeabd8c5b58429925594 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/253da36a0ae8bfce63aeabd8c5b58429925594 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4b/253da36a0ae8bfce63aeabd8c5b58429925594 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/253da36a0ae8bfce63aeabd8c5b58429925594 diff --git a/tests/resources/merge-resolve/.gitted/objects/4b/48deed3a433909bfd6b6ab3d4b91348b6af464 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/48deed3a433909bfd6b6ab3d4b91348b6af464 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4b/48deed3a433909bfd6b6ab3d4b91348b6af464 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/48deed3a433909bfd6b6ab3d4b91348b6af464 diff --git a/tests/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 diff --git a/tests/resources/merge-resolve/.gitted/objects/4c/9fac0707f8d4195037ae5a681aa48626491541 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4c/9fac0707f8d4195037ae5a681aa48626491541 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4c/9fac0707f8d4195037ae5a681aa48626491541 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4c/9fac0707f8d4195037ae5a681aa48626491541 diff --git a/tests/resources/merge-resolve/.gitted/objects/4c/a408a8c88655f7586a1b580be6fad138121e98 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4c/a408a8c88655f7586a1b580be6fad138121e98 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4c/a408a8c88655f7586a1b580be6fad138121e98 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4c/a408a8c88655f7586a1b580be6fad138121e98 diff --git a/tests/resources/merge-resolve/.gitted/objects/4e/0d9401aee78eb345a8685a859d37c8c3c0bbed b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/0d9401aee78eb345a8685a859d37c8c3c0bbed similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4e/0d9401aee78eb345a8685a859d37c8c3c0bbed rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/0d9401aee78eb345a8685a859d37c8c3c0bbed diff --git a/tests/resources/merge-resolve/.gitted/objects/4e/886e602529caa9ab11d71f86634bd1b6e0de10 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/886e602529caa9ab11d71f86634bd1b6e0de10 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4e/886e602529caa9ab11d71f86634bd1b6e0de10 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/886e602529caa9ab11d71f86634bd1b6e0de10 diff --git a/tests/resources/merge-resolve/.gitted/objects/4e/b04c9e79e88f6640d01ff5b25ca2a60764f216 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/b04c9e79e88f6640d01ff5b25ca2a60764f216 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4e/b04c9e79e88f6640d01ff5b25ca2a60764f216 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4e/b04c9e79e88f6640d01ff5b25ca2a60764f216 diff --git a/tests/resources/merge-resolve/.gitted/objects/4f/e93c0ec83eb6305cbace3dace88ecee1b63cb6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4f/e93c0ec83eb6305cbace3dace88ecee1b63cb6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/4f/e93c0ec83eb6305cbace3dace88ecee1b63cb6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/4f/e93c0ec83eb6305cbace3dace88ecee1b63cb6 diff --git a/tests/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/12fd565b1393bdfda1805d4ec38ce6619e1fd1 diff --git a/tests/resources/merge-resolve/.gitted/objects/50/4f75ac95a71ef98051817618576a68505b92f9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/4f75ac95a71ef98051817618576a68505b92f9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/50/4f75ac95a71ef98051817618576a68505b92f9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/4f75ac95a71ef98051817618576a68505b92f9 diff --git a/tests/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/84fc2a88b6bdba8db93bd3953a8f4fdb470238 diff --git a/tests/resources/merge-resolve/.gitted/objects/50/ce7d7d01217679e26c55939eef119e0c93e272 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/ce7d7d01217679e26c55939eef119e0c93e272 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/50/ce7d7d01217679e26c55939eef119e0c93e272 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/50/ce7d7d01217679e26c55939eef119e0c93e272 diff --git a/tests/resources/merge-resolve/.gitted/objects/51/95a1b480f66691b667f10a9e41e70115a78351 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/51/95a1b480f66691b667f10a9e41e70115a78351 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/51/95a1b480f66691b667f10a9e41e70115a78351 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/51/95a1b480f66691b667f10a9e41e70115a78351 diff --git a/tests/resources/merge-resolve/.gitted/objects/52/d8bc572af2b6d4ee0d5e62ed5d1fbad92210a9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/52/d8bc572af2b6d4ee0d5e62ed5d1fbad92210a9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/52/d8bc572af2b6d4ee0d5e62ed5d1fbad92210a9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/52/d8bc572af2b6d4ee0d5e62ed5d1fbad92210a9 diff --git a/tests/resources/merge-resolve/.gitted/objects/53/825f41ac8d640612f9423a2f03a69f3d96809a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/53/825f41ac8d640612f9423a2f03a69f3d96809a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/53/825f41ac8d640612f9423a2f03a69f3d96809a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/53/825f41ac8d640612f9423a2f03a69f3d96809a diff --git a/tests/resources/merge-resolve/.gitted/objects/54/269b3f6ec3d7d4ede24dd350dd5d605495c3ae b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/269b3f6ec3d7d4ede24dd350dd5d605495c3ae similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/54/269b3f6ec3d7d4ede24dd350dd5d605495c3ae rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/269b3f6ec3d7d4ede24dd350dd5d605495c3ae diff --git a/tests/resources/merge-resolve/.gitted/objects/54/59c89aa0026d543ce8343bd89871bce543f9c2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/59c89aa0026d543ce8343bd89871bce543f9c2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/54/59c89aa0026d543ce8343bd89871bce543f9c2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/59c89aa0026d543ce8343bd89871bce543f9c2 diff --git a/tests/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/54/7607c690372fe81fab8e3bb44c530e129118fd diff --git a/tests/resources/merge-resolve/.gitted/objects/55/b4e4687e7a0d9ca367016ed930f385d4022e6f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/55/b4e4687e7a0d9ca367016ed930f385d4022e6f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/55/b4e4687e7a0d9ca367016ed930f385d4022e6f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/55/b4e4687e7a0d9ca367016ed930f385d4022e6f diff --git a/tests/resources/merge-resolve/.gitted/objects/56/6ab53c220a2eafc1212af1a024513230280ab9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/56/6ab53c220a2eafc1212af1a024513230280ab9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/56/6ab53c220a2eafc1212af1a024513230280ab9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/56/6ab53c220a2eafc1212af1a024513230280ab9 diff --git a/tests/resources/merge-resolve/.gitted/objects/56/a638b76b75e068590ac999c2f8621e7f3e264c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/56/a638b76b75e068590ac999c2f8621e7f3e264c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/56/a638b76b75e068590ac999c2f8621e7f3e264c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/56/a638b76b75e068590ac999c2f8621e7f3e264c diff --git a/tests/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/57/079a46233ae2b6df62e9ade71c4948512abefb diff --git a/tests/resources/merge-resolve/.gitted/objects/58/43febcb23480df0b5edb22a21c59c772bb8e29 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/43febcb23480df0b5edb22a21c59c772bb8e29 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/58/43febcb23480df0b5edb22a21c59c772bb8e29 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/43febcb23480df0b5edb22a21c59c772bb8e29 diff --git a/tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/87a5e516c53bd58efb0f02ec6aa031b6fe9ad7 diff --git a/tests/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/58/e853f66699fd02629fd50bde08082bc005933a diff --git a/tests/resources/merge-resolve/.gitted/objects/59/6803b523203a4851c824c07366906f8353f4ad b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/59/6803b523203a4851c824c07366906f8353f4ad similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/59/6803b523203a4851c824c07366906f8353f4ad rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/59/6803b523203a4851c824c07366906f8353f4ad diff --git a/tests/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/2411f8075f48a6b2fdb85ebc0d371747c4df15 diff --git a/tests/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/341ead2ba6f2af98ce5ec3fe84f6b6d2899c0d diff --git a/tests/resources/merge-resolve/.gitted/objects/5c/3b68a71fc4fa5d362fd3875e53137c6a5ab7a5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/3b68a71fc4fa5d362fd3875e53137c6a5ab7a5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5c/3b68a71fc4fa5d362fd3875e53137c6a5ab7a5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5c/3b68a71fc4fa5d362fd3875e53137c6a5ab7a5 diff --git a/tests/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5d/c1018e90b19654bee986b7a0c268804d39659d diff --git a/tests/resources/merge-resolve/.gitted/objects/5d/dd0fe66f990dc0e5cf9fec6d9b465240e9537f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5d/dd0fe66f990dc0e5cf9fec6d9b465240e9537f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5d/dd0fe66f990dc0e5cf9fec6d9b465240e9537f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5d/dd0fe66f990dc0e5cf9fec6d9b465240e9537f diff --git a/tests/resources/merge-resolve/.gitted/objects/5e/b7bb6a146eb3c7fd3990b240a2308eceb1cf8d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5e/b7bb6a146eb3c7fd3990b240a2308eceb1cf8d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5e/b7bb6a146eb3c7fd3990b240a2308eceb1cf8d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5e/b7bb6a146eb3c7fd3990b240a2308eceb1cf8d diff --git a/tests/resources/merge-resolve/.gitted/objects/5f/bfbdc04b4eca46f54f4853a3c5a1dce28f5165 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5f/bfbdc04b4eca46f54f4853a3c5a1dce28f5165 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/5f/bfbdc04b4eca46f54f4853a3c5a1dce28f5165 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/5f/bfbdc04b4eca46f54f4853a3c5a1dce28f5165 diff --git a/tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/60/61fe116ecba0800c26113ea1a7dfac2e16eeaf diff --git a/tests/resources/merge-resolve/.gitted/objects/60/91fc2c036a382a69489e3f518ee5aae9a4e567 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/60/91fc2c036a382a69489e3f518ee5aae9a4e567 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/60/91fc2c036a382a69489e3f518ee5aae9a4e567 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/60/91fc2c036a382a69489e3f518ee5aae9a4e567 diff --git a/tests/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/61/340eeed7340fa6a8792def9a5938bb5d4434bb diff --git a/tests/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/61/78885b38fe96e825ac0f492c0a941f288b37f6 diff --git a/tests/resources/merge-resolve/.gitted/objects/62/12c31dab5e482247d7977e4f0dd3601decf13b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/12c31dab5e482247d7977e4f0dd3601decf13b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/62/12c31dab5e482247d7977e4f0dd3601decf13b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/12c31dab5e482247d7977e4f0dd3601decf13b diff --git a/tests/resources/merge-resolve/.gitted/objects/62/269111c3b02a9355badcb9da8678b1bf41787b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/269111c3b02a9355badcb9da8678b1bf41787b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/62/269111c3b02a9355badcb9da8678b1bf41787b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/269111c3b02a9355badcb9da8678b1bf41787b diff --git a/tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/33c6a0670228627f93c01cef32485a30403670 diff --git a/tests/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/62/c4f6533c9a3894191fdcb96a3be935ade63f1a diff --git a/tests/resources/merge-resolve/.gitted/objects/63/247125386de9ec90a27ad36169307bf8a11a38 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/63/247125386de9ec90a27ad36169307bf8a11a38 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/63/247125386de9ec90a27ad36169307bf8a11a38 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/63/247125386de9ec90a27ad36169307bf8a11a38 diff --git a/tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/67/110d77886b2af6309b9212961e72b8583e5fa9 diff --git a/tests/resources/merge-resolve/.gitted/objects/67/18a45909532d1fcf5600d0877f7fe7e78f0b86 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/67/18a45909532d1fcf5600d0877f7fe7e78f0b86 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/67/18a45909532d1fcf5600d0877f7fe7e78f0b86 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/67/18a45909532d1fcf5600d0877f7fe7e78f0b86 diff --git a/tests/resources/merge-resolve/.gitted/objects/68/c6c84b091926c7d90aa6a79b2bc3bb6adccd8e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/68/c6c84b091926c7d90aa6a79b2bc3bb6adccd8e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/68/c6c84b091926c7d90aa6a79b2bc3bb6adccd8e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/68/c6c84b091926c7d90aa6a79b2bc3bb6adccd8e diff --git a/tests/resources/merge-resolve/.gitted/objects/69/f570c57b24ea7c086e94c5e574964798321435 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/69/f570c57b24ea7c086e94c5e574964798321435 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/69/f570c57b24ea7c086e94c5e574964798321435 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/69/f570c57b24ea7c086e94c5e574964798321435 diff --git a/tests/resources/merge-resolve/.gitted/objects/6a/e1a3967031a42cf955d9d5c2395211ac82f6cf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6a/e1a3967031a42cf955d9d5c2395211ac82f6cf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6a/e1a3967031a42cf955d9d5c2395211ac82f6cf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6a/e1a3967031a42cf955d9d5c2395211ac82f6cf diff --git a/tests/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6b/7e37be8ce0b897093f2878a9dcd8f396beda2c diff --git a/tests/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6c/06dcd163587c2cc18be44857e0b71116382aeb diff --git a/tests/resources/merge-resolve/.gitted/objects/6e/3b9eb35214d4e31ed5789afc7d520ac798ce55 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6e/3b9eb35214d4e31ed5789afc7d520ac798ce55 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6e/3b9eb35214d4e31ed5789afc7d520ac798ce55 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6e/3b9eb35214d4e31ed5789afc7d520ac798ce55 diff --git a/tests/resources/merge-resolve/.gitted/objects/6f/32739c3724d1d5f855299309f388606f407468 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/32739c3724d1d5f855299309f388606f407468 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6f/32739c3724d1d5f855299309f388606f407468 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/32739c3724d1d5f855299309f388606f407468 diff --git a/tests/resources/merge-resolve/.gitted/objects/6f/a33014764bf1120a454eb8437ae098238e409b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/a33014764bf1120a454eb8437ae098238e409b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6f/a33014764bf1120a454eb8437ae098238e409b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/a33014764bf1120a454eb8437ae098238e409b diff --git a/tests/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/6f/be9fb85c86d7d1435f728da418bdff52c640a9 diff --git a/tests/resources/merge-resolve/.gitted/objects/71/17467b18605a660ebe5586df69e2311ed5609f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/17467b18605a660ebe5586df69e2311ed5609f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/71/17467b18605a660ebe5586df69e2311ed5609f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/17467b18605a660ebe5586df69e2311ed5609f diff --git a/tests/resources/merge-resolve/.gitted/objects/71/2ebba6669ea847d9829e4f1059d6c830c8b531 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/2ebba6669ea847d9829e4f1059d6c830c8b531 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/71/2ebba6669ea847d9829e4f1059d6c830c8b531 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/2ebba6669ea847d9829e4f1059d6c830c8b531 diff --git a/tests/resources/merge-resolve/.gitted/objects/71/add2d7b93d55bf3600f8a1582beceebbd050c8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/add2d7b93d55bf3600f8a1582beceebbd050c8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/71/add2d7b93d55bf3600f8a1582beceebbd050c8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/71/add2d7b93d55bf3600f8a1582beceebbd050c8 diff --git a/tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/72/cdb057b340205164478565e91eb71647e66891 diff --git a/tests/resources/merge-resolve/.gitted/objects/72/ea499e108df5ff0a4a913e7655bbeeb1fb69f2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/72/ea499e108df5ff0a4a913e7655bbeeb1fb69f2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/72/ea499e108df5ff0a4a913e7655bbeeb1fb69f2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/72/ea499e108df5ff0a4a913e7655bbeeb1fb69f2 diff --git a/tests/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/74/df13f0793afdaa972150bba976f7de8284914e diff --git a/tests/resources/merge-resolve/.gitted/objects/75/a811bf6bc57694adb3fe604786f3a4efd1cd1b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/75/a811bf6bc57694adb3fe604786f3a4efd1cd1b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/75/a811bf6bc57694adb3fe604786f3a4efd1cd1b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/75/a811bf6bc57694adb3fe604786f3a4efd1cd1b diff --git a/tests/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/76/63fce0130db092936b137cabd693ec234eb060 diff --git a/tests/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/76/ab0e2868197ec158ddd6c78d8a0d2fd73d38f9 diff --git a/tests/resources/merge-resolve/.gitted/objects/7a/a3edf2bcfee22398e6b55295aa56366b7aaf76 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7a/a3edf2bcfee22398e6b55295aa56366b7aaf76 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7a/a3edf2bcfee22398e6b55295aa56366b7aaf76 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7a/a3edf2bcfee22398e6b55295aa56366b7aaf76 diff --git a/tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7a/f14d9c679baaef35555095f4f5d33e9a569ab9 diff --git a/tests/resources/merge-resolve/.gitted/objects/7c/04ca611203ed320c5f495b9813054dd23be3be b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/04ca611203ed320c5f495b9813054dd23be3be similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7c/04ca611203ed320c5f495b9813054dd23be3be rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/04ca611203ed320c5f495b9813054dd23be3be diff --git a/tests/resources/merge-resolve/.gitted/objects/7c/2c5228c9e90170d4a35e6558e47163daf092e5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/2c5228c9e90170d4a35e6558e47163daf092e5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7c/2c5228c9e90170d4a35e6558e47163daf092e5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/2c5228c9e90170d4a35e6558e47163daf092e5 diff --git a/tests/resources/merge-resolve/.gitted/objects/7c/b63eed597130ba4abb87b3e544b85021905520 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/b63eed597130ba4abb87b3e544b85021905520 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7c/b63eed597130ba4abb87b3e544b85021905520 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7c/b63eed597130ba4abb87b3e544b85021905520 diff --git a/tests/resources/merge-resolve/.gitted/objects/7e/2d058d5fedf8329db44db4fac610d6b1a89159 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7e/2d058d5fedf8329db44db4fac610d6b1a89159 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7e/2d058d5fedf8329db44db4fac610d6b1a89159 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7e/2d058d5fedf8329db44db4fac610d6b1a89159 diff --git a/tests/resources/merge-resolve/.gitted/objects/7f/7a2da58126226986d71c6ddfab4afba693280d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7f/7a2da58126226986d71c6ddfab4afba693280d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/7f/7a2da58126226986d71c6ddfab4afba693280d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/7f/7a2da58126226986d71c6ddfab4afba693280d diff --git a/tests/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/80/a8fbb3abb1ba423d554e9630b8fc2e5698f86b diff --git a/tests/resources/merge-resolve/.gitted/objects/81/1c70fcb6d5bbd022d04cc31836d30b436f9551 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/81/1c70fcb6d5bbd022d04cc31836d30b436f9551 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/81/1c70fcb6d5bbd022d04cc31836d30b436f9551 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/81/1c70fcb6d5bbd022d04cc31836d30b436f9551 diff --git a/tests/resources/merge-resolve/.gitted/objects/81/87117062b750eed4f93fd7e899f17b52ce554d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/81/87117062b750eed4f93fd7e899f17b52ce554d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/81/87117062b750eed4f93fd7e899f17b52ce554d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/81/87117062b750eed4f93fd7e899f17b52ce554d diff --git a/tests/resources/merge-resolve/.gitted/objects/83/07d93a155903a5c49576583f0ce1f6ff897c0e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/07d93a155903a5c49576583f0ce1f6ff897c0e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/83/07d93a155903a5c49576583f0ce1f6ff897c0e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/07d93a155903a5c49576583f0ce1f6ff897c0e diff --git a/tests/resources/merge-resolve/.gitted/objects/83/6b8b82b26cab22eaaed8820877c76d6c8bca19 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/6b8b82b26cab22eaaed8820877c76d6c8bca19 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/83/6b8b82b26cab22eaaed8820877c76d6c8bca19 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/6b8b82b26cab22eaaed8820877c76d6c8bca19 diff --git a/tests/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/83/824a8c6658768e2013905219cc8c64cc3d9a2e diff --git a/tests/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/84/9619b03ae540acee4d1edec96b86993da6b497 diff --git a/tests/resources/merge-resolve/.gitted/objects/84/de84f8f3a6d63e636ee9ad81f4b80512fa9bbe b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/84/de84f8f3a6d63e636ee9ad81f4b80512fa9bbe similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/84/de84f8f3a6d63e636ee9ad81f4b80512fa9bbe rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/84/de84f8f3a6d63e636ee9ad81f4b80512fa9bbe diff --git a/tests/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/86/088dae8bade454995b21a1c88107b0e1accdab diff --git a/tests/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/87/b4926260d77a3b851e71ecce06839bd650b231 diff --git a/tests/resources/merge-resolve/.gitted/objects/88/e185910a15cd13bdf44854ad037f4842b03b29 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/88/e185910a15cd13bdf44854ad037f4842b03b29 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/88/e185910a15cd13bdf44854ad037f4842b03b29 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/88/e185910a15cd13bdf44854ad037f4842b03b29 diff --git a/tests/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8a/ad9d0ea334951da47b621a475b39cc6ed759bf diff --git a/tests/resources/merge-resolve/.gitted/objects/8a/ae714f7d939309d7f132b30646d96743134a9f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8a/ae714f7d939309d7f132b30646d96743134a9f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8a/ae714f7d939309d7f132b30646d96743134a9f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8a/ae714f7d939309d7f132b30646d96743134a9f diff --git a/tests/resources/merge-resolve/.gitted/objects/8b/095d8fd01594f4d14454d073e3ac57b9ce485f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/095d8fd01594f4d14454d073e3ac57b9ce485f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8b/095d8fd01594f4d14454d073e3ac57b9ce485f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/095d8fd01594f4d14454d073e3ac57b9ce485f diff --git a/tests/resources/merge-resolve/.gitted/objects/8b/5b53cb2aa9ceb1139f5312fcfa3cc3c5a47c9a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/5b53cb2aa9ceb1139f5312fcfa3cc3c5a47c9a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8b/5b53cb2aa9ceb1139f5312fcfa3cc3c5a47c9a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/5b53cb2aa9ceb1139f5312fcfa3cc3c5a47c9a diff --git a/tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/7cd60d49ce3a1a770ece43b7d29b5cf462a33a diff --git a/tests/resources/merge-resolve/.gitted/objects/8b/fb012a6d809e499bd8d3e194a3929bc8995b93 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/fb012a6d809e499bd8d3e194a3929bc8995b93 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8b/fb012a6d809e499bd8d3e194a3929bc8995b93 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8b/fb012a6d809e499bd8d3e194a3929bc8995b93 diff --git a/tests/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8c/749d9968d4b10dcfb06c9f97d0e5d92d337071 diff --git a/tests/resources/merge-resolve/.gitted/objects/8f/4433f8593ddd65b7dd43dd4564d841f4d9c8aa b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8f/4433f8593ddd65b7dd43dd4564d841f4d9c8aa similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/8f/4433f8593ddd65b7dd43dd4564d841f4d9c8aa rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/8f/4433f8593ddd65b7dd43dd4564d841f4d9c8aa diff --git a/tests/resources/merge-resolve/.gitted/objects/90/a336c7dacbe295159413559b0043b8bdc60d57 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/90/a336c7dacbe295159413559b0043b8bdc60d57 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/90/a336c7dacbe295159413559b0043b8bdc60d57 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/90/a336c7dacbe295159413559b0043b8bdc60d57 diff --git a/tests/resources/merge-resolve/.gitted/objects/91/2b2d7819cf9c1029e414883857ed61d597a1a5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/2b2d7819cf9c1029e414883857ed61d597a1a5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/91/2b2d7819cf9c1029e414883857ed61d597a1a5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/2b2d7819cf9c1029e414883857ed61d597a1a5 diff --git a/tests/resources/merge-resolve/.gitted/objects/91/8bb3e09090a9995d48af9a2a6296d7e6088d1c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/8bb3e09090a9995d48af9a2a6296d7e6088d1c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/91/8bb3e09090a9995d48af9a2a6296d7e6088d1c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/8bb3e09090a9995d48af9a2a6296d7e6088d1c diff --git a/tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/91/f44111cb1cb1358ac6944ad356ca1738813ea1 diff --git a/tests/resources/merge-resolve/.gitted/objects/92/7d4943cdbdc9a667db8e62cfd0a41870235c51 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/92/7d4943cdbdc9a667db8e62cfd0a41870235c51 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/92/7d4943cdbdc9a667db8e62cfd0a41870235c51 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/92/7d4943cdbdc9a667db8e62cfd0a41870235c51 diff --git a/tests/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/93/77fccdb210540b8c0520cc6e80eb632c20bd25 diff --git a/tests/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/94/4f5dd1a867cab4c2bbcb896493435cae1dcc1a diff --git a/tests/resources/merge-resolve/.gitted/objects/94/8ba6e701c1edab0c2d394fb7c5538334129793 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/94/8ba6e701c1edab0c2d394fb7c5538334129793 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/94/8ba6e701c1edab0c2d394fb7c5538334129793 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/94/8ba6e701c1edab0c2d394fb7c5538334129793 diff --git a/tests/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/95/646149ab6b6ba6edc83cff678582538b457b2b diff --git a/tests/resources/merge-resolve/.gitted/objects/95/9de65e568274120fdf9e3af9f77b1550122149 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/95/9de65e568274120fdf9e3af9f77b1550122149 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/95/9de65e568274120fdf9e3af9f77b1550122149 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/95/9de65e568274120fdf9e3af9f77b1550122149 diff --git a/tests/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/96/8ca794a4597f7f6abbb2b8d940b4078a0f3fd4 diff --git a/tests/resources/merge-resolve/.gitted/objects/96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/96/bca8d4f05cc4c5e33e4389f80a1309e86fe054 diff --git a/tests/resources/merge-resolve/.gitted/objects/97/7c696519c5a3004c5f1d15d60c89dbeb8f235f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/97/7c696519c5a3004c5f1d15d60c89dbeb8f235f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/97/7c696519c5a3004c5f1d15d60c89dbeb8f235f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/97/7c696519c5a3004c5f1d15d60c89dbeb8f235f diff --git a/tests/resources/merge-resolve/.gitted/objects/98/ba4205fcf31f5dd93c916d35fe3f3b3d0e6714 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/98/ba4205fcf31f5dd93c916d35fe3f3b3d0e6714 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/98/ba4205fcf31f5dd93c916d35fe3f3b3d0e6714 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/98/ba4205fcf31f5dd93c916d35fe3f3b3d0e6714 diff --git a/tests/resources/merge-resolve/.gitted/objects/98/d52d07c0b0bbf2b46548f6aa521295c2cb55db b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/98/d52d07c0b0bbf2b46548f6aa521295c2cb55db similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/98/d52d07c0b0bbf2b46548f6aa521295c2cb55db rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/98/d52d07c0b0bbf2b46548f6aa521295c2cb55db diff --git a/tests/resources/merge-resolve/.gitted/objects/99/b4f7e4f24470fa06b980bc21f1095c2a9425c0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/99/b4f7e4f24470fa06b980bc21f1095c2a9425c0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/99/b4f7e4f24470fa06b980bc21f1095c2a9425c0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/99/b4f7e4f24470fa06b980bc21f1095c2a9425c0 diff --git a/tests/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9a/301fbe6fada7dcb74fcd7c20269b5c743459a7 diff --git a/tests/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9a/f731fa116d1eb9a6c0109562472cfee6f5a979 diff --git a/tests/resources/merge-resolve/.gitted/objects/9c/0b6c34ef379a42d858f03fef38630f476b9102 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9c/0b6c34ef379a42d858f03fef38630f476b9102 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9c/0b6c34ef379a42d858f03fef38630f476b9102 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9c/0b6c34ef379a42d858f03fef38630f476b9102 diff --git a/tests/resources/merge-resolve/.gitted/objects/9e/7f4359c469f309b6057febf4c6e80742cbed5b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9e/7f4359c469f309b6057febf4c6e80742cbed5b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9e/7f4359c469f309b6057febf4c6e80742cbed5b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9e/7f4359c469f309b6057febf4c6e80742cbed5b diff --git a/tests/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9e/fe7723802d4305142eee177e018fee1572c4f4 diff --git a/tests/resources/merge-resolve/.gitted/objects/9f/74397a3397b3585faf09e9926b110d7f654254 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9f/74397a3397b3585faf09e9926b110d7f654254 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/9f/74397a3397b3585faf09e9926b110d7f654254 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/9f/74397a3397b3585faf09e9926b110d7f654254 diff --git a/tests/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a0/31a28ae70e33a641ce4b8a8f6317f1ab79dee4 diff --git a/tests/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a3/9a620dae5bc8b4e771cd4d251b7d080401a21e diff --git a/tests/resources/merge-resolve/.gitted/objects/a3/fabece9eb8748da810e1e08266fef9b7136ad4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a3/fabece9eb8748da810e1e08266fef9b7136ad4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a3/fabece9eb8748da810e1e08266fef9b7136ad4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a3/fabece9eb8748da810e1e08266fef9b7136ad4 diff --git a/tests/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a4/1b1bb6d0be3c22fb654234c33b428e15c8cc27 diff --git a/tests/resources/merge-resolve/.gitted/objects/a4/3150a738849c59376cf30bb2a68348a83c8f48 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a4/3150a738849c59376cf30bb2a68348a83c8f48 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a4/3150a738849c59376cf30bb2a68348a83c8f48 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a4/3150a738849c59376cf30bb2a68348a83c8f48 diff --git a/tests/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a5/563304ddf6caba25cb50323a2ea6f7dbfcadca diff --git a/tests/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/08b253bd507417ec42d1467a7fd2d7519c4956 diff --git a/tests/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/65fb87eb2f7a1920b73b2d5a057f8f8476a42b diff --git a/tests/resources/merge-resolve/.gitted/objects/a7/7a56a49f8f3ae242e02717f18ebbc60c5cc543 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/7a56a49f8f3ae242e02717f18ebbc60c5cc543 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a7/7a56a49f8f3ae242e02717f18ebbc60c5cc543 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/7a56a49f8f3ae242e02717f18ebbc60c5cc543 diff --git a/tests/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a7/dbfcbfc1a60709cb80b5ca24539008456531d0 diff --git a/tests/resources/merge-resolve/.gitted/objects/a8/02e06f1782a9645b9851bc7202cee74a8a4972 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a8/02e06f1782a9645b9851bc7202cee74a8a4972 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a8/02e06f1782a9645b9851bc7202cee74a8a4972 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a8/02e06f1782a9645b9851bc7202cee74a8a4972 diff --git a/tests/resources/merge-resolve/.gitted/objects/a8/87dd39ad3edd610fc9083dcb61e40ab50673d1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a8/87dd39ad3edd610fc9083dcb61e40ab50673d1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a8/87dd39ad3edd610fc9083dcb61e40ab50673d1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a8/87dd39ad3edd610fc9083dcb61e40ab50673d1 diff --git a/tests/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/a9/0bc3fb6f15181972a2959a921429efbd81a473 diff --git a/tests/resources/merge-resolve/.gitted/objects/ab/40af3cb8a3ed2e2843e96d9aa7871336b94573 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/40af3cb8a3ed2e2843e96d9aa7871336b94573 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ab/40af3cb8a3ed2e2843e96d9aa7871336b94573 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/40af3cb8a3ed2e2843e96d9aa7871336b94573 diff --git a/tests/resources/merge-resolve/.gitted/objects/ab/6c44a2e84492ad4b41bb6bac87353e9d02ac8b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/6c44a2e84492ad4b41bb6bac87353e9d02ac8b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ab/6c44a2e84492ad4b41bb6bac87353e9d02ac8b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/6c44a2e84492ad4b41bb6bac87353e9d02ac8b diff --git a/tests/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ab/929391ac42572f92110f3deeb4f0844a951e22 diff --git a/tests/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ac/4045f965119e6998f4340ed0f411decfb3ec05 diff --git a/tests/resources/merge-resolve/.gitted/objects/ad/01aebfdf2ac13145efafe3f9fcf798882f1730 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/01aebfdf2ac13145efafe3f9fcf798882f1730 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ad/01aebfdf2ac13145efafe3f9fcf798882f1730 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/01aebfdf2ac13145efafe3f9fcf798882f1730 diff --git a/tests/resources/merge-resolve/.gitted/objects/ad/26b598134264fd284292cb233fc0b2f25851da b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/26b598134264fd284292cb233fc0b2f25851da similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ad/26b598134264fd284292cb233fc0b2f25851da rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/26b598134264fd284292cb233fc0b2f25851da diff --git a/tests/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/a14492498136771f69dd451866cabcb0e9ef9a diff --git a/tests/resources/merge-resolve/.gitted/objects/ad/a55a45d14527dc3dfc714ea1c65d2e1e6fbe87 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/a55a45d14527dc3dfc714ea1c65d2e1e6fbe87 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ad/a55a45d14527dc3dfc714ea1c65d2e1e6fbe87 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ad/a55a45d14527dc3dfc714ea1c65d2e1e6fbe87 diff --git a/tests/resources/merge-resolve/.gitted/objects/b2/d399ae15224e1d58066e3c8df70ce37de7a656 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b2/d399ae15224e1d58066e3c8df70ce37de7a656 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b2/d399ae15224e1d58066e3c8df70ce37de7a656 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b2/d399ae15224e1d58066e3c8df70ce37de7a656 diff --git a/tests/resources/merge-resolve/.gitted/objects/b4/2712cfe99a1a500b2a51fe984e0b8a7702ba11 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b4/2712cfe99a1a500b2a51fe984e0b8a7702ba11 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b4/2712cfe99a1a500b2a51fe984e0b8a7702ba11 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b4/2712cfe99a1a500b2a51fe984e0b8a7702ba11 diff --git a/tests/resources/merge-resolve/.gitted/objects/b6/9fe837e4cecfd4c9a40cdca7c138468687df07 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b6/9fe837e4cecfd4c9a40cdca7c138468687df07 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b6/9fe837e4cecfd4c9a40cdca7c138468687df07 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b6/9fe837e4cecfd4c9a40cdca7c138468687df07 diff --git a/tests/resources/merge-resolve/.gitted/objects/b6/f610aef53bd343e6c96227de874c66f00ee8e8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b6/f610aef53bd343e6c96227de874c66f00ee8e8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b6/f610aef53bd343e6c96227de874c66f00ee8e8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b6/f610aef53bd343e6c96227de874c66f00ee8e8 diff --git a/tests/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b7/a2576f9fc20024ac9ef17cb134acbd1ac73127 diff --git a/tests/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/b8/a3a806d3950e8c0a03a34f234a92eff0e2c68d diff --git a/tests/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ba/cac9b3493509aa15e1730e1545fc0919d1dae0 diff --git a/tests/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bc/744705e1d8a019993cf88f62bc4020f1b80919 diff --git a/tests/resources/merge-resolve/.gitted/objects/bc/95c75d59386147d1e79a87c33068d8dbfd71f2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bc/95c75d59386147d1e79a87c33068d8dbfd71f2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/bc/95c75d59386147d1e79a87c33068d8dbfd71f2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bc/95c75d59386147d1e79a87c33068d8dbfd71f2 diff --git a/tests/resources/merge-resolve/.gitted/objects/bd/593285fc7fe4ca18ccdbabf027f5d689101452 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/593285fc7fe4ca18ccdbabf027f5d689101452 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/bd/593285fc7fe4ca18ccdbabf027f5d689101452 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/593285fc7fe4ca18ccdbabf027f5d689101452 diff --git a/tests/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/867fbae2faa80b920b002b80b1c91bcade7784 diff --git a/tests/resources/merge-resolve/.gitted/objects/bd/9cb4cd0a770cb9adcb5fce212142ef40ea1c35 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/9cb4cd0a770cb9adcb5fce212142ef40ea1c35 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/bd/9cb4cd0a770cb9adcb5fce212142ef40ea1c35 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/bd/9cb4cd0a770cb9adcb5fce212142ef40ea1c35 diff --git a/tests/resources/merge-resolve/.gitted/objects/be/f6e37b3ee632ba74159168836f382fed21d77d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/be/f6e37b3ee632ba74159168836f382fed21d77d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/be/f6e37b3ee632ba74159168836f382fed21d77d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/be/f6e37b3ee632ba74159168836f382fed21d77d diff --git a/tests/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c0/6a9be584ac49aa02c5551312d9e2982c91df10 diff --git a/tests/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c1/b17981db0840109a820dae8674ee29684134ff diff --git a/tests/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c1/b6a51bbb87c2f82b161412c3d20b59fc69b090 diff --git a/tests/resources/merge-resolve/.gitted/objects/c3/5dee9bcc0e989f3b0c40f68372a9a51b6c4e6a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c3/5dee9bcc0e989f3b0c40f68372a9a51b6c4e6a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c3/5dee9bcc0e989f3b0c40f68372a9a51b6c4e6a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c3/5dee9bcc0e989f3b0c40f68372a9a51b6c4e6a diff --git a/tests/resources/merge-resolve/.gitted/objects/c3/d02eeef75183df7584d8d13ac03053910c1301 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c3/d02eeef75183df7584d8d13ac03053910c1301 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c3/d02eeef75183df7584d8d13ac03053910c1301 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c3/d02eeef75183df7584d8d13ac03053910c1301 diff --git a/tests/resources/merge-resolve/.gitted/objects/c4/efe31e9decccc8b2b4d3df9aac2cdfe2995618 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c4/efe31e9decccc8b2b4d3df9aac2cdfe2995618 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c4/efe31e9decccc8b2b4d3df9aac2cdfe2995618 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c4/efe31e9decccc8b2b4d3df9aac2cdfe2995618 diff --git a/tests/resources/merge-resolve/.gitted/objects/c5/0d0f1cb60b8b0fe1615ad20ace557e9d68d7bd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c5/0d0f1cb60b8b0fe1615ad20ace557e9d68d7bd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c5/0d0f1cb60b8b0fe1615ad20ace557e9d68d7bd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c5/0d0f1cb60b8b0fe1615ad20ace557e9d68d7bd diff --git a/tests/resources/merge-resolve/.gitted/objects/c5/bbe550b9f09444bdddd3ecf3d97c0b42aa786c b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c5/bbe550b9f09444bdddd3ecf3d97c0b42aa786c similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c5/bbe550b9f09444bdddd3ecf3d97c0b42aa786c rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c5/bbe550b9f09444bdddd3ecf3d97c0b42aa786c diff --git a/tests/resources/merge-resolve/.gitted/objects/c6/07fc30883e335def28cd686b51f6cfa02b06ec b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c6/07fc30883e335def28cd686b51f6cfa02b06ec similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c6/07fc30883e335def28cd686b51f6cfa02b06ec rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c6/07fc30883e335def28cd686b51f6cfa02b06ec diff --git a/tests/resources/merge-resolve/.gitted/objects/c6/92ecf62007c0ac9fb26e2aa884de2933de15ed b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c6/92ecf62007c0ac9fb26e2aa884de2933de15ed similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c6/92ecf62007c0ac9fb26e2aa884de2933de15ed rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c6/92ecf62007c0ac9fb26e2aa884de2933de15ed diff --git a/tests/resources/merge-resolve/.gitted/objects/c8/f06f2e3bb2964174677e91f0abead0e43c9e5d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c8/f06f2e3bb2964174677e91f0abead0e43c9e5d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c8/f06f2e3bb2964174677e91f0abead0e43c9e5d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c8/f06f2e3bb2964174677e91f0abead0e43c9e5d diff --git a/tests/resources/merge-resolve/.gitted/objects/c9/174cef549ec94ecbc43ef03cdc775b4950becb b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c9/174cef549ec94ecbc43ef03cdc775b4950becb similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c9/174cef549ec94ecbc43ef03cdc775b4950becb rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c9/174cef549ec94ecbc43ef03cdc775b4950becb diff --git a/tests/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/c9/4b27e41064c521120627e07e2035cca1d24ffa diff --git a/tests/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ca/b2cf23998b40f1af2d9d9a756dc9e285a8df4b diff --git a/tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ca/ff6b7d44973f53e3e0cf31d0d695188b19aec6 diff --git a/tests/resources/merge-resolve/.gitted/objects/cb/491780d82e46dc88a065b965ab307a038f2bc2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cb/491780d82e46dc88a065b965ab307a038f2bc2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/cb/491780d82e46dc88a065b965ab307a038f2bc2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cb/491780d82e46dc88a065b965ab307a038f2bc2 diff --git a/tests/resources/merge-resolve/.gitted/objects/cb/6693a788715b82440a54e0eacd19ba9f6ec559 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cb/6693a788715b82440a54e0eacd19ba9f6ec559 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/cb/6693a788715b82440a54e0eacd19ba9f6ec559 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cb/6693a788715b82440a54e0eacd19ba9f6ec559 diff --git a/tests/resources/merge-resolve/.gitted/objects/cc/338e4710c9b257106b8d16d82f86458d5beaf1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cc/338e4710c9b257106b8d16d82f86458d5beaf1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/cc/338e4710c9b257106b8d16d82f86458d5beaf1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cc/338e4710c9b257106b8d16d82f86458d5beaf1 diff --git a/tests/resources/merge-resolve/.gitted/objects/cc/3e3009134cb88014129fc8858d1101359e5e2f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cc/3e3009134cb88014129fc8858d1101359e5e2f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/cc/3e3009134cb88014129fc8858d1101359e5e2f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cc/3e3009134cb88014129fc8858d1101359e5e2f diff --git a/tests/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ce/8860d49e3bea6fd745874a01b7c3e46da8cbc3 diff --git a/tests/resources/merge-resolve/.gitted/objects/ce/e656c392ad0557b3aae0fb411475c206e2926f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ce/e656c392ad0557b3aae0fb411475c206e2926f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ce/e656c392ad0557b3aae0fb411475c206e2926f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ce/e656c392ad0557b3aae0fb411475c206e2926f diff --git a/tests/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/cf/8c5cc8a85a1ff5a4ba51e0bc7cf5665669924d diff --git a/tests/resources/merge-resolve/.gitted/objects/d0/7ec190c306ec690bac349e87d01c4358e49bb2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d0/7ec190c306ec690bac349e87d01c4358e49bb2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d0/7ec190c306ec690bac349e87d01c4358e49bb2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d0/7ec190c306ec690bac349e87d01c4358e49bb2 diff --git a/tests/resources/merge-resolve/.gitted/objects/d0/d4594e16f2e19107e3fa7ea63e7aaaff305ffb b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d0/d4594e16f2e19107e3fa7ea63e7aaaff305ffb similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d0/d4594e16f2e19107e3fa7ea63e7aaaff305ffb rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d0/d4594e16f2e19107e3fa7ea63e7aaaff305ffb diff --git a/tests/resources/merge-resolve/.gitted/objects/d2/f8637f2eab2507a1e13cbc9df4729ec386627e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d2/f8637f2eab2507a1e13cbc9df4729ec386627e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d2/f8637f2eab2507a1e13cbc9df4729ec386627e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d2/f8637f2eab2507a1e13cbc9df4729ec386627e diff --git a/tests/resources/merge-resolve/.gitted/objects/d3/3cedf513c059e0515653fa2c2e386631387a05 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/3cedf513c059e0515653fa2c2e386631387a05 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d3/3cedf513c059e0515653fa2c2e386631387a05 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/3cedf513c059e0515653fa2c2e386631387a05 diff --git a/tests/resources/merge-resolve/.gitted/objects/d3/719a5ae8e4d92276b5313ce976f6ee5af2b436 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/719a5ae8e4d92276b5313ce976f6ee5af2b436 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d3/719a5ae8e4d92276b5313ce976f6ee5af2b436 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/719a5ae8e4d92276b5313ce976f6ee5af2b436 diff --git a/tests/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/7aa3bbfe1c0c49b909781251b956dbabe85f96 diff --git a/tests/resources/merge-resolve/.gitted/objects/d3/7ad72a2052685fc6201c2af90103ad42d2079b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/7ad72a2052685fc6201c2af90103ad42d2079b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d3/7ad72a2052685fc6201c2af90103ad42d2079b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d3/7ad72a2052685fc6201c2af90103ad42d2079b diff --git a/tests/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d4/207f77243500bec335ab477f9227fcdb1e271a diff --git a/tests/resources/merge-resolve/.gitted/objects/d4/27e0b2e138501a3d15cc376077a3631e15bd46 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d4/27e0b2e138501a3d15cc376077a3631e15bd46 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d4/27e0b2e138501a3d15cc376077a3631e15bd46 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d4/27e0b2e138501a3d15cc376077a3631e15bd46 diff --git a/tests/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/093787ef302b941b6aab081b99fb4880038bd8 diff --git a/tests/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/a61b0b4992a4f0caa887fa08b52431e727bb6f diff --git a/tests/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/b6fc965c926a1bfc9ee456042b94088b5c5d21 diff --git a/tests/resources/merge-resolve/.gitted/objects/d5/ec1152fe25e9fec00189eb00b3db71db24c218 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/ec1152fe25e9fec00189eb00b3db71db24c218 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d5/ec1152fe25e9fec00189eb00b3db71db24c218 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d5/ec1152fe25e9fec00189eb00b3db71db24c218 diff --git a/tests/resources/merge-resolve/.gitted/objects/d6/42b9770c66bba94a08df09b5efb095001f76d7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/42b9770c66bba94a08df09b5efb095001f76d7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d6/42b9770c66bba94a08df09b5efb095001f76d7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/42b9770c66bba94a08df09b5efb095001f76d7 diff --git a/tests/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/462fa3f5292857db599c54aea2bf91616230c5 diff --git a/tests/resources/merge-resolve/.gitted/objects/d6/cf6c7741b3316826af1314042550c97ded1d50 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/cf6c7741b3316826af1314042550c97ded1d50 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d6/cf6c7741b3316826af1314042550c97ded1d50 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d6/cf6c7741b3316826af1314042550c97ded1d50 diff --git a/tests/resources/merge-resolve/.gitted/objects/d7/308cc367b2cc23f710834ec1fd8ffbacf1b460 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d7/308cc367b2cc23f710834ec1fd8ffbacf1b460 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d7/308cc367b2cc23f710834ec1fd8ffbacf1b460 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d7/308cc367b2cc23f710834ec1fd8ffbacf1b460 diff --git a/tests/resources/merge-resolve/.gitted/objects/d8/74671ef5b20184836cb983bb273e5280384d0b b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/74671ef5b20184836cb983bb273e5280384d0b similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d8/74671ef5b20184836cb983bb273e5280384d0b rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/74671ef5b20184836cb983bb273e5280384d0b diff --git a/tests/resources/merge-resolve/.gitted/objects/d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/dec75ff2f8b41d1c5bfef0cd57b7300c834f66 diff --git a/tests/resources/merge-resolve/.gitted/objects/d8/fa77b6833082c1ea36b7828a582d4c43882450 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/fa77b6833082c1ea36b7828a582d4c43882450 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d8/fa77b6833082c1ea36b7828a582d4c43882450 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d8/fa77b6833082c1ea36b7828a582d4c43882450 diff --git a/tests/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/d9/63979c237d08b6ba39062ee7bf64c7d34a27f8 diff --git a/tests/resources/merge-resolve/.gitted/objects/da/178208145ef585a1bd5ca5f4c9785d738df2cf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/da/178208145ef585a1bd5ca5f4c9785d738df2cf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/da/178208145ef585a1bd5ca5f4c9785d738df2cf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/da/178208145ef585a1bd5ca5f4c9785d738df2cf diff --git a/tests/resources/merge-resolve/.gitted/objects/db/6261a7c65c7fd678520c9bb6f2c47582ab9ed5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/db/6261a7c65c7fd678520c9bb6f2c47582ab9ed5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/db/6261a7c65c7fd678520c9bb6f2c47582ab9ed5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/db/6261a7c65c7fd678520c9bb6f2c47582ab9ed5 diff --git a/tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/dd/2ae5ab264e5592aa754235d5ad5eac8f0ecdfd diff --git a/tests/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/dd/9a570c3400e6e07bc4d7651d6e20b08926b3d9 diff --git a/tests/resources/merge-resolve/.gitted/objects/de/872ee3618b894992e9d1e18ba2ebe256a112f9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/de/872ee3618b894992e9d1e18ba2ebe256a112f9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/de/872ee3618b894992e9d1e18ba2ebe256a112f9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/de/872ee3618b894992e9d1e18ba2ebe256a112f9 diff --git a/tests/resources/merge-resolve/.gitted/objects/df/e3f22baa1f6fce5447901c3086bae368de6bdd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/df/e3f22baa1f6fce5447901c3086bae368de6bdd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/df/e3f22baa1f6fce5447901c3086bae368de6bdd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/df/e3f22baa1f6fce5447901c3086bae368de6bdd diff --git a/tests/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e0/67f9361140f19391472df8a82d6610813c73b7 diff --git a/tests/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e1/129b3cfb5898e0fbd606e0cb80b2755e50d161 diff --git a/tests/resources/merge-resolve/.gitted/objects/e1/7ace1492648c9dc5701bad5c47af9d1b60c4e9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e1/7ace1492648c9dc5701bad5c47af9d1b60c4e9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e1/7ace1492648c9dc5701bad5c47af9d1b60c4e9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e1/7ace1492648c9dc5701bad5c47af9d1b60c4e9 diff --git a/tests/resources/merge-resolve/.gitted/objects/e2/c6abbd55fed5ac71a5f2751e29b4a34726a595 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e2/c6abbd55fed5ac71a5f2751e29b4a34726a595 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e2/c6abbd55fed5ac71a5f2751e29b4a34726a595 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e2/c6abbd55fed5ac71a5f2751e29b4a34726a595 diff --git a/tests/resources/merge-resolve/.gitted/objects/e3/1e7ad3ed298f24e383c4950f4671993ec078e4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e3/1e7ad3ed298f24e383c4950f4671993ec078e4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e3/1e7ad3ed298f24e383c4950f4671993ec078e4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e3/1e7ad3ed298f24e383c4950f4671993ec078e4 diff --git a/tests/resources/merge-resolve/.gitted/objects/e3/76fbdd06ebf021c92724da9f26f44212734e3e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e3/76fbdd06ebf021c92724da9f26f44212734e3e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e3/76fbdd06ebf021c92724da9f26f44212734e3e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e3/76fbdd06ebf021c92724da9f26f44212734e3e diff --git a/tests/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e4/9f917b448d1340b31d76e54ba388268fd4c922 diff --git a/tests/resources/merge-resolve/.gitted/objects/e4/f618a2c3ed0669308735727df5ebf2447f022f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e4/f618a2c3ed0669308735727df5ebf2447f022f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e4/f618a2c3ed0669308735727df5ebf2447f022f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e4/f618a2c3ed0669308735727df5ebf2447f022f diff --git a/tests/resources/merge-resolve/.gitted/objects/e5/060729746ca9888239cba08fdcf4bee907b406 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e5/060729746ca9888239cba08fdcf4bee907b406 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e5/060729746ca9888239cba08fdcf4bee907b406 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e5/060729746ca9888239cba08fdcf4bee907b406 diff --git a/tests/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e6/5a9bb2af9f4c2d1c375dd0f8f8a46cf9c68812 diff --git a/tests/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e8/107f24196736b870a318a0e28f048e29f6feff diff --git a/tests/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/2cdb7017dc6c5aed25cb4202c5b0104b872246 diff --git a/tests/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/ad6ec3e38364a3d07feda7c4197d4d845c53b5 diff --git a/tests/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/e9/f48beccc62d535739bfbdebe0a55ed716d8366 diff --git a/tests/resources/merge-resolve/.gitted/objects/eb/c09d0137cfb0c26697aed0109fb943ad906f3f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/eb/c09d0137cfb0c26697aed0109fb943ad906f3f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/eb/c09d0137cfb0c26697aed0109fb943ad906f3f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/eb/c09d0137cfb0c26697aed0109fb943ad906f3f diff --git a/tests/resources/merge-resolve/.gitted/objects/ec/67e5a86adff465359f1c8f995e12dbdfa08d8a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ec/67e5a86adff465359f1c8f995e12dbdfa08d8a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ec/67e5a86adff465359f1c8f995e12dbdfa08d8a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ec/67e5a86adff465359f1c8f995e12dbdfa08d8a diff --git a/tests/resources/merge-resolve/.gitted/objects/ed/9523e62e453e50dd9be1606af19399b96e397a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ed/9523e62e453e50dd9be1606af19399b96e397a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ed/9523e62e453e50dd9be1606af19399b96e397a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ed/9523e62e453e50dd9be1606af19399b96e397a diff --git a/tests/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/1d6f164893c1866a323f072eeed36b855656be diff --git a/tests/resources/merge-resolve/.gitted/objects/ee/3fa1b8c00aff7fe02065fdb50864bb0d932ccf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/3fa1b8c00aff7fe02065fdb50864bb0d932ccf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ee/3fa1b8c00aff7fe02065fdb50864bb0d932ccf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/3fa1b8c00aff7fe02065fdb50864bb0d932ccf diff --git a/tests/resources/merge-resolve/.gitted/objects/ee/a9286df54245fea72c5b557291470eb825f38f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/a9286df54245fea72c5b557291470eb825f38f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ee/a9286df54245fea72c5b557291470eb825f38f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ee/a9286df54245fea72c5b557291470eb825f38f diff --git a/tests/resources/merge-resolve/.gitted/objects/ef/58fdd8086c243bdc81f99e379acacfd21d32d6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/58fdd8086c243bdc81f99e379acacfd21d32d6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ef/58fdd8086c243bdc81f99e379acacfd21d32d6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/58fdd8086c243bdc81f99e379acacfd21d32d6 diff --git a/tests/resources/merge-resolve/.gitted/objects/ef/c499524cf105d5264ac7fc54e07e95764e8075 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/c499524cf105d5264ac7fc54e07e95764e8075 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ef/c499524cf105d5264ac7fc54e07e95764e8075 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/c499524cf105d5264ac7fc54e07e95764e8075 diff --git a/tests/resources/merge-resolve/.gitted/objects/ef/c9121fdedaf08ba180b53ebfbcf71bd488ed09 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/c9121fdedaf08ba180b53ebfbcf71bd488ed09 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ef/c9121fdedaf08ba180b53ebfbcf71bd488ed09 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ef/c9121fdedaf08ba180b53ebfbcf71bd488ed09 diff --git a/tests/resources/merge-resolve/.gitted/objects/f0/053b8060bb3f0be5cbcc3147a07ece26bf097e b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f0/053b8060bb3f0be5cbcc3147a07ece26bf097e similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f0/053b8060bb3f0be5cbcc3147a07ece26bf097e rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f0/053b8060bb3f0be5cbcc3147a07ece26bf097e diff --git a/tests/resources/merge-resolve/.gitted/objects/f0/ce2b8e4986084d9b308fb72709e414c23eb5e6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f0/ce2b8e4986084d9b308fb72709e414c23eb5e6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f0/ce2b8e4986084d9b308fb72709e414c23eb5e6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f0/ce2b8e4986084d9b308fb72709e414c23eb5e6 diff --git a/tests/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/0c9063fa0bda9a397c96947a7b687305c49753 diff --git a/tests/resources/merge-resolve/.gitted/objects/f2/9e7fb590551095230c6149cbe72f2e9104a796 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/9e7fb590551095230c6149cbe72f2e9104a796 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f2/9e7fb590551095230c6149cbe72f2e9104a796 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/9e7fb590551095230c6149cbe72f2e9104a796 diff --git a/tests/resources/merge-resolve/.gitted/objects/f2/e1550a0c9e53d5811175864a29536642ae3821 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/e1550a0c9e53d5811175864a29536642ae3821 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f2/e1550a0c9e53d5811175864a29536642ae3821 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f2/e1550a0c9e53d5811175864a29536642ae3821 diff --git a/tests/resources/merge-resolve/.gitted/objects/f3/293571dcd708b6a3faf03818cd2844d000e198 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f3/293571dcd708b6a3faf03818cd2844d000e198 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f3/293571dcd708b6a3faf03818cd2844d000e198 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f3/293571dcd708b6a3faf03818cd2844d000e198 diff --git a/tests/resources/merge-resolve/.gitted/objects/f3/f1164b68b57b1995b658a828320e6df3081fae b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f3/f1164b68b57b1995b658a828320e6df3081fae similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f3/f1164b68b57b1995b658a828320e6df3081fae rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f3/f1164b68b57b1995b658a828320e6df3081fae diff --git a/tests/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f4/15caf3fcad16304cb424b67f0ee6b12dc03aae diff --git a/tests/resources/merge-resolve/.gitted/objects/f4/8097eb340dc5a7cae55aabcf1faf4548aa821f b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f4/8097eb340dc5a7cae55aabcf1faf4548aa821f similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f4/8097eb340dc5a7cae55aabcf1faf4548aa821f rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f4/8097eb340dc5a7cae55aabcf1faf4548aa821f diff --git a/tests/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/504f36e6f4eb797a56fc5bac6c6c7f32969bf2 diff --git a/tests/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/b50c85a87cac64d7eb3254cdd1aec9564c0293 diff --git a/tests/resources/merge-resolve/.gitted/objects/f5/f9dd5886a6ee20272be0aafc790cba43b31931 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/f9dd5886a6ee20272be0aafc790cba43b31931 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f5/f9dd5886a6ee20272be0aafc790cba43b31931 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f5/f9dd5886a6ee20272be0aafc790cba43b31931 diff --git a/tests/resources/merge-resolve/.gitted/objects/f6/65b45cde9b568009c6e6b7b568e89cfe717df8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f6/65b45cde9b568009c6e6b7b568e89cfe717df8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f6/65b45cde9b568009c6e6b7b568e89cfe717df8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f6/65b45cde9b568009c6e6b7b568e89cfe717df8 diff --git a/tests/resources/merge-resolve/.gitted/objects/f6/be049e284c0f9dcbbc745543885be3502ea521 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f6/be049e284c0f9dcbbc745543885be3502ea521 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f6/be049e284c0f9dcbbc745543885be3502ea521 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f6/be049e284c0f9dcbbc745543885be3502ea521 diff --git a/tests/resources/merge-resolve/.gitted/objects/f7/c332bd4d4d4b777366cae4d24d1687477576bf b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f7/c332bd4d4d4b777366cae4d24d1687477576bf similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f7/c332bd4d4d4b777366cae4d24d1687477576bf rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f7/c332bd4d4d4b777366cae4d24d1687477576bf diff --git a/tests/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/f8/958bdf4d365a84a9a178b1f5f35ff1dacbd884 diff --git a/tests/resources/merge-resolve/.gitted/objects/fa/c03f2c5139618d87d53614c153823bf1f31396 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fa/c03f2c5139618d87d53614c153823bf1f31396 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fa/c03f2c5139618d87d53614c153823bf1f31396 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fa/c03f2c5139618d87d53614c153823bf1f31396 diff --git a/tests/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fa/da9356aa3f74622327a3038ae9c6f92e1c5c1d diff --git a/tests/resources/merge-resolve/.gitted/objects/fb/738a106cfd097a4acb96ce132ecb1ad6c46b03 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fb/738a106cfd097a4acb96ce132ecb1ad6c46b03 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fb/738a106cfd097a4acb96ce132ecb1ad6c46b03 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fb/738a106cfd097a4acb96ce132ecb1ad6c46b03 diff --git a/tests/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/4c636d6515e9e261f9260dbcf3cc6eca97ea08 diff --git a/tests/resources/merge-resolve/.gitted/objects/fc/7d7b805f7a9428574f4f802b2e34cd20ab9d99 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/7d7b805f7a9428574f4f802b2e34cd20ab9d99 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fc/7d7b805f7a9428574f4f802b2e34cd20ab9d99 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/7d7b805f7a9428574f4f802b2e34cd20ab9d99 diff --git a/tests/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fc/90237dc4891fa6c69827fc465632225e391618 diff --git a/tests/resources/merge-resolve/.gitted/objects/fd/57d2d6770fad8e9959124793a17f441b571e66 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fd/57d2d6770fad8e9959124793a17f441b571e66 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fd/57d2d6770fad8e9959124793a17f441b571e66 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fd/57d2d6770fad8e9959124793a17f441b571e66 diff --git a/tests/resources/merge-resolve/.gitted/objects/fd/89f8cffb663ac89095a0f9764902e93ceaca6a b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fd/89f8cffb663ac89095a0f9764902e93ceaca6a similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fd/89f8cffb663ac89095a0f9764902e93ceaca6a rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fd/89f8cffb663ac89095a0f9764902e93ceaca6a diff --git a/tests/resources/merge-resolve/.gitted/objects/fe/5407fc50a53aecb41d1a6e9ea7b612e581af87 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fe/5407fc50a53aecb41d1a6e9ea7b612e581af87 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/fe/5407fc50a53aecb41d1a6e9ea7b612e581af87 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/fe/5407fc50a53aecb41d1a6e9ea7b612e581af87 diff --git a/tests/resources/merge-resolve/.gitted/objects/ff/49d07869831ad761bbdaea026086f8789bcb00 b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ff/49d07869831ad761bbdaea026086f8789bcb00 similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ff/49d07869831ad761bbdaea026086f8789bcb00 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ff/49d07869831ad761bbdaea026086f8789bcb00 diff --git a/tests/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd b/deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd similarity index 100% rename from tests/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd rename to deps/libgit2/tests/resources/merge-resolve/.gitted/objects/ff/b312248d607284c290023f9502eea010d34efd diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/df_ancestor b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_ancestor similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/df_ancestor rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_ancestor diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/df_side1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_side1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/df_side1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_side1 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/df_side2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_side2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/df_side2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/df_side2 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/ff_branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/ff_branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/ff_branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/ff_branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/master b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/master similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/master diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo1 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo2 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo3 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo3 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo3 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo3 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo4 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo5 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo5 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo5 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo5 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/octo6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/octo6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/octo6 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/previous b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/previous similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/previous rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/previous diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ancestor b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ancestor similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ancestor rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ancestor diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ours b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ours similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ours rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_ours diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_theirs b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_theirs similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_theirs rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/rename_conflict_theirs diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/renames1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/renames1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/renames1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/renames1 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/renames2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/renames2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/renames2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/renames2 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/submodules b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/submodules rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/submodules-branch2 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-10 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-10-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-10-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-11 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-11-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-11-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-13 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-13-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-13-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-14 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-14-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-14-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-2alt-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-3alt-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-4 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-4-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-4-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-1-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-5alt-2-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-6 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-6-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-6-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-7 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-7-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-7-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-8 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-8-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-8-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9 b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9 similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-9 rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9 diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9-branch b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9-branch similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/trivial-9-branch rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/trivial-9-branch diff --git a/tests/resources/merge-resolve/.gitted/refs/heads/unrelated b/deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/unrelated similarity index 100% rename from tests/resources/merge-resolve/.gitted/refs/heads/unrelated rename to deps/libgit2/tests/resources/merge-resolve/.gitted/refs/heads/unrelated diff --git a/tests/resources/merge-resolve/added-in-master.txt b/deps/libgit2/tests/resources/merge-resolve/added-in-master.txt similarity index 100% rename from tests/resources/merge-resolve/added-in-master.txt rename to deps/libgit2/tests/resources/merge-resolve/added-in-master.txt diff --git a/tests/resources/merge-resolve/automergeable.txt b/deps/libgit2/tests/resources/merge-resolve/automergeable.txt similarity index 100% rename from tests/resources/merge-resolve/automergeable.txt rename to deps/libgit2/tests/resources/merge-resolve/automergeable.txt diff --git a/tests/resources/merge-resolve/changed-in-branch.txt b/deps/libgit2/tests/resources/merge-resolve/changed-in-branch.txt similarity index 100% rename from tests/resources/merge-resolve/changed-in-branch.txt rename to deps/libgit2/tests/resources/merge-resolve/changed-in-branch.txt diff --git a/tests/resources/merge-resolve/changed-in-master.txt b/deps/libgit2/tests/resources/merge-resolve/changed-in-master.txt similarity index 100% rename from tests/resources/merge-resolve/changed-in-master.txt rename to deps/libgit2/tests/resources/merge-resolve/changed-in-master.txt diff --git a/tests/resources/merge-resolve/conflicting.txt b/deps/libgit2/tests/resources/merge-resolve/conflicting.txt similarity index 100% rename from tests/resources/merge-resolve/conflicting.txt rename to deps/libgit2/tests/resources/merge-resolve/conflicting.txt diff --git a/tests/resources/merge-resolve/removed-in-branch.txt b/deps/libgit2/tests/resources/merge-resolve/removed-in-branch.txt similarity index 100% rename from tests/resources/merge-resolve/removed-in-branch.txt rename to deps/libgit2/tests/resources/merge-resolve/removed-in-branch.txt diff --git a/tests/resources/merge-resolve/unchanged.txt b/deps/libgit2/tests/resources/merge-resolve/unchanged.txt similarity index 100% rename from tests/resources/merge-resolve/unchanged.txt rename to deps/libgit2/tests/resources/merge-resolve/unchanged.txt diff --git a/tests/resources/mergedrepo/.gitted/COMMIT_EDITMSG b/deps/libgit2/tests/resources/mergedrepo/.gitted/COMMIT_EDITMSG similarity index 100% rename from tests/resources/mergedrepo/.gitted/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/mergedrepo/.gitted/COMMIT_EDITMSG diff --git a/tests/resources/mergedrepo/.gitted/HEAD b/deps/libgit2/tests/resources/mergedrepo/.gitted/HEAD similarity index 100% rename from tests/resources/mergedrepo/.gitted/HEAD rename to deps/libgit2/tests/resources/mergedrepo/.gitted/HEAD diff --git a/tests/resources/mergedrepo/.gitted/MERGE_HEAD b/deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_HEAD similarity index 100% rename from tests/resources/mergedrepo/.gitted/MERGE_HEAD rename to deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_HEAD diff --git a/tests/resources/mergedrepo/.gitted/MERGE_MODE b/deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_MODE similarity index 100% rename from tests/resources/mergedrepo/.gitted/MERGE_MODE rename to deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_MODE diff --git a/tests/resources/mergedrepo/.gitted/MERGE_MSG b/deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_MSG similarity index 100% rename from tests/resources/mergedrepo/.gitted/MERGE_MSG rename to deps/libgit2/tests/resources/mergedrepo/.gitted/MERGE_MSG diff --git a/tests/resources/mergedrepo/.gitted/ORIG_HEAD b/deps/libgit2/tests/resources/mergedrepo/.gitted/ORIG_HEAD similarity index 100% rename from tests/resources/mergedrepo/.gitted/ORIG_HEAD rename to deps/libgit2/tests/resources/mergedrepo/.gitted/ORIG_HEAD diff --git a/tests/resources/mergedrepo/.gitted/config b/deps/libgit2/tests/resources/mergedrepo/.gitted/config similarity index 100% rename from tests/resources/mergedrepo/.gitted/config rename to deps/libgit2/tests/resources/mergedrepo/.gitted/config diff --git a/tests/resources/mergedrepo/.gitted/description b/deps/libgit2/tests/resources/mergedrepo/.gitted/description similarity index 100% rename from tests/resources/mergedrepo/.gitted/description rename to deps/libgit2/tests/resources/mergedrepo/.gitted/description diff --git a/tests/resources/mergedrepo/.gitted/index b/deps/libgit2/tests/resources/mergedrepo/.gitted/index similarity index 100% rename from tests/resources/mergedrepo/.gitted/index rename to deps/libgit2/tests/resources/mergedrepo/.gitted/index diff --git a/tests/resources/mergedrepo/.gitted/info/exclude b/deps/libgit2/tests/resources/mergedrepo/.gitted/info/exclude similarity index 100% rename from tests/resources/mergedrepo/.gitted/info/exclude rename to deps/libgit2/tests/resources/mergedrepo/.gitted/info/exclude diff --git a/tests/resources/mergedrepo/.gitted/logs/HEAD b/deps/libgit2/tests/resources/mergedrepo/.gitted/logs/HEAD similarity index 100% rename from tests/resources/mergedrepo/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/mergedrepo/.gitted/logs/HEAD diff --git a/tests/resources/mergedrepo/.gitted/logs/refs/heads/branch b/deps/libgit2/tests/resources/mergedrepo/.gitted/logs/refs/heads/branch similarity index 100% rename from tests/resources/mergedrepo/.gitted/logs/refs/heads/branch rename to deps/libgit2/tests/resources/mergedrepo/.gitted/logs/refs/heads/branch diff --git a/tests/resources/mergedrepo/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/mergedrepo/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/mergedrepo/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/mergedrepo/.gitted/logs/refs/heads/master diff --git a/tests/resources/mergedrepo/.gitted/objects/03/db1d37504ca0c4f7c26d7776b0e28bdea08712 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/03/db1d37504ca0c4f7c26d7776b0e28bdea08712 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/03/db1d37504ca0c4f7c26d7776b0e28bdea08712 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/03/db1d37504ca0c4f7c26d7776b0e28bdea08712 diff --git a/tests/resources/mergedrepo/.gitted/objects/17/0efc1023e0ed2390150bb4469c8456b63e8f91 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/17/0efc1023e0ed2390150bb4469c8456b63e8f91 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/17/0efc1023e0ed2390150bb4469c8456b63e8f91 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/17/0efc1023e0ed2390150bb4469c8456b63e8f91 diff --git a/tests/resources/mergedrepo/.gitted/objects/1f/85ca51b8e0aac893a621b61a9c2661d6aa6d81 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/1f/85ca51b8e0aac893a621b61a9c2661d6aa6d81 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/1f/85ca51b8e0aac893a621b61a9c2661d6aa6d81 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/1f/85ca51b8e0aac893a621b61a9c2661d6aa6d81 diff --git a/tests/resources/mergedrepo/.gitted/objects/22/0bd62631c8cf7a83ef39c6b94595f00517211e b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/22/0bd62631c8cf7a83ef39c6b94595f00517211e similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/22/0bd62631c8cf7a83ef39c6b94595f00517211e rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/22/0bd62631c8cf7a83ef39c6b94595f00517211e diff --git a/tests/resources/mergedrepo/.gitted/objects/32/d55d59265db86dd690f0a7fc563db43e2bc6a6 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/32/d55d59265db86dd690f0a7fc563db43e2bc6a6 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/32/d55d59265db86dd690f0a7fc563db43e2bc6a6 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/32/d55d59265db86dd690f0a7fc563db43e2bc6a6 diff --git a/tests/resources/mergedrepo/.gitted/objects/38/e2d82b9065a237904af4b780b4d68da6950534 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/38/e2d82b9065a237904af4b780b4d68da6950534 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/38/e2d82b9065a237904af4b780b4d68da6950534 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/38/e2d82b9065a237904af4b780b4d68da6950534 diff --git a/tests/resources/mergedrepo/.gitted/objects/3a/34580a35add43a4cf361e8e9a30060a905c876 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/3a/34580a35add43a4cf361e8e9a30060a905c876 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/3a/34580a35add43a4cf361e8e9a30060a905c876 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/3a/34580a35add43a4cf361e8e9a30060a905c876 diff --git a/tests/resources/mergedrepo/.gitted/objects/44/58b8bc9e72b6c8755ae456f60e9844d0538d8c b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/44/58b8bc9e72b6c8755ae456f60e9844d0538d8c similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/44/58b8bc9e72b6c8755ae456f60e9844d0538d8c rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/44/58b8bc9e72b6c8755ae456f60e9844d0538d8c diff --git a/tests/resources/mergedrepo/.gitted/objects/47/8871385b9cd03908c5383acfd568bef023c6b3 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/47/8871385b9cd03908c5383acfd568bef023c6b3 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/47/8871385b9cd03908c5383acfd568bef023c6b3 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/47/8871385b9cd03908c5383acfd568bef023c6b3 diff --git a/tests/resources/mergedrepo/.gitted/objects/51/6bd85f78061e09ccc714561d7b504672cb52da b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/51/6bd85f78061e09ccc714561d7b504672cb52da similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/51/6bd85f78061e09ccc714561d7b504672cb52da rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/51/6bd85f78061e09ccc714561d7b504672cb52da diff --git a/tests/resources/mergedrepo/.gitted/objects/53/c1d95a01f4514b162066fc98564500c96c46ad b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/53/c1d95a01f4514b162066fc98564500c96c46ad similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/53/c1d95a01f4514b162066fc98564500c96c46ad rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/53/c1d95a01f4514b162066fc98564500c96c46ad diff --git a/tests/resources/mergedrepo/.gitted/objects/6a/ea5f295304c36144ad6e9247a291b7f8112399 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/6a/ea5f295304c36144ad6e9247a291b7f8112399 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/6a/ea5f295304c36144ad6e9247a291b7f8112399 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/6a/ea5f295304c36144ad6e9247a291b7f8112399 diff --git a/tests/resources/mergedrepo/.gitted/objects/70/68e30a7f0090ae32db35dfa1e4189d8780fcb8 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/70/68e30a7f0090ae32db35dfa1e4189d8780fcb8 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/70/68e30a7f0090ae32db35dfa1e4189d8780fcb8 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/70/68e30a7f0090ae32db35dfa1e4189d8780fcb8 diff --git a/tests/resources/mergedrepo/.gitted/objects/75/938de1e367098b3e9a7b1ec3c4ac4548afffe4 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/75/938de1e367098b3e9a7b1ec3c4ac4548afffe4 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/75/938de1e367098b3e9a7b1ec3c4ac4548afffe4 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/75/938de1e367098b3e9a7b1ec3c4ac4548afffe4 diff --git a/tests/resources/mergedrepo/.gitted/objects/7b/26923aaf452b1977eb08617c59475fb3f74b71 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/7b/26923aaf452b1977eb08617c59475fb3f74b71 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/7b/26923aaf452b1977eb08617c59475fb3f74b71 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/7b/26923aaf452b1977eb08617c59475fb3f74b71 diff --git a/tests/resources/mergedrepo/.gitted/objects/84/af62840be1b1c47b778a8a249f3ff45155038c b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/84/af62840be1b1c47b778a8a249f3ff45155038c similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/84/af62840be1b1c47b778a8a249f3ff45155038c rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/84/af62840be1b1c47b778a8a249f3ff45155038c diff --git a/tests/resources/mergedrepo/.gitted/objects/88/71f7a2ee3addfc4ba39fbd0783c8e738d04cda b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/88/71f7a2ee3addfc4ba39fbd0783c8e738d04cda similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/88/71f7a2ee3addfc4ba39fbd0783c8e738d04cda rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/88/71f7a2ee3addfc4ba39fbd0783c8e738d04cda diff --git a/tests/resources/mergedrepo/.gitted/objects/88/7b153b165d32409c70163e0f734c090f12f673 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/88/7b153b165d32409c70163e0f734c090f12f673 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/88/7b153b165d32409c70163e0f734c090f12f673 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/88/7b153b165d32409c70163e0f734c090f12f673 diff --git a/tests/resources/mergedrepo/.gitted/objects/8a/ad34cc83733590e74b93d0f7cf00375e2a735a b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8a/ad34cc83733590e74b93d0f7cf00375e2a735a similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/8a/ad34cc83733590e74b93d0f7cf00375e2a735a rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8a/ad34cc83733590e74b93d0f7cf00375e2a735a diff --git a/tests/resources/mergedrepo/.gitted/objects/8b/3f43d2402825c200f835ca1762413e386fd0b2 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8b/3f43d2402825c200f835ca1762413e386fd0b2 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/8b/3f43d2402825c200f835ca1762413e386fd0b2 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8b/3f43d2402825c200f835ca1762413e386fd0b2 diff --git a/tests/resources/mergedrepo/.gitted/objects/8b/72416545c7e761b64cecad4f1686eae4078aa8 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8b/72416545c7e761b64cecad4f1686eae4078aa8 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/8b/72416545c7e761b64cecad4f1686eae4078aa8 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8b/72416545c7e761b64cecad4f1686eae4078aa8 diff --git a/tests/resources/mergedrepo/.gitted/objects/8f/3c06cff9a83757cec40c80bc9bf31a2582bde9 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8f/3c06cff9a83757cec40c80bc9bf31a2582bde9 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/8f/3c06cff9a83757cec40c80bc9bf31a2582bde9 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8f/3c06cff9a83757cec40c80bc9bf31a2582bde9 diff --git a/tests/resources/mergedrepo/.gitted/objects/8f/fcc405925511824a2240a6d3686aa7f8c7ac50 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8f/fcc405925511824a2240a6d3686aa7f8c7ac50 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/8f/fcc405925511824a2240a6d3686aa7f8c7ac50 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/8f/fcc405925511824a2240a6d3686aa7f8c7ac50 diff --git a/tests/resources/mergedrepo/.gitted/objects/9a/05ccb4e0f948de03128e095f39dae6976751c5 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/9a/05ccb4e0f948de03128e095f39dae6976751c5 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/9a/05ccb4e0f948de03128e095f39dae6976751c5 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/9a/05ccb4e0f948de03128e095f39dae6976751c5 diff --git a/tests/resources/mergedrepo/.gitted/objects/9d/81f82fccc7dcd7de7a1ffead1815294c2e092c b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/9d/81f82fccc7dcd7de7a1ffead1815294c2e092c similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/9d/81f82fccc7dcd7de7a1ffead1815294c2e092c rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/9d/81f82fccc7dcd7de7a1ffead1815294c2e092c diff --git a/tests/resources/mergedrepo/.gitted/objects/b7/cedb8ad4cbb22b6363f9578cbd749797f7ef0d b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/b7/cedb8ad4cbb22b6363f9578cbd749797f7ef0d similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/b7/cedb8ad4cbb22b6363f9578cbd749797f7ef0d rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/b7/cedb8ad4cbb22b6363f9578cbd749797f7ef0d diff --git a/tests/resources/mergedrepo/.gitted/objects/d0/1885ea594926eae9ba5b54ad76692af5969f51 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/d0/1885ea594926eae9ba5b54ad76692af5969f51 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/d0/1885ea594926eae9ba5b54ad76692af5969f51 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/d0/1885ea594926eae9ba5b54ad76692af5969f51 diff --git a/tests/resources/mergedrepo/.gitted/objects/e2/809157a7766f272e4cfe26e61ef2678a5357ff b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/e2/809157a7766f272e4cfe26e61ef2678a5357ff similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/e2/809157a7766f272e4cfe26e61ef2678a5357ff rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/e2/809157a7766f272e4cfe26e61ef2678a5357ff diff --git a/tests/resources/mergedrepo/.gitted/objects/e6/2cac5c88b9928f2695b934c70efa4285324478 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/e6/2cac5c88b9928f2695b934c70efa4285324478 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/e6/2cac5c88b9928f2695b934c70efa4285324478 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/e6/2cac5c88b9928f2695b934c70efa4285324478 diff --git a/tests/resources/mergedrepo/.gitted/objects/f7/2784290c151092abf04ce6b875068547f70406 b/deps/libgit2/tests/resources/mergedrepo/.gitted/objects/f7/2784290c151092abf04ce6b875068547f70406 similarity index 100% rename from tests/resources/mergedrepo/.gitted/objects/f7/2784290c151092abf04ce6b875068547f70406 rename to deps/libgit2/tests/resources/mergedrepo/.gitted/objects/f7/2784290c151092abf04ce6b875068547f70406 diff --git a/tests/resources/mergedrepo/.gitted/refs/heads/branch b/deps/libgit2/tests/resources/mergedrepo/.gitted/refs/heads/branch similarity index 100% rename from tests/resources/mergedrepo/.gitted/refs/heads/branch rename to deps/libgit2/tests/resources/mergedrepo/.gitted/refs/heads/branch diff --git a/tests/resources/mergedrepo/.gitted/refs/heads/master b/deps/libgit2/tests/resources/mergedrepo/.gitted/refs/heads/master similarity index 100% rename from tests/resources/mergedrepo/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/mergedrepo/.gitted/refs/heads/master diff --git a/tests/resources/mergedrepo/conflicts-one.txt b/deps/libgit2/tests/resources/mergedrepo/conflicts-one.txt similarity index 100% rename from tests/resources/mergedrepo/conflicts-one.txt rename to deps/libgit2/tests/resources/mergedrepo/conflicts-one.txt diff --git a/tests/resources/mergedrepo/conflicts-two.txt b/deps/libgit2/tests/resources/mergedrepo/conflicts-two.txt similarity index 100% rename from tests/resources/mergedrepo/conflicts-two.txt rename to deps/libgit2/tests/resources/mergedrepo/conflicts-two.txt diff --git a/tests/resources/mergedrepo/one.txt b/deps/libgit2/tests/resources/mergedrepo/one.txt similarity index 100% rename from tests/resources/mergedrepo/one.txt rename to deps/libgit2/tests/resources/mergedrepo/one.txt diff --git a/tests/resources/mergedrepo/two.txt b/deps/libgit2/tests/resources/mergedrepo/two.txt similarity index 100% rename from tests/resources/mergedrepo/two.txt rename to deps/libgit2/tests/resources/mergedrepo/two.txt diff --git a/tests/resources/partial-testrepo/.gitted/HEAD b/deps/libgit2/tests/resources/partial-testrepo/.gitted/HEAD similarity index 100% rename from tests/resources/partial-testrepo/.gitted/HEAD rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/HEAD diff --git a/tests/resources/partial-testrepo/.gitted/config b/deps/libgit2/tests/resources/partial-testrepo/.gitted/config similarity index 100% rename from tests/resources/partial-testrepo/.gitted/config rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/config diff --git a/tests/resources/partial-testrepo/.gitted/index b/deps/libgit2/tests/resources/partial-testrepo/.gitted/index similarity index 100% rename from tests/resources/partial-testrepo/.gitted/index rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/index diff --git a/tests/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/partial-testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e diff --git a/tests/resources/partial-testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 diff --git a/tests/resources/partial-testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/partial-testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/partial-testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/partial-testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 diff --git a/tests/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc diff --git a/tests/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 diff --git a/tests/resources/partial-testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/partial-testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/partial-testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 diff --git a/tests/resources/partial-testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 diff --git a/tests/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/partial-testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/partial-testrepo/.gitted/objects/pack/.gitkeep b/deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/pack/.gitkeep similarity index 100% rename from tests/resources/partial-testrepo/.gitted/objects/pack/.gitkeep rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/objects/pack/.gitkeep diff --git a/tests/resources/partial-testrepo/.gitted/refs/heads/dir b/deps/libgit2/tests/resources/partial-testrepo/.gitted/refs/heads/dir similarity index 100% rename from tests/resources/partial-testrepo/.gitted/refs/heads/dir rename to deps/libgit2/tests/resources/partial-testrepo/.gitted/refs/heads/dir diff --git a/tests/resources/peeled.git/HEAD b/deps/libgit2/tests/resources/peeled.git/HEAD similarity index 100% rename from tests/resources/peeled.git/HEAD rename to deps/libgit2/tests/resources/peeled.git/HEAD diff --git a/tests/resources/peeled.git/config b/deps/libgit2/tests/resources/peeled.git/config similarity index 100% rename from tests/resources/peeled.git/config rename to deps/libgit2/tests/resources/peeled.git/config diff --git a/tests/resources/peeled.git/objects/info/packs b/deps/libgit2/tests/resources/peeled.git/objects/info/packs similarity index 100% rename from tests/resources/peeled.git/objects/info/packs rename to deps/libgit2/tests/resources/peeled.git/objects/info/packs diff --git a/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.idx b/deps/libgit2/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.idx similarity index 100% rename from tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.idx rename to deps/libgit2/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.idx diff --git a/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.pack b/deps/libgit2/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.pack similarity index 100% rename from tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.pack rename to deps/libgit2/tests/resources/peeled.git/objects/pack/pack-e84773eaf3fce1774755580e3dbb8d9f3a1adc45.pack diff --git a/tests/resources/peeled.git/packed-refs b/deps/libgit2/tests/resources/peeled.git/packed-refs similarity index 100% rename from tests/resources/peeled.git/packed-refs rename to deps/libgit2/tests/resources/peeled.git/packed-refs diff --git a/tests/resources/peeled.git/refs/heads/master b/deps/libgit2/tests/resources/peeled.git/refs/heads/master similarity index 100% rename from tests/resources/peeled.git/refs/heads/master rename to deps/libgit2/tests/resources/peeled.git/refs/heads/master diff --git a/tests/resources/push.sh b/deps/libgit2/tests/resources/push.sh similarity index 100% rename from tests/resources/push.sh rename to deps/libgit2/tests/resources/push.sh diff --git a/tests/resources/push_src/.gitted/COMMIT_EDITMSG b/deps/libgit2/tests/resources/push_src/.gitted/COMMIT_EDITMSG similarity index 100% rename from tests/resources/push_src/.gitted/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/push_src/.gitted/COMMIT_EDITMSG diff --git a/tests/resources/push_src/.gitted/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/HEAD diff --git a/tests/resources/push_src/.gitted/ORIG_HEAD b/deps/libgit2/tests/resources/push_src/.gitted/ORIG_HEAD similarity index 100% rename from tests/resources/push_src/.gitted/ORIG_HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/ORIG_HEAD diff --git a/tests/resources/push_src/.gitted/config b/deps/libgit2/tests/resources/push_src/.gitted/config similarity index 100% rename from tests/resources/push_src/.gitted/config rename to deps/libgit2/tests/resources/push_src/.gitted/config diff --git a/tests/resources/push_src/.gitted/description b/deps/libgit2/tests/resources/push_src/.gitted/description similarity index 100% rename from tests/resources/push_src/.gitted/description rename to deps/libgit2/tests/resources/push_src/.gitted/description diff --git a/tests/resources/push_src/.gitted/index b/deps/libgit2/tests/resources/push_src/.gitted/index similarity index 100% rename from tests/resources/push_src/.gitted/index rename to deps/libgit2/tests/resources/push_src/.gitted/index diff --git a/tests/resources/push_src/.gitted/info/exclude b/deps/libgit2/tests/resources/push_src/.gitted/info/exclude similarity index 100% rename from tests/resources/push_src/.gitted/info/exclude rename to deps/libgit2/tests/resources/push_src/.gitted/info/exclude diff --git a/tests/resources/push_src/.gitted/logs/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/logs/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/logs/HEAD diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/b1 b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b1 similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/b1 rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b1 diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/b2 b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b2 similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/b2 rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b2 diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/b3 b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b3 similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/b3 rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b3 diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/b4 b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b4 similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/b4 rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b4 diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/b5 b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b5 similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/b5 rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/b5 diff --git a/tests/resources/push_src/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/push_src/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/push_src/.gitted/logs/refs/heads/master diff --git a/tests/resources/push_src/.gitted/modules/submodule/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/HEAD diff --git a/tests/resources/push_src/.gitted/modules/submodule/config b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/config similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/config rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/config diff --git a/tests/resources/push_src/.gitted/modules/submodule/description b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/description similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/description rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/description diff --git a/tests/resources/push_src/.gitted/modules/submodule/index b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/index similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/index rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/index diff --git a/tests/resources/push_src/.gitted/modules/submodule/info/exclude b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/info/exclude similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/info/exclude rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/info/exclude diff --git a/tests/resources/push_src/.gitted/modules/submodule/logs/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/logs/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/HEAD diff --git a/tests/resources/push_src/.gitted/modules/submodule/logs/refs/heads/master b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/refs/heads/master similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/logs/refs/heads/master rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/refs/heads/master diff --git a/tests/resources/push_src/.gitted/modules/submodule/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/1b/8cbad43e867676df601306689fe7c3def5e689 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1b/8cbad43e867676df601306689fe7c3def5e689 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/1b/8cbad43e867676df601306689fe7c3def5e689 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1b/8cbad43e867676df601306689fe7c3def5e689 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/tests/resources/push_src/.gitted/modules/submodule/packed-refs b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/packed-refs similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/packed-refs rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/packed-refs diff --git a/tests/resources/push_src/.gitted/modules/submodule/refs/heads/master b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/refs/heads/master similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/refs/heads/master rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/refs/heads/master diff --git a/tests/resources/push_src/.gitted/modules/submodule/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/push_src/.gitted/modules/submodule/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/push_src/.gitted/modules/submodule/refs/remotes/origin/HEAD diff --git a/tests/resources/push_src/.gitted/objects/08/585692ce06452da6f82ae66b90d98b55536fca b/deps/libgit2/tests/resources/push_src/.gitted/objects/08/585692ce06452da6f82ae66b90d98b55536fca similarity index 100% rename from tests/resources/push_src/.gitted/objects/08/585692ce06452da6f82ae66b90d98b55536fca rename to deps/libgit2/tests/resources/push_src/.gitted/objects/08/585692ce06452da6f82ae66b90d98b55536fca diff --git a/tests/resources/push_src/.gitted/objects/27/b7ce66243eb1403862d05f958c002312df173d b/deps/libgit2/tests/resources/push_src/.gitted/objects/27/b7ce66243eb1403862d05f958c002312df173d similarity index 100% rename from tests/resources/push_src/.gitted/objects/27/b7ce66243eb1403862d05f958c002312df173d rename to deps/libgit2/tests/resources/push_src/.gitted/objects/27/b7ce66243eb1403862d05f958c002312df173d diff --git a/tests/resources/push_src/.gitted/objects/28/905c54ea45a4bed8d7b90f51bd8bd81eec8840 b/deps/libgit2/tests/resources/push_src/.gitted/objects/28/905c54ea45a4bed8d7b90f51bd8bd81eec8840 similarity index 100% rename from tests/resources/push_src/.gitted/objects/28/905c54ea45a4bed8d7b90f51bd8bd81eec8840 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/28/905c54ea45a4bed8d7b90f51bd8bd81eec8840 diff --git a/tests/resources/push_src/.gitted/objects/36/6226fb970ac0caa9d3f55967ab01334a548f60 b/deps/libgit2/tests/resources/push_src/.gitted/objects/36/6226fb970ac0caa9d3f55967ab01334a548f60 similarity index 100% rename from tests/resources/push_src/.gitted/objects/36/6226fb970ac0caa9d3f55967ab01334a548f60 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/36/6226fb970ac0caa9d3f55967ab01334a548f60 diff --git a/tests/resources/push_src/.gitted/objects/36/f79b2846017d3761e0a02d0bccd573e0f90c57 b/deps/libgit2/tests/resources/push_src/.gitted/objects/36/f79b2846017d3761e0a02d0bccd573e0f90c57 similarity index 100% rename from tests/resources/push_src/.gitted/objects/36/f79b2846017d3761e0a02d0bccd573e0f90c57 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/36/f79b2846017d3761e0a02d0bccd573e0f90c57 diff --git a/tests/resources/push_src/.gitted/objects/5c/0bb3d1b9449d1cc69d7519fd05166f01840915 b/deps/libgit2/tests/resources/push_src/.gitted/objects/5c/0bb3d1b9449d1cc69d7519fd05166f01840915 similarity index 100% rename from tests/resources/push_src/.gitted/objects/5c/0bb3d1b9449d1cc69d7519fd05166f01840915 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/5c/0bb3d1b9449d1cc69d7519fd05166f01840915 diff --git a/tests/resources/push_src/.gitted/objects/61/780798228d17af2d34fce4cfbdf35556832472 b/deps/libgit2/tests/resources/push_src/.gitted/objects/61/780798228d17af2d34fce4cfbdf35556832472 similarity index 100% rename from tests/resources/push_src/.gitted/objects/61/780798228d17af2d34fce4cfbdf35556832472 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/61/780798228d17af2d34fce4cfbdf35556832472 diff --git a/tests/resources/push_src/.gitted/objects/64/fd55f9b6390202db5e5666fd1fb339089fba4d b/deps/libgit2/tests/resources/push_src/.gitted/objects/64/fd55f9b6390202db5e5666fd1fb339089fba4d similarity index 100% rename from tests/resources/push_src/.gitted/objects/64/fd55f9b6390202db5e5666fd1fb339089fba4d rename to deps/libgit2/tests/resources/push_src/.gitted/objects/64/fd55f9b6390202db5e5666fd1fb339089fba4d diff --git a/tests/resources/push_src/.gitted/objects/78/981922613b2afb6025042ff6bd878ac1994e85 b/deps/libgit2/tests/resources/push_src/.gitted/objects/78/981922613b2afb6025042ff6bd878ac1994e85 similarity index 100% rename from tests/resources/push_src/.gitted/objects/78/981922613b2afb6025042ff6bd878ac1994e85 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/78/981922613b2afb6025042ff6bd878ac1994e85 diff --git a/tests/resources/push_src/.gitted/objects/80/5c54522e614f29f70d2413a0470247d8b424ac b/deps/libgit2/tests/resources/push_src/.gitted/objects/80/5c54522e614f29f70d2413a0470247d8b424ac similarity index 100% rename from tests/resources/push_src/.gitted/objects/80/5c54522e614f29f70d2413a0470247d8b424ac rename to deps/libgit2/tests/resources/push_src/.gitted/objects/80/5c54522e614f29f70d2413a0470247d8b424ac diff --git a/tests/resources/push_src/.gitted/objects/95/1bbbb90e2259a4c8950db78946784fb53fcbce b/deps/libgit2/tests/resources/push_src/.gitted/objects/95/1bbbb90e2259a4c8950db78946784fb53fcbce similarity index 100% rename from tests/resources/push_src/.gitted/objects/95/1bbbb90e2259a4c8950db78946784fb53fcbce rename to deps/libgit2/tests/resources/push_src/.gitted/objects/95/1bbbb90e2259a4c8950db78946784fb53fcbce diff --git a/tests/resources/push_src/.gitted/objects/a7/8705c3b2725f931d3ee05348d83cc26700f247 b/deps/libgit2/tests/resources/push_src/.gitted/objects/a7/8705c3b2725f931d3ee05348d83cc26700f247 similarity index 100% rename from tests/resources/push_src/.gitted/objects/a7/8705c3b2725f931d3ee05348d83cc26700f247 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/a7/8705c3b2725f931d3ee05348d83cc26700f247 diff --git a/tests/resources/push_src/.gitted/objects/b4/83ae7ba66decee9aee971f501221dea84b1498 b/deps/libgit2/tests/resources/push_src/.gitted/objects/b4/83ae7ba66decee9aee971f501221dea84b1498 similarity index 100% rename from tests/resources/push_src/.gitted/objects/b4/83ae7ba66decee9aee971f501221dea84b1498 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/b4/83ae7ba66decee9aee971f501221dea84b1498 diff --git a/tests/resources/push_src/.gitted/objects/b4/e1f2b375a64c1ccd40c5ff6aa8bc96839ba4fd b/deps/libgit2/tests/resources/push_src/.gitted/objects/b4/e1f2b375a64c1ccd40c5ff6aa8bc96839ba4fd similarity index 100% rename from tests/resources/push_src/.gitted/objects/b4/e1f2b375a64c1ccd40c5ff6aa8bc96839ba4fd rename to deps/libgit2/tests/resources/push_src/.gitted/objects/b4/e1f2b375a64c1ccd40c5ff6aa8bc96839ba4fd diff --git a/tests/resources/push_src/.gitted/objects/c1/0409136a7a75e025fa502a1b2fd7b62b77d279 b/deps/libgit2/tests/resources/push_src/.gitted/objects/c1/0409136a7a75e025fa502a1b2fd7b62b77d279 similarity index 100% rename from tests/resources/push_src/.gitted/objects/c1/0409136a7a75e025fa502a1b2fd7b62b77d279 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/c1/0409136a7a75e025fa502a1b2fd7b62b77d279 diff --git a/tests/resources/push_src/.gitted/objects/cd/881f90f2933db2e4cc26b8c71fe6037ac7fe4c b/deps/libgit2/tests/resources/push_src/.gitted/objects/cd/881f90f2933db2e4cc26b8c71fe6037ac7fe4c similarity index 100% rename from tests/resources/push_src/.gitted/objects/cd/881f90f2933db2e4cc26b8c71fe6037ac7fe4c rename to deps/libgit2/tests/resources/push_src/.gitted/objects/cd/881f90f2933db2e4cc26b8c71fe6037ac7fe4c diff --git a/tests/resources/push_src/.gitted/objects/d9/b63a88223d8367516f50bd131a5f7349b7f3e4 b/deps/libgit2/tests/resources/push_src/.gitted/objects/d9/b63a88223d8367516f50bd131a5f7349b7f3e4 similarity index 100% rename from tests/resources/push_src/.gitted/objects/d9/b63a88223d8367516f50bd131a5f7349b7f3e4 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/d9/b63a88223d8367516f50bd131a5f7349b7f3e4 diff --git a/tests/resources/push_src/.gitted/objects/dc/ab83249f6f9d1ed735d651352a80519339b591 b/deps/libgit2/tests/resources/push_src/.gitted/objects/dc/ab83249f6f9d1ed735d651352a80519339b591 similarity index 100% rename from tests/resources/push_src/.gitted/objects/dc/ab83249f6f9d1ed735d651352a80519339b591 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/dc/ab83249f6f9d1ed735d651352a80519339b591 diff --git a/tests/resources/push_src/.gitted/objects/ee/a4f2705eeec2db3813f2430829afce99cd00b5 b/deps/libgit2/tests/resources/push_src/.gitted/objects/ee/a4f2705eeec2db3813f2430829afce99cd00b5 similarity index 100% rename from tests/resources/push_src/.gitted/objects/ee/a4f2705eeec2db3813f2430829afce99cd00b5 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/ee/a4f2705eeec2db3813f2430829afce99cd00b5 diff --git a/tests/resources/push_src/.gitted/objects/f7/8a3106c85fb549c65198b2a2086276c6174928 b/deps/libgit2/tests/resources/push_src/.gitted/objects/f7/8a3106c85fb549c65198b2a2086276c6174928 similarity index 100% rename from tests/resources/push_src/.gitted/objects/f7/8a3106c85fb549c65198b2a2086276c6174928 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/f7/8a3106c85fb549c65198b2a2086276c6174928 diff --git a/tests/resources/push_src/.gitted/objects/f8/f7aefc2900a3d737cea9eee45729fd55761e1a b/deps/libgit2/tests/resources/push_src/.gitted/objects/f8/f7aefc2900a3d737cea9eee45729fd55761e1a similarity index 100% rename from tests/resources/push_src/.gitted/objects/f8/f7aefc2900a3d737cea9eee45729fd55761e1a rename to deps/libgit2/tests/resources/push_src/.gitted/objects/f8/f7aefc2900a3d737cea9eee45729fd55761e1a diff --git a/tests/resources/push_src/.gitted/objects/fa/38b91f199934685819bea316186d8b008c52a2 b/deps/libgit2/tests/resources/push_src/.gitted/objects/fa/38b91f199934685819bea316186d8b008c52a2 similarity index 100% rename from tests/resources/push_src/.gitted/objects/fa/38b91f199934685819bea316186d8b008c52a2 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/fa/38b91f199934685819bea316186d8b008c52a2 diff --git a/tests/resources/push_src/.gitted/objects/ff/83aa4c5e5d28e3bcba2f5c6e2adc61286a4e5e b/deps/libgit2/tests/resources/push_src/.gitted/objects/ff/83aa4c5e5d28e3bcba2f5c6e2adc61286a4e5e similarity index 100% rename from tests/resources/push_src/.gitted/objects/ff/83aa4c5e5d28e3bcba2f5c6e2adc61286a4e5e rename to deps/libgit2/tests/resources/push_src/.gitted/objects/ff/83aa4c5e5d28e3bcba2f5c6e2adc61286a4e5e diff --git a/tests/resources/push_src/.gitted/objects/ff/fe95c7fd0a37fa2ed702f8f93b56b2196b3925 b/deps/libgit2/tests/resources/push_src/.gitted/objects/ff/fe95c7fd0a37fa2ed702f8f93b56b2196b3925 similarity index 100% rename from tests/resources/push_src/.gitted/objects/ff/fe95c7fd0a37fa2ed702f8f93b56b2196b3925 rename to deps/libgit2/tests/resources/push_src/.gitted/objects/ff/fe95c7fd0a37fa2ed702f8f93b56b2196b3925 diff --git a/tests/resources/push_src/.gitted/objects/pack/dummy b/deps/libgit2/tests/resources/push_src/.gitted/objects/pack/dummy similarity index 100% rename from tests/resources/push_src/.gitted/objects/pack/dummy rename to deps/libgit2/tests/resources/push_src/.gitted/objects/pack/dummy diff --git a/tests/resources/push_src/.gitted/refs/heads/b1 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b1 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b1 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b1 diff --git a/tests/resources/push_src/.gitted/refs/heads/b2 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b2 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b2 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b2 diff --git a/tests/resources/push_src/.gitted/refs/heads/b3 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b3 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b3 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b3 diff --git a/tests/resources/push_src/.gitted/refs/heads/b4 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b4 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b4 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b4 diff --git a/tests/resources/push_src/.gitted/refs/heads/b5 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b5 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b5 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b5 diff --git a/tests/resources/push_src/.gitted/refs/heads/b6 b/deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b6 similarity index 100% rename from tests/resources/push_src/.gitted/refs/heads/b6 rename to deps/libgit2/tests/resources/push_src/.gitted/refs/heads/b6 diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-blob b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-blob similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-blob rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-blob diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-commit b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-commit similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-commit rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-commit diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-commit-two b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-commit-two similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-commit-two rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-commit-two diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-lightweight b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-lightweight similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-lightweight rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-lightweight diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-tag b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-tag similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-tag rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-tag diff --git a/tests/resources/push_src/.gitted/refs/tags/tag-tree b/deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-tree similarity index 100% rename from tests/resources/push_src/.gitted/refs/tags/tag-tree rename to deps/libgit2/tests/resources/push_src/.gitted/refs/tags/tag-tree diff --git a/tests/resources/push_src/a.txt b/deps/libgit2/tests/resources/push_src/a.txt similarity index 100% rename from tests/resources/push_src/a.txt rename to deps/libgit2/tests/resources/push_src/a.txt diff --git a/tests/resources/push_src/fold/b.txt b/deps/libgit2/tests/resources/push_src/fold/b.txt similarity index 100% rename from tests/resources/push_src/fold/b.txt rename to deps/libgit2/tests/resources/push_src/fold/b.txt diff --git a/tests/resources/push_src/foldb.txt b/deps/libgit2/tests/resources/push_src/foldb.txt similarity index 100% rename from tests/resources/push_src/foldb.txt rename to deps/libgit2/tests/resources/push_src/foldb.txt diff --git a/tests/resources/push_src/gitmodules b/deps/libgit2/tests/resources/push_src/gitmodules similarity index 100% rename from tests/resources/push_src/gitmodules rename to deps/libgit2/tests/resources/push_src/gitmodules diff --git a/tests/resources/push_src/submodule/.gitted b/deps/libgit2/tests/resources/push_src/submodule/.gitted similarity index 100% rename from tests/resources/push_src/submodule/.gitted rename to deps/libgit2/tests/resources/push_src/submodule/.gitted diff --git a/tests/resources/push_src/submodule/README b/deps/libgit2/tests/resources/push_src/submodule/README similarity index 100% rename from tests/resources/push_src/submodule/README rename to deps/libgit2/tests/resources/push_src/submodule/README diff --git a/tests/resources/push_src/submodule/branch_file.txt b/deps/libgit2/tests/resources/push_src/submodule/branch_file.txt similarity index 100% rename from tests/resources/push_src/submodule/branch_file.txt rename to deps/libgit2/tests/resources/push_src/submodule/branch_file.txt diff --git a/tests/resources/push_src/submodule/new.txt b/deps/libgit2/tests/resources/push_src/submodule/new.txt similarity index 100% rename from tests/resources/push_src/submodule/new.txt rename to deps/libgit2/tests/resources/push_src/submodule/new.txt diff --git a/tests/resources/renames/.gitted/HEAD b/deps/libgit2/tests/resources/renames/.gitted/HEAD similarity index 100% rename from tests/resources/renames/.gitted/HEAD rename to deps/libgit2/tests/resources/renames/.gitted/HEAD diff --git a/tests/resources/renames/.gitted/config b/deps/libgit2/tests/resources/renames/.gitted/config similarity index 100% rename from tests/resources/renames/.gitted/config rename to deps/libgit2/tests/resources/renames/.gitted/config diff --git a/tests/resources/renames/.gitted/description b/deps/libgit2/tests/resources/renames/.gitted/description similarity index 100% rename from tests/resources/renames/.gitted/description rename to deps/libgit2/tests/resources/renames/.gitted/description diff --git a/tests/resources/renames/.gitted/index b/deps/libgit2/tests/resources/renames/.gitted/index similarity index 100% rename from tests/resources/renames/.gitted/index rename to deps/libgit2/tests/resources/renames/.gitted/index diff --git a/tests/resources/renames/.gitted/info/exclude b/deps/libgit2/tests/resources/renames/.gitted/info/exclude similarity index 100% rename from tests/resources/renames/.gitted/info/exclude rename to deps/libgit2/tests/resources/renames/.gitted/info/exclude diff --git a/tests/resources/renames/.gitted/logs/HEAD b/deps/libgit2/tests/resources/renames/.gitted/logs/HEAD similarity index 100% rename from tests/resources/renames/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/renames/.gitted/logs/HEAD diff --git a/tests/resources/renames/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/renames/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/renames/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/renames/.gitted/logs/refs/heads/master diff --git a/tests/resources/renames/.gitted/objects/03/da7ad872536bd448da8d88eb7165338bf923a7 b/deps/libgit2/tests/resources/renames/.gitted/objects/03/da7ad872536bd448da8d88eb7165338bf923a7 similarity index 100% rename from tests/resources/renames/.gitted/objects/03/da7ad872536bd448da8d88eb7165338bf923a7 rename to deps/libgit2/tests/resources/renames/.gitted/objects/03/da7ad872536bd448da8d88eb7165338bf923a7 diff --git a/tests/resources/renames/.gitted/objects/17/58bdd7c16a72ff7c17d8de0c957ced3ccad645 b/deps/libgit2/tests/resources/renames/.gitted/objects/17/58bdd7c16a72ff7c17d8de0c957ced3ccad645 similarity index 100% rename from tests/resources/renames/.gitted/objects/17/58bdd7c16a72ff7c17d8de0c957ced3ccad645 rename to deps/libgit2/tests/resources/renames/.gitted/objects/17/58bdd7c16a72ff7c17d8de0c957ced3ccad645 diff --git a/tests/resources/renames/.gitted/objects/19/dd32dfb1520a64e5bbaae8dce6ef423dfa2f13 b/deps/libgit2/tests/resources/renames/.gitted/objects/19/dd32dfb1520a64e5bbaae8dce6ef423dfa2f13 similarity index 100% rename from tests/resources/renames/.gitted/objects/19/dd32dfb1520a64e5bbaae8dce6ef423dfa2f13 rename to deps/libgit2/tests/resources/renames/.gitted/objects/19/dd32dfb1520a64e5bbaae8dce6ef423dfa2f13 diff --git a/tests/resources/renames/.gitted/objects/1c/068dee5790ef1580cfc4cd670915b48d790084 b/deps/libgit2/tests/resources/renames/.gitted/objects/1c/068dee5790ef1580cfc4cd670915b48d790084 similarity index 100% rename from tests/resources/renames/.gitted/objects/1c/068dee5790ef1580cfc4cd670915b48d790084 rename to deps/libgit2/tests/resources/renames/.gitted/objects/1c/068dee5790ef1580cfc4cd670915b48d790084 diff --git a/tests/resources/renames/.gitted/objects/2b/c7f351d20b53f1c72c16c4b036e491c478c49a b/deps/libgit2/tests/resources/renames/.gitted/objects/2b/c7f351d20b53f1c72c16c4b036e491c478c49a similarity index 100% rename from tests/resources/renames/.gitted/objects/2b/c7f351d20b53f1c72c16c4b036e491c478c49a rename to deps/libgit2/tests/resources/renames/.gitted/objects/2b/c7f351d20b53f1c72c16c4b036e491c478c49a diff --git a/tests/resources/renames/.gitted/objects/31/e47d8c1fa36d7f8d537b96158e3f024de0a9f2 b/deps/libgit2/tests/resources/renames/.gitted/objects/31/e47d8c1fa36d7f8d537b96158e3f024de0a9f2 similarity index 100% rename from tests/resources/renames/.gitted/objects/31/e47d8c1fa36d7f8d537b96158e3f024de0a9f2 rename to deps/libgit2/tests/resources/renames/.gitted/objects/31/e47d8c1fa36d7f8d537b96158e3f024de0a9f2 diff --git a/tests/resources/renames/.gitted/objects/35/92953ff3ea5e8ba700c429f3aefe33c8806754 b/deps/libgit2/tests/resources/renames/.gitted/objects/35/92953ff3ea5e8ba700c429f3aefe33c8806754 similarity index 100% rename from tests/resources/renames/.gitted/objects/35/92953ff3ea5e8ba700c429f3aefe33c8806754 rename to deps/libgit2/tests/resources/renames/.gitted/objects/35/92953ff3ea5e8ba700c429f3aefe33c8806754 diff --git a/tests/resources/renames/.gitted/objects/36/020db6cdacaa93497f31edcd8f242ff9bc366d b/deps/libgit2/tests/resources/renames/.gitted/objects/36/020db6cdacaa93497f31edcd8f242ff9bc366d similarity index 100% rename from tests/resources/renames/.gitted/objects/36/020db6cdacaa93497f31edcd8f242ff9bc366d rename to deps/libgit2/tests/resources/renames/.gitted/objects/36/020db6cdacaa93497f31edcd8f242ff9bc366d diff --git a/tests/resources/renames/.gitted/objects/3c/04741dd4b96c4ae4b00ec0f6e10c816a30aad2 b/deps/libgit2/tests/resources/renames/.gitted/objects/3c/04741dd4b96c4ae4b00ec0f6e10c816a30aad2 similarity index 100% rename from tests/resources/renames/.gitted/objects/3c/04741dd4b96c4ae4b00ec0f6e10c816a30aad2 rename to deps/libgit2/tests/resources/renames/.gitted/objects/3c/04741dd4b96c4ae4b00ec0f6e10c816a30aad2 diff --git a/tests/resources/renames/.gitted/objects/42/10ffd5c390b21dd5483375e75288dea9ede512 b/deps/libgit2/tests/resources/renames/.gitted/objects/42/10ffd5c390b21dd5483375e75288dea9ede512 similarity index 100% rename from tests/resources/renames/.gitted/objects/42/10ffd5c390b21dd5483375e75288dea9ede512 rename to deps/libgit2/tests/resources/renames/.gitted/objects/42/10ffd5c390b21dd5483375e75288dea9ede512 diff --git a/tests/resources/renames/.gitted/objects/44/4a76ed3e45b183753f49376af30da8c3fe276a b/deps/libgit2/tests/resources/renames/.gitted/objects/44/4a76ed3e45b183753f49376af30da8c3fe276a similarity index 100% rename from tests/resources/renames/.gitted/objects/44/4a76ed3e45b183753f49376af30da8c3fe276a rename to deps/libgit2/tests/resources/renames/.gitted/objects/44/4a76ed3e45b183753f49376af30da8c3fe276a diff --git a/tests/resources/renames/.gitted/objects/47/184c1e7eb22abcbed2bf4ee87d4e38096f7951 b/deps/libgit2/tests/resources/renames/.gitted/objects/47/184c1e7eb22abcbed2bf4ee87d4e38096f7951 similarity index 100% rename from tests/resources/renames/.gitted/objects/47/184c1e7eb22abcbed2bf4ee87d4e38096f7951 rename to deps/libgit2/tests/resources/renames/.gitted/objects/47/184c1e7eb22abcbed2bf4ee87d4e38096f7951 diff --git a/tests/resources/renames/.gitted/objects/4e/4cae3e7dd56ed74bff39526d0469e554432953 b/deps/libgit2/tests/resources/renames/.gitted/objects/4e/4cae3e7dd56ed74bff39526d0469e554432953 similarity index 100% rename from tests/resources/renames/.gitted/objects/4e/4cae3e7dd56ed74bff39526d0469e554432953 rename to deps/libgit2/tests/resources/renames/.gitted/objects/4e/4cae3e7dd56ed74bff39526d0469e554432953 diff --git a/tests/resources/renames/.gitted/objects/50/e90273af7d826ff0a95865bcd3ba8412c447d9 b/deps/libgit2/tests/resources/renames/.gitted/objects/50/e90273af7d826ff0a95865bcd3ba8412c447d9 similarity index 100% rename from tests/resources/renames/.gitted/objects/50/e90273af7d826ff0a95865bcd3ba8412c447d9 rename to deps/libgit2/tests/resources/renames/.gitted/objects/50/e90273af7d826ff0a95865bcd3ba8412c447d9 diff --git a/tests/resources/renames/.gitted/objects/5e/26abc56a5a84d89790f45416648899cbe13109 b/deps/libgit2/tests/resources/renames/.gitted/objects/5e/26abc56a5a84d89790f45416648899cbe13109 similarity index 100% rename from tests/resources/renames/.gitted/objects/5e/26abc56a5a84d89790f45416648899cbe13109 rename to deps/libgit2/tests/resources/renames/.gitted/objects/5e/26abc56a5a84d89790f45416648899cbe13109 diff --git a/tests/resources/renames/.gitted/objects/61/8c6f2f8740bd6049b2fb9eb93fc15726462745 b/deps/libgit2/tests/resources/renames/.gitted/objects/61/8c6f2f8740bd6049b2fb9eb93fc15726462745 similarity index 100% rename from tests/resources/renames/.gitted/objects/61/8c6f2f8740bd6049b2fb9eb93fc15726462745 rename to deps/libgit2/tests/resources/renames/.gitted/objects/61/8c6f2f8740bd6049b2fb9eb93fc15726462745 diff --git a/tests/resources/renames/.gitted/objects/66/311f5cfbe7836c27510a3ba2f43e282e2c8bba b/deps/libgit2/tests/resources/renames/.gitted/objects/66/311f5cfbe7836c27510a3ba2f43e282e2c8bba similarity index 100% rename from tests/resources/renames/.gitted/objects/66/311f5cfbe7836c27510a3ba2f43e282e2c8bba rename to deps/libgit2/tests/resources/renames/.gitted/objects/66/311f5cfbe7836c27510a3ba2f43e282e2c8bba diff --git a/tests/resources/renames/.gitted/objects/93/f538c45a57a87eb4c1e86f91c6ee41d66c7ba7 b/deps/libgit2/tests/resources/renames/.gitted/objects/93/f538c45a57a87eb4c1e86f91c6ee41d66c7ba7 similarity index 100% rename from tests/resources/renames/.gitted/objects/93/f538c45a57a87eb4c1e86f91c6ee41d66c7ba7 rename to deps/libgit2/tests/resources/renames/.gitted/objects/93/f538c45a57a87eb4c1e86f91c6ee41d66c7ba7 diff --git a/tests/resources/renames/.gitted/objects/9a/69d960ae94b060f56c2a8702545e2bb1abb935 b/deps/libgit2/tests/resources/renames/.gitted/objects/9a/69d960ae94b060f56c2a8702545e2bb1abb935 similarity index 100% rename from tests/resources/renames/.gitted/objects/9a/69d960ae94b060f56c2a8702545e2bb1abb935 rename to deps/libgit2/tests/resources/renames/.gitted/objects/9a/69d960ae94b060f56c2a8702545e2bb1abb935 diff --git a/tests/resources/renames/.gitted/objects/ad/0a8e55a104ac54a8a29ed4b84b49e76837a113 b/deps/libgit2/tests/resources/renames/.gitted/objects/ad/0a8e55a104ac54a8a29ed4b84b49e76837a113 similarity index 100% rename from tests/resources/renames/.gitted/objects/ad/0a8e55a104ac54a8a29ed4b84b49e76837a113 rename to deps/libgit2/tests/resources/renames/.gitted/objects/ad/0a8e55a104ac54a8a29ed4b84b49e76837a113 diff --git a/tests/resources/renames/.gitted/objects/b9/25b224cc91f897001a9993fbce169fdaa8858f b/deps/libgit2/tests/resources/renames/.gitted/objects/b9/25b224cc91f897001a9993fbce169fdaa8858f similarity index 100% rename from tests/resources/renames/.gitted/objects/b9/25b224cc91f897001a9993fbce169fdaa8858f rename to deps/libgit2/tests/resources/renames/.gitted/objects/b9/25b224cc91f897001a9993fbce169fdaa8858f diff --git a/tests/resources/renames/.gitted/objects/d7/9b202de198fa61b02424b9e25e840dc75e1323 b/deps/libgit2/tests/resources/renames/.gitted/objects/d7/9b202de198fa61b02424b9e25e840dc75e1323 similarity index 100% rename from tests/resources/renames/.gitted/objects/d7/9b202de198fa61b02424b9e25e840dc75e1323 rename to deps/libgit2/tests/resources/renames/.gitted/objects/d7/9b202de198fa61b02424b9e25e840dc75e1323 diff --git a/tests/resources/renames/.gitted/objects/ea/c43f5195a2cee53b7458d8dad16aedde10711b b/deps/libgit2/tests/resources/renames/.gitted/objects/ea/c43f5195a2cee53b7458d8dad16aedde10711b similarity index 100% rename from tests/resources/renames/.gitted/objects/ea/c43f5195a2cee53b7458d8dad16aedde10711b rename to deps/libgit2/tests/resources/renames/.gitted/objects/ea/c43f5195a2cee53b7458d8dad16aedde10711b diff --git a/tests/resources/renames/.gitted/objects/ea/f4a3e3bfe68585e90cada20736ace491cd100b b/deps/libgit2/tests/resources/renames/.gitted/objects/ea/f4a3e3bfe68585e90cada20736ace491cd100b similarity index 100% rename from tests/resources/renames/.gitted/objects/ea/f4a3e3bfe68585e90cada20736ace491cd100b rename to deps/libgit2/tests/resources/renames/.gitted/objects/ea/f4a3e3bfe68585e90cada20736ace491cd100b diff --git a/tests/resources/renames/.gitted/objects/f9/0d4fc20ecddf21eebe6a37e9225d244339d2b5 b/deps/libgit2/tests/resources/renames/.gitted/objects/f9/0d4fc20ecddf21eebe6a37e9225d244339d2b5 similarity index 100% rename from tests/resources/renames/.gitted/objects/f9/0d4fc20ecddf21eebe6a37e9225d244339d2b5 rename to deps/libgit2/tests/resources/renames/.gitted/objects/f9/0d4fc20ecddf21eebe6a37e9225d244339d2b5 diff --git a/tests/resources/renames/.gitted/refs/heads/master b/deps/libgit2/tests/resources/renames/.gitted/refs/heads/master similarity index 100% rename from tests/resources/renames/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/renames/.gitted/refs/heads/master diff --git a/tests/resources/renames/.gitted/refs/heads/renames_similar b/deps/libgit2/tests/resources/renames/.gitted/refs/heads/renames_similar similarity index 100% rename from tests/resources/renames/.gitted/refs/heads/renames_similar rename to deps/libgit2/tests/resources/renames/.gitted/refs/heads/renames_similar diff --git a/tests/resources/renames/.gitted/refs/heads/renames_similar_two b/deps/libgit2/tests/resources/renames/.gitted/refs/heads/renames_similar_two similarity index 100% rename from tests/resources/renames/.gitted/refs/heads/renames_similar_two rename to deps/libgit2/tests/resources/renames/.gitted/refs/heads/renames_similar_two diff --git a/tests/resources/renames/ikeepsix.txt b/deps/libgit2/tests/resources/renames/ikeepsix.txt similarity index 100% rename from tests/resources/renames/ikeepsix.txt rename to deps/libgit2/tests/resources/renames/ikeepsix.txt diff --git a/tests/resources/renames/sixserving.txt b/deps/libgit2/tests/resources/renames/sixserving.txt similarity index 100% rename from tests/resources/renames/sixserving.txt rename to deps/libgit2/tests/resources/renames/sixserving.txt diff --git a/tests/resources/renames/songof7cities.txt b/deps/libgit2/tests/resources/renames/songof7cities.txt similarity index 100% rename from tests/resources/renames/songof7cities.txt rename to deps/libgit2/tests/resources/renames/songof7cities.txt diff --git a/tests/resources/renames/untimely.txt b/deps/libgit2/tests/resources/renames/untimely.txt similarity index 100% rename from tests/resources/renames/untimely.txt rename to deps/libgit2/tests/resources/renames/untimely.txt diff --git a/tests/resources/revert/.gitted/HEAD b/deps/libgit2/tests/resources/revert/.gitted/HEAD similarity index 100% rename from tests/resources/revert/.gitted/HEAD rename to deps/libgit2/tests/resources/revert/.gitted/HEAD diff --git a/tests/resources/revert/.gitted/config b/deps/libgit2/tests/resources/revert/.gitted/config similarity index 100% rename from tests/resources/revert/.gitted/config rename to deps/libgit2/tests/resources/revert/.gitted/config diff --git a/tests/resources/revert/.gitted/index b/deps/libgit2/tests/resources/revert/.gitted/index similarity index 100% rename from tests/resources/revert/.gitted/index rename to deps/libgit2/tests/resources/revert/.gitted/index diff --git a/tests/resources/revert/.gitted/info/exclude b/deps/libgit2/tests/resources/revert/.gitted/info/exclude similarity index 100% rename from tests/resources/revert/.gitted/info/exclude rename to deps/libgit2/tests/resources/revert/.gitted/info/exclude diff --git a/tests/resources/revert/.gitted/objects/0a/a8c7e40d342fff78d60b29a4ba8e993ed79c51 b/deps/libgit2/tests/resources/revert/.gitted/objects/0a/a8c7e40d342fff78d60b29a4ba8e993ed79c51 similarity index 100% rename from tests/resources/revert/.gitted/objects/0a/a8c7e40d342fff78d60b29a4ba8e993ed79c51 rename to deps/libgit2/tests/resources/revert/.gitted/objects/0a/a8c7e40d342fff78d60b29a4ba8e993ed79c51 diff --git a/tests/resources/revert/.gitted/objects/0a/b09ea6d4c3634bdf6c221626d8b6f7dd890767 b/deps/libgit2/tests/resources/revert/.gitted/objects/0a/b09ea6d4c3634bdf6c221626d8b6f7dd890767 similarity index 100% rename from tests/resources/revert/.gitted/objects/0a/b09ea6d4c3634bdf6c221626d8b6f7dd890767 rename to deps/libgit2/tests/resources/revert/.gitted/objects/0a/b09ea6d4c3634bdf6c221626d8b6f7dd890767 diff --git a/tests/resources/revert/.gitted/objects/0a/d19525be6d8cae5e5deb2770fc244b65255057 b/deps/libgit2/tests/resources/revert/.gitted/objects/0a/d19525be6d8cae5e5deb2770fc244b65255057 similarity index 100% rename from tests/resources/revert/.gitted/objects/0a/d19525be6d8cae5e5deb2770fc244b65255057 rename to deps/libgit2/tests/resources/revert/.gitted/objects/0a/d19525be6d8cae5e5deb2770fc244b65255057 diff --git a/tests/resources/revert/.gitted/objects/0c/db66192ee192f70f891f05a47636057420e871 b/deps/libgit2/tests/resources/revert/.gitted/objects/0c/db66192ee192f70f891f05a47636057420e871 similarity index 100% rename from tests/resources/revert/.gitted/objects/0c/db66192ee192f70f891f05a47636057420e871 rename to deps/libgit2/tests/resources/revert/.gitted/objects/0c/db66192ee192f70f891f05a47636057420e871 diff --git a/tests/resources/revert/.gitted/objects/0f/5bfcf58c558d865da6be0281d7795993646cee b/deps/libgit2/tests/resources/revert/.gitted/objects/0f/5bfcf58c558d865da6be0281d7795993646cee similarity index 100% rename from tests/resources/revert/.gitted/objects/0f/5bfcf58c558d865da6be0281d7795993646cee rename to deps/libgit2/tests/resources/revert/.gitted/objects/0f/5bfcf58c558d865da6be0281d7795993646cee diff --git a/tests/resources/revert/.gitted/objects/13/a6fdfd10bd74b1f258fb58801215985dd2e797 b/deps/libgit2/tests/resources/revert/.gitted/objects/13/a6fdfd10bd74b1f258fb58801215985dd2e797 similarity index 100% rename from tests/resources/revert/.gitted/objects/13/a6fdfd10bd74b1f258fb58801215985dd2e797 rename to deps/libgit2/tests/resources/revert/.gitted/objects/13/a6fdfd10bd74b1f258fb58801215985dd2e797 diff --git a/tests/resources/revert/.gitted/objects/13/ee9cd5d8e1023c218e0e1ea684ec0c582b5050 b/deps/libgit2/tests/resources/revert/.gitted/objects/13/ee9cd5d8e1023c218e0e1ea684ec0c582b5050 similarity index 100% rename from tests/resources/revert/.gitted/objects/13/ee9cd5d8e1023c218e0e1ea684ec0c582b5050 rename to deps/libgit2/tests/resources/revert/.gitted/objects/13/ee9cd5d8e1023c218e0e1ea684ec0c582b5050 diff --git a/tests/resources/revert/.gitted/objects/15/6ef9bcb968dccec8472a0f2eff49f1a713bc6b b/deps/libgit2/tests/resources/revert/.gitted/objects/15/6ef9bcb968dccec8472a0f2eff49f1a713bc6b similarity index 100% rename from tests/resources/revert/.gitted/objects/15/6ef9bcb968dccec8472a0f2eff49f1a713bc6b rename to deps/libgit2/tests/resources/revert/.gitted/objects/15/6ef9bcb968dccec8472a0f2eff49f1a713bc6b diff --git a/tests/resources/revert/.gitted/objects/18/1aab27ddb37b40d9a284fb4733497006d57091 b/deps/libgit2/tests/resources/revert/.gitted/objects/18/1aab27ddb37b40d9a284fb4733497006d57091 similarity index 100% rename from tests/resources/revert/.gitted/objects/18/1aab27ddb37b40d9a284fb4733497006d57091 rename to deps/libgit2/tests/resources/revert/.gitted/objects/18/1aab27ddb37b40d9a284fb4733497006d57091 diff --git a/tests/resources/revert/.gitted/objects/1b/c915c5cb7185a9438de28a7b1a7dfe8c01ee7f b/deps/libgit2/tests/resources/revert/.gitted/objects/1b/c915c5cb7185a9438de28a7b1a7dfe8c01ee7f similarity index 100% rename from tests/resources/revert/.gitted/objects/1b/c915c5cb7185a9438de28a7b1a7dfe8c01ee7f rename to deps/libgit2/tests/resources/revert/.gitted/objects/1b/c915c5cb7185a9438de28a7b1a7dfe8c01ee7f diff --git a/tests/resources/revert/.gitted/objects/1f/a4e069a641f10f5fb7588138b2d147fcd22c36 b/deps/libgit2/tests/resources/revert/.gitted/objects/1f/a4e069a641f10f5fb7588138b2d147fcd22c36 similarity index 100% rename from tests/resources/revert/.gitted/objects/1f/a4e069a641f10f5fb7588138b2d147fcd22c36 rename to deps/libgit2/tests/resources/revert/.gitted/objects/1f/a4e069a641f10f5fb7588138b2d147fcd22c36 diff --git a/tests/resources/revert/.gitted/objects/1f/f0c423042b46cb1d617b81efb715defbe8054d b/deps/libgit2/tests/resources/revert/.gitted/objects/1f/f0c423042b46cb1d617b81efb715defbe8054d similarity index 100% rename from tests/resources/revert/.gitted/objects/1f/f0c423042b46cb1d617b81efb715defbe8054d rename to deps/libgit2/tests/resources/revert/.gitted/objects/1f/f0c423042b46cb1d617b81efb715defbe8054d diff --git a/tests/resources/revert/.gitted/objects/21/a96a98ed84d45866e1de6e266fd3a61a4ae9dc b/deps/libgit2/tests/resources/revert/.gitted/objects/21/a96a98ed84d45866e1de6e266fd3a61a4ae9dc similarity index 100% rename from tests/resources/revert/.gitted/objects/21/a96a98ed84d45866e1de6e266fd3a61a4ae9dc rename to deps/libgit2/tests/resources/revert/.gitted/objects/21/a96a98ed84d45866e1de6e266fd3a61a4ae9dc diff --git a/tests/resources/revert/.gitted/objects/29/6a6d3be1dff05c5d1f631d2459389fa7b619eb b/deps/libgit2/tests/resources/revert/.gitted/objects/29/6a6d3be1dff05c5d1f631d2459389fa7b619eb similarity index 100% rename from tests/resources/revert/.gitted/objects/29/6a6d3be1dff05c5d1f631d2459389fa7b619eb rename to deps/libgit2/tests/resources/revert/.gitted/objects/29/6a6d3be1dff05c5d1f631d2459389fa7b619eb diff --git a/tests/resources/revert/.gitted/objects/2d/440f2b3147d3dc7ad1085813478d6d869d5a4d b/deps/libgit2/tests/resources/revert/.gitted/objects/2d/440f2b3147d3dc7ad1085813478d6d869d5a4d similarity index 100% rename from tests/resources/revert/.gitted/objects/2d/440f2b3147d3dc7ad1085813478d6d869d5a4d rename to deps/libgit2/tests/resources/revert/.gitted/objects/2d/440f2b3147d3dc7ad1085813478d6d869d5a4d diff --git a/tests/resources/revert/.gitted/objects/33/c6fd981c49a2abf2971482089350bfc5cda8ea b/deps/libgit2/tests/resources/revert/.gitted/objects/33/c6fd981c49a2abf2971482089350bfc5cda8ea similarity index 100% rename from tests/resources/revert/.gitted/objects/33/c6fd981c49a2abf2971482089350bfc5cda8ea rename to deps/libgit2/tests/resources/revert/.gitted/objects/33/c6fd981c49a2abf2971482089350bfc5cda8ea diff --git a/tests/resources/revert/.gitted/objects/39/467716290f6df775a91cdb9a4eb39295018145 b/deps/libgit2/tests/resources/revert/.gitted/objects/39/467716290f6df775a91cdb9a4eb39295018145 similarity index 100% rename from tests/resources/revert/.gitted/objects/39/467716290f6df775a91cdb9a4eb39295018145 rename to deps/libgit2/tests/resources/revert/.gitted/objects/39/467716290f6df775a91cdb9a4eb39295018145 diff --git a/tests/resources/revert/.gitted/objects/39/9fb3aba3d9d13f7d40a9254ce4402067ef3149 b/deps/libgit2/tests/resources/revert/.gitted/objects/39/9fb3aba3d9d13f7d40a9254ce4402067ef3149 similarity index 100% rename from tests/resources/revert/.gitted/objects/39/9fb3aba3d9d13f7d40a9254ce4402067ef3149 rename to deps/libgit2/tests/resources/revert/.gitted/objects/39/9fb3aba3d9d13f7d40a9254ce4402067ef3149 diff --git a/tests/resources/revert/.gitted/objects/3a/3ef367eaf3fe79effbfb0a56b269c04c2b59fe b/deps/libgit2/tests/resources/revert/.gitted/objects/3a/3ef367eaf3fe79effbfb0a56b269c04c2b59fe similarity index 100% rename from tests/resources/revert/.gitted/objects/3a/3ef367eaf3fe79effbfb0a56b269c04c2b59fe rename to deps/libgit2/tests/resources/revert/.gitted/objects/3a/3ef367eaf3fe79effbfb0a56b269c04c2b59fe diff --git a/tests/resources/revert/.gitted/objects/46/ff0854663aeb2182b9838c8da68e33ac23bc1e b/deps/libgit2/tests/resources/revert/.gitted/objects/46/ff0854663aeb2182b9838c8da68e33ac23bc1e similarity index 100% rename from tests/resources/revert/.gitted/objects/46/ff0854663aeb2182b9838c8da68e33ac23bc1e rename to deps/libgit2/tests/resources/revert/.gitted/objects/46/ff0854663aeb2182b9838c8da68e33ac23bc1e diff --git a/tests/resources/revert/.gitted/objects/4b/8fcff56437e60f58e9a6bc630dd242ebf6ea2c b/deps/libgit2/tests/resources/revert/.gitted/objects/4b/8fcff56437e60f58e9a6bc630dd242ebf6ea2c similarity index 100% rename from tests/resources/revert/.gitted/objects/4b/8fcff56437e60f58e9a6bc630dd242ebf6ea2c rename to deps/libgit2/tests/resources/revert/.gitted/objects/4b/8fcff56437e60f58e9a6bc630dd242ebf6ea2c diff --git a/tests/resources/revert/.gitted/objects/52/c95c4264245469a0617e289a7d737f156826b4 b/deps/libgit2/tests/resources/revert/.gitted/objects/52/c95c4264245469a0617e289a7d737f156826b4 similarity index 100% rename from tests/resources/revert/.gitted/objects/52/c95c4264245469a0617e289a7d737f156826b4 rename to deps/libgit2/tests/resources/revert/.gitted/objects/52/c95c4264245469a0617e289a7d737f156826b4 diff --git a/tests/resources/revert/.gitted/objects/55/568c8de5322ff9a95d72747a239cdb64a19965 b/deps/libgit2/tests/resources/revert/.gitted/objects/55/568c8de5322ff9a95d72747a239cdb64a19965 similarity index 100% rename from tests/resources/revert/.gitted/objects/55/568c8de5322ff9a95d72747a239cdb64a19965 rename to deps/libgit2/tests/resources/revert/.gitted/objects/55/568c8de5322ff9a95d72747a239cdb64a19965 diff --git a/tests/resources/revert/.gitted/objects/55/acf326a69f0aab7a974ec53ffa55a50bcac14e b/deps/libgit2/tests/resources/revert/.gitted/objects/55/acf326a69f0aab7a974ec53ffa55a50bcac14e similarity index 100% rename from tests/resources/revert/.gitted/objects/55/acf326a69f0aab7a974ec53ffa55a50bcac14e rename to deps/libgit2/tests/resources/revert/.gitted/objects/55/acf326a69f0aab7a974ec53ffa55a50bcac14e diff --git a/tests/resources/revert/.gitted/objects/5a/cdc74af27172ec491d213ee36cea7eb9ef2579 b/deps/libgit2/tests/resources/revert/.gitted/objects/5a/cdc74af27172ec491d213ee36cea7eb9ef2579 similarity index 100% rename from tests/resources/revert/.gitted/objects/5a/cdc74af27172ec491d213ee36cea7eb9ef2579 rename to deps/libgit2/tests/resources/revert/.gitted/objects/5a/cdc74af27172ec491d213ee36cea7eb9ef2579 diff --git a/tests/resources/revert/.gitted/objects/5c/f1d643f100d8112834e540264546ba2c159976 b/deps/libgit2/tests/resources/revert/.gitted/objects/5c/f1d643f100d8112834e540264546ba2c159976 similarity index 100% rename from tests/resources/revert/.gitted/objects/5c/f1d643f100d8112834e540264546ba2c159976 rename to deps/libgit2/tests/resources/revert/.gitted/objects/5c/f1d643f100d8112834e540264546ba2c159976 diff --git a/tests/resources/revert/.gitted/objects/6b/ccd0dc58cea5ccff86014f3d64b31bd8c02a37 b/deps/libgit2/tests/resources/revert/.gitted/objects/6b/ccd0dc58cea5ccff86014f3d64b31bd8c02a37 similarity index 100% rename from tests/resources/revert/.gitted/objects/6b/ccd0dc58cea5ccff86014f3d64b31bd8c02a37 rename to deps/libgit2/tests/resources/revert/.gitted/objects/6b/ccd0dc58cea5ccff86014f3d64b31bd8c02a37 diff --git a/tests/resources/revert/.gitted/objects/71/eb9c2b53dbbf3c45fb28b27c850db4b7fb8011 b/deps/libgit2/tests/resources/revert/.gitted/objects/71/eb9c2b53dbbf3c45fb28b27c850db4b7fb8011 similarity index 100% rename from tests/resources/revert/.gitted/objects/71/eb9c2b53dbbf3c45fb28b27c850db4b7fb8011 rename to deps/libgit2/tests/resources/revert/.gitted/objects/71/eb9c2b53dbbf3c45fb28b27c850db4b7fb8011 diff --git a/tests/resources/revert/.gitted/objects/72/333f47d4e83616630ff3b0ffe4c0faebcc3c45 b/deps/libgit2/tests/resources/revert/.gitted/objects/72/333f47d4e83616630ff3b0ffe4c0faebcc3c45 similarity index 100% rename from tests/resources/revert/.gitted/objects/72/333f47d4e83616630ff3b0ffe4c0faebcc3c45 rename to deps/libgit2/tests/resources/revert/.gitted/objects/72/333f47d4e83616630ff3b0ffe4c0faebcc3c45 diff --git a/tests/resources/revert/.gitted/objects/73/ec36fa120f8066963a0bc9105bb273dbd903d7 b/deps/libgit2/tests/resources/revert/.gitted/objects/73/ec36fa120f8066963a0bc9105bb273dbd903d7 similarity index 100% rename from tests/resources/revert/.gitted/objects/73/ec36fa120f8066963a0bc9105bb273dbd903d7 rename to deps/libgit2/tests/resources/revert/.gitted/objects/73/ec36fa120f8066963a0bc9105bb273dbd903d7 diff --git a/tests/resources/revert/.gitted/objects/74/7726e021bc5f44b86de60e3032fd6f9f1b8383 b/deps/libgit2/tests/resources/revert/.gitted/objects/74/7726e021bc5f44b86de60e3032fd6f9f1b8383 similarity index 100% rename from tests/resources/revert/.gitted/objects/74/7726e021bc5f44b86de60e3032fd6f9f1b8383 rename to deps/libgit2/tests/resources/revert/.gitted/objects/74/7726e021bc5f44b86de60e3032fd6f9f1b8383 diff --git a/tests/resources/revert/.gitted/objects/77/31926a337c4eaba1e2187d90ebfa0a93659382 b/deps/libgit2/tests/resources/revert/.gitted/objects/77/31926a337c4eaba1e2187d90ebfa0a93659382 similarity index 100% rename from tests/resources/revert/.gitted/objects/77/31926a337c4eaba1e2187d90ebfa0a93659382 rename to deps/libgit2/tests/resources/revert/.gitted/objects/77/31926a337c4eaba1e2187d90ebfa0a93659382 diff --git a/tests/resources/revert/.gitted/objects/83/f65df4606c4f8dbf8da43de25de1b7e4c03238 b/deps/libgit2/tests/resources/revert/.gitted/objects/83/f65df4606c4f8dbf8da43de25de1b7e4c03238 similarity index 100% rename from tests/resources/revert/.gitted/objects/83/f65df4606c4f8dbf8da43de25de1b7e4c03238 rename to deps/libgit2/tests/resources/revert/.gitted/objects/83/f65df4606c4f8dbf8da43de25de1b7e4c03238 diff --git a/tests/resources/revert/.gitted/objects/87/59ad453cf01cf7daf14e2a668f8218f9a678eb b/deps/libgit2/tests/resources/revert/.gitted/objects/87/59ad453cf01cf7daf14e2a668f8218f9a678eb similarity index 100% rename from tests/resources/revert/.gitted/objects/87/59ad453cf01cf7daf14e2a668f8218f9a678eb rename to deps/libgit2/tests/resources/revert/.gitted/objects/87/59ad453cf01cf7daf14e2a668f8218f9a678eb diff --git a/tests/resources/revert/.gitted/objects/8f/d40e13fff575b63e86af87175e70fa7fb92f80 b/deps/libgit2/tests/resources/revert/.gitted/objects/8f/d40e13fff575b63e86af87175e70fa7fb92f80 similarity index 100% rename from tests/resources/revert/.gitted/objects/8f/d40e13fff575b63e86af87175e70fa7fb92f80 rename to deps/libgit2/tests/resources/revert/.gitted/objects/8f/d40e13fff575b63e86af87175e70fa7fb92f80 diff --git a/tests/resources/revert/.gitted/objects/97/f3574e92f1730d365fb9e00c10e3c507c1cfe9 b/deps/libgit2/tests/resources/revert/.gitted/objects/97/f3574e92f1730d365fb9e00c10e3c507c1cfe9 similarity index 100% rename from tests/resources/revert/.gitted/objects/97/f3574e92f1730d365fb9e00c10e3c507c1cfe9 rename to deps/libgit2/tests/resources/revert/.gitted/objects/97/f3574e92f1730d365fb9e00c10e3c507c1cfe9 diff --git a/tests/resources/revert/.gitted/objects/9a/95fd974e03c5b93828ceedd28755965b5d5c60 b/deps/libgit2/tests/resources/revert/.gitted/objects/9a/95fd974e03c5b93828ceedd28755965b5d5c60 similarity index 100% rename from tests/resources/revert/.gitted/objects/9a/95fd974e03c5b93828ceedd28755965b5d5c60 rename to deps/libgit2/tests/resources/revert/.gitted/objects/9a/95fd974e03c5b93828ceedd28755965b5d5c60 diff --git a/tests/resources/revert/.gitted/objects/a6/9f74efcb51634b88e04ea81273158a85257f41 b/deps/libgit2/tests/resources/revert/.gitted/objects/a6/9f74efcb51634b88e04ea81273158a85257f41 similarity index 100% rename from tests/resources/revert/.gitted/objects/a6/9f74efcb51634b88e04ea81273158a85257f41 rename to deps/libgit2/tests/resources/revert/.gitted/objects/a6/9f74efcb51634b88e04ea81273158a85257f41 diff --git a/tests/resources/revert/.gitted/objects/a8/c86221b400b836010567cc3593db6e96c1a83a b/deps/libgit2/tests/resources/revert/.gitted/objects/a8/c86221b400b836010567cc3593db6e96c1a83a similarity index 100% rename from tests/resources/revert/.gitted/objects/a8/c86221b400b836010567cc3593db6e96c1a83a rename to deps/libgit2/tests/resources/revert/.gitted/objects/a8/c86221b400b836010567cc3593db6e96c1a83a diff --git a/tests/resources/revert/.gitted/objects/ac/c4d33902092efeb3b714aa0b1007c329e2f2e6 b/deps/libgit2/tests/resources/revert/.gitted/objects/ac/c4d33902092efeb3b714aa0b1007c329e2f2e6 similarity index 100% rename from tests/resources/revert/.gitted/objects/ac/c4d33902092efeb3b714aa0b1007c329e2f2e6 rename to deps/libgit2/tests/resources/revert/.gitted/objects/ac/c4d33902092efeb3b714aa0b1007c329e2f2e6 diff --git a/tests/resources/revert/.gitted/objects/b6/9d88e177455579896e2be495046e2a51456a9a b/deps/libgit2/tests/resources/revert/.gitted/objects/b6/9d88e177455579896e2be495046e2a51456a9a similarity index 100% rename from tests/resources/revert/.gitted/objects/b6/9d88e177455579896e2be495046e2a51456a9a rename to deps/libgit2/tests/resources/revert/.gitted/objects/b6/9d88e177455579896e2be495046e2a51456a9a diff --git a/tests/resources/revert/.gitted/objects/b7/a55408832174c54708906a372a9be2ffe3649b b/deps/libgit2/tests/resources/revert/.gitted/objects/b7/a55408832174c54708906a372a9be2ffe3649b similarity index 100% rename from tests/resources/revert/.gitted/objects/b7/a55408832174c54708906a372a9be2ffe3649b rename to deps/libgit2/tests/resources/revert/.gitted/objects/b7/a55408832174c54708906a372a9be2ffe3649b diff --git a/tests/resources/revert/.gitted/objects/be/ead165e017269e8dc0dd6f01195726a2e1e01b b/deps/libgit2/tests/resources/revert/.gitted/objects/be/ead165e017269e8dc0dd6f01195726a2e1e01b similarity index 100% rename from tests/resources/revert/.gitted/objects/be/ead165e017269e8dc0dd6f01195726a2e1e01b rename to deps/libgit2/tests/resources/revert/.gitted/objects/be/ead165e017269e8dc0dd6f01195726a2e1e01b diff --git a/tests/resources/revert/.gitted/objects/ca/f99de3a49827117bb66721010eac461b06a80c b/deps/libgit2/tests/resources/revert/.gitted/objects/ca/f99de3a49827117bb66721010eac461b06a80c similarity index 100% rename from tests/resources/revert/.gitted/objects/ca/f99de3a49827117bb66721010eac461b06a80c rename to deps/libgit2/tests/resources/revert/.gitted/objects/ca/f99de3a49827117bb66721010eac461b06a80c diff --git a/tests/resources/revert/.gitted/objects/ce/f56612d71a6af8d8015691e4865f7fece905b5 b/deps/libgit2/tests/resources/revert/.gitted/objects/ce/f56612d71a6af8d8015691e4865f7fece905b5 similarity index 100% rename from tests/resources/revert/.gitted/objects/ce/f56612d71a6af8d8015691e4865f7fece905b5 rename to deps/libgit2/tests/resources/revert/.gitted/objects/ce/f56612d71a6af8d8015691e4865f7fece905b5 diff --git a/tests/resources/revert/.gitted/objects/d1/d403d22cbe24592d725f442835cf46fe60c8ac b/deps/libgit2/tests/resources/revert/.gitted/objects/d1/d403d22cbe24592d725f442835cf46fe60c8ac similarity index 100% rename from tests/resources/revert/.gitted/objects/d1/d403d22cbe24592d725f442835cf46fe60c8ac rename to deps/libgit2/tests/resources/revert/.gitted/objects/d1/d403d22cbe24592d725f442835cf46fe60c8ac diff --git a/tests/resources/revert/.gitted/objects/dd/9a159c89509e73fd37d6af99619994cf7dfc06 b/deps/libgit2/tests/resources/revert/.gitted/objects/dd/9a159c89509e73fd37d6af99619994cf7dfc06 similarity index 100% rename from tests/resources/revert/.gitted/objects/dd/9a159c89509e73fd37d6af99619994cf7dfc06 rename to deps/libgit2/tests/resources/revert/.gitted/objects/dd/9a159c89509e73fd37d6af99619994cf7dfc06 diff --git a/tests/resources/revert/.gitted/objects/de/03538407ed18914ff05657eeff70425c0f304d b/deps/libgit2/tests/resources/revert/.gitted/objects/de/03538407ed18914ff05657eeff70425c0f304d similarity index 100% rename from tests/resources/revert/.gitted/objects/de/03538407ed18914ff05657eeff70425c0f304d rename to deps/libgit2/tests/resources/revert/.gitted/objects/de/03538407ed18914ff05657eeff70425c0f304d diff --git a/tests/resources/revert/.gitted/objects/e3/4ef1afe54eb526fd92eec66084125f340f1d65 b/deps/libgit2/tests/resources/revert/.gitted/objects/e3/4ef1afe54eb526fd92eec66084125f340f1d65 similarity index 100% rename from tests/resources/revert/.gitted/objects/e3/4ef1afe54eb526fd92eec66084125f340f1d65 rename to deps/libgit2/tests/resources/revert/.gitted/objects/e3/4ef1afe54eb526fd92eec66084125f340f1d65 diff --git a/tests/resources/revert/.gitted/objects/ea/392a157085bc32daccd59aa1998fe2f5fb9fc0 b/deps/libgit2/tests/resources/revert/.gitted/objects/ea/392a157085bc32daccd59aa1998fe2f5fb9fc0 similarity index 100% rename from tests/resources/revert/.gitted/objects/ea/392a157085bc32daccd59aa1998fe2f5fb9fc0 rename to deps/libgit2/tests/resources/revert/.gitted/objects/ea/392a157085bc32daccd59aa1998fe2f5fb9fc0 diff --git a/tests/resources/revert/.gitted/objects/eb/b03002cee5d66c7732dd06241119fe72ab96a5 b/deps/libgit2/tests/resources/revert/.gitted/objects/eb/b03002cee5d66c7732dd06241119fe72ab96a5 similarity index 100% rename from tests/resources/revert/.gitted/objects/eb/b03002cee5d66c7732dd06241119fe72ab96a5 rename to deps/libgit2/tests/resources/revert/.gitted/objects/eb/b03002cee5d66c7732dd06241119fe72ab96a5 diff --git a/tests/resources/revert/.gitted/objects/ee/c6adcb2f3ceca0cadeccfe01b19382252ece9b b/deps/libgit2/tests/resources/revert/.gitted/objects/ee/c6adcb2f3ceca0cadeccfe01b19382252ece9b similarity index 100% rename from tests/resources/revert/.gitted/objects/ee/c6adcb2f3ceca0cadeccfe01b19382252ece9b rename to deps/libgit2/tests/resources/revert/.gitted/objects/ee/c6adcb2f3ceca0cadeccfe01b19382252ece9b diff --git a/tests/resources/revert/.gitted/objects/f4/e107c230d08a60fb419d19869f1f282b272d9c b/deps/libgit2/tests/resources/revert/.gitted/objects/f4/e107c230d08a60fb419d19869f1f282b272d9c similarity index 100% rename from tests/resources/revert/.gitted/objects/f4/e107c230d08a60fb419d19869f1f282b272d9c rename to deps/libgit2/tests/resources/revert/.gitted/objects/f4/e107c230d08a60fb419d19869f1f282b272d9c diff --git a/tests/resources/revert/.gitted/refs/heads/master b/deps/libgit2/tests/resources/revert/.gitted/refs/heads/master similarity index 100% rename from tests/resources/revert/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/revert/.gitted/refs/heads/master diff --git a/tests/resources/revert/.gitted/refs/heads/merges b/deps/libgit2/tests/resources/revert/.gitted/refs/heads/merges similarity index 100% rename from tests/resources/revert/.gitted/refs/heads/merges rename to deps/libgit2/tests/resources/revert/.gitted/refs/heads/merges diff --git a/tests/resources/revert/.gitted/refs/heads/merges-branch b/deps/libgit2/tests/resources/revert/.gitted/refs/heads/merges-branch similarity index 100% rename from tests/resources/revert/.gitted/refs/heads/merges-branch rename to deps/libgit2/tests/resources/revert/.gitted/refs/heads/merges-branch diff --git a/tests/resources/revert/.gitted/refs/heads/reverted-branch b/deps/libgit2/tests/resources/revert/.gitted/refs/heads/reverted-branch similarity index 100% rename from tests/resources/revert/.gitted/refs/heads/reverted-branch rename to deps/libgit2/tests/resources/revert/.gitted/refs/heads/reverted-branch diff --git a/tests/resources/revert/.gitted/refs/heads/two b/deps/libgit2/tests/resources/revert/.gitted/refs/heads/two similarity index 100% rename from tests/resources/revert/.gitted/refs/heads/two rename to deps/libgit2/tests/resources/revert/.gitted/refs/heads/two diff --git a/tests/resources/revert/file1.txt b/deps/libgit2/tests/resources/revert/file1.txt similarity index 100% rename from tests/resources/revert/file1.txt rename to deps/libgit2/tests/resources/revert/file1.txt diff --git a/tests/resources/revert/file2.txt b/deps/libgit2/tests/resources/revert/file2.txt similarity index 100% rename from tests/resources/revert/file2.txt rename to deps/libgit2/tests/resources/revert/file2.txt diff --git a/tests/resources/revert/file3.txt b/deps/libgit2/tests/resources/revert/file3.txt similarity index 100% rename from tests/resources/revert/file3.txt rename to deps/libgit2/tests/resources/revert/file3.txt diff --git a/tests/resources/revert/file6.txt b/deps/libgit2/tests/resources/revert/file6.txt similarity index 100% rename from tests/resources/revert/file6.txt rename to deps/libgit2/tests/resources/revert/file6.txt diff --git a/tests/resources/shallow.git/HEAD b/deps/libgit2/tests/resources/shallow.git/HEAD similarity index 100% rename from tests/resources/shallow.git/HEAD rename to deps/libgit2/tests/resources/shallow.git/HEAD diff --git a/tests/resources/shallow.git/config b/deps/libgit2/tests/resources/shallow.git/config similarity index 100% rename from tests/resources/shallow.git/config rename to deps/libgit2/tests/resources/shallow.git/config diff --git a/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.idx b/deps/libgit2/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.idx similarity index 100% rename from tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.idx rename to deps/libgit2/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.idx diff --git a/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.pack b/deps/libgit2/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.pack similarity index 100% rename from tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.pack rename to deps/libgit2/tests/resources/shallow.git/objects/pack/pack-706e49b161700946489570d96153e5be4dc31ad4.pack diff --git a/tests/resources/shallow.git/packed-refs b/deps/libgit2/tests/resources/shallow.git/packed-refs similarity index 100% rename from tests/resources/shallow.git/packed-refs rename to deps/libgit2/tests/resources/shallow.git/packed-refs diff --git a/tests/resources/shallow.git/refs/.gitkeep b/deps/libgit2/tests/resources/shallow.git/refs/.gitkeep similarity index 100% rename from tests/resources/shallow.git/refs/.gitkeep rename to deps/libgit2/tests/resources/shallow.git/refs/.gitkeep diff --git a/tests/resources/shallow.git/shallow b/deps/libgit2/tests/resources/shallow.git/shallow similarity index 100% rename from tests/resources/shallow.git/shallow rename to deps/libgit2/tests/resources/shallow.git/shallow diff --git a/tests/resources/short_tag.git/HEAD b/deps/libgit2/tests/resources/short_tag.git/HEAD similarity index 100% rename from tests/resources/short_tag.git/HEAD rename to deps/libgit2/tests/resources/short_tag.git/HEAD diff --git a/tests/resources/short_tag.git/config b/deps/libgit2/tests/resources/short_tag.git/config similarity index 100% rename from tests/resources/short_tag.git/config rename to deps/libgit2/tests/resources/short_tag.git/config diff --git a/tests/resources/short_tag.git/index b/deps/libgit2/tests/resources/short_tag.git/index similarity index 100% rename from tests/resources/short_tag.git/index rename to deps/libgit2/tests/resources/short_tag.git/index diff --git a/tests/resources/short_tag.git/objects/4a/5ed60bafcf4638b7c8356bd4ce1916bfede93c b/deps/libgit2/tests/resources/short_tag.git/objects/4a/5ed60bafcf4638b7c8356bd4ce1916bfede93c similarity index 100% rename from tests/resources/short_tag.git/objects/4a/5ed60bafcf4638b7c8356bd4ce1916bfede93c rename to deps/libgit2/tests/resources/short_tag.git/objects/4a/5ed60bafcf4638b7c8356bd4ce1916bfede93c diff --git a/tests/resources/short_tag.git/objects/4d/5fcadc293a348e88f777dc0920f11e7d71441c b/deps/libgit2/tests/resources/short_tag.git/objects/4d/5fcadc293a348e88f777dc0920f11e7d71441c similarity index 100% rename from tests/resources/short_tag.git/objects/4d/5fcadc293a348e88f777dc0920f11e7d71441c rename to deps/libgit2/tests/resources/short_tag.git/objects/4d/5fcadc293a348e88f777dc0920f11e7d71441c diff --git a/tests/resources/short_tag.git/objects/5d/a7760512a953e3c7c4e47e4392c7a4338fb729 b/deps/libgit2/tests/resources/short_tag.git/objects/5d/a7760512a953e3c7c4e47e4392c7a4338fb729 similarity index 100% rename from tests/resources/short_tag.git/objects/5d/a7760512a953e3c7c4e47e4392c7a4338fb729 rename to deps/libgit2/tests/resources/short_tag.git/objects/5d/a7760512a953e3c7c4e47e4392c7a4338fb729 diff --git a/tests/resources/short_tag.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/short_tag.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/short_tag.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/short_tag.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/short_tag.git/packed-refs b/deps/libgit2/tests/resources/short_tag.git/packed-refs similarity index 100% rename from tests/resources/short_tag.git/packed-refs rename to deps/libgit2/tests/resources/short_tag.git/packed-refs diff --git a/tests/resources/short_tag.git/refs/heads/master b/deps/libgit2/tests/resources/short_tag.git/refs/heads/master similarity index 100% rename from tests/resources/short_tag.git/refs/heads/master rename to deps/libgit2/tests/resources/short_tag.git/refs/heads/master diff --git a/tests/resources/status/.gitted/COMMIT_EDITMSG b/deps/libgit2/tests/resources/status/.gitted/COMMIT_EDITMSG similarity index 100% rename from tests/resources/status/.gitted/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/status/.gitted/COMMIT_EDITMSG diff --git a/tests/resources/status/.gitted/HEAD b/deps/libgit2/tests/resources/status/.gitted/HEAD similarity index 100% rename from tests/resources/status/.gitted/HEAD rename to deps/libgit2/tests/resources/status/.gitted/HEAD diff --git a/tests/resources/status/.gitted/ORIG_HEAD b/deps/libgit2/tests/resources/status/.gitted/ORIG_HEAD similarity index 100% rename from tests/resources/status/.gitted/ORIG_HEAD rename to deps/libgit2/tests/resources/status/.gitted/ORIG_HEAD diff --git a/tests/resources/status/.gitted/config b/deps/libgit2/tests/resources/status/.gitted/config similarity index 100% rename from tests/resources/status/.gitted/config rename to deps/libgit2/tests/resources/status/.gitted/config diff --git a/tests/resources/status/.gitted/description b/deps/libgit2/tests/resources/status/.gitted/description similarity index 100% rename from tests/resources/status/.gitted/description rename to deps/libgit2/tests/resources/status/.gitted/description diff --git a/tests/resources/status/.gitted/index b/deps/libgit2/tests/resources/status/.gitted/index similarity index 100% rename from tests/resources/status/.gitted/index rename to deps/libgit2/tests/resources/status/.gitted/index diff --git a/tests/resources/status/.gitted/info/exclude b/deps/libgit2/tests/resources/status/.gitted/info/exclude similarity index 100% rename from tests/resources/status/.gitted/info/exclude rename to deps/libgit2/tests/resources/status/.gitted/info/exclude diff --git a/tests/resources/status/.gitted/logs/HEAD b/deps/libgit2/tests/resources/status/.gitted/logs/HEAD similarity index 100% rename from tests/resources/status/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/status/.gitted/logs/HEAD diff --git a/tests/resources/status/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/status/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/status/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/status/.gitted/logs/refs/heads/master diff --git a/tests/resources/status/.gitted/objects/00/17bd4ab1ec30440b17bae1680cff124ab5f1f6 b/deps/libgit2/tests/resources/status/.gitted/objects/00/17bd4ab1ec30440b17bae1680cff124ab5f1f6 similarity index 100% rename from tests/resources/status/.gitted/objects/00/17bd4ab1ec30440b17bae1680cff124ab5f1f6 rename to deps/libgit2/tests/resources/status/.gitted/objects/00/17bd4ab1ec30440b17bae1680cff124ab5f1f6 diff --git a/tests/resources/status/.gitted/objects/06/1d42a44cacde5726057b67558821d95db96f19 b/deps/libgit2/tests/resources/status/.gitted/objects/06/1d42a44cacde5726057b67558821d95db96f19 similarity index 100% rename from tests/resources/status/.gitted/objects/06/1d42a44cacde5726057b67558821d95db96f19 rename to deps/libgit2/tests/resources/status/.gitted/objects/06/1d42a44cacde5726057b67558821d95db96f19 diff --git a/tests/resources/status/.gitted/objects/18/88c805345ba265b0ee9449b8877b6064592058 b/deps/libgit2/tests/resources/status/.gitted/objects/18/88c805345ba265b0ee9449b8877b6064592058 similarity index 100% rename from tests/resources/status/.gitted/objects/18/88c805345ba265b0ee9449b8877b6064592058 rename to deps/libgit2/tests/resources/status/.gitted/objects/18/88c805345ba265b0ee9449b8877b6064592058 diff --git a/tests/resources/status/.gitted/objects/19/d9cc8584ac2c7dcf57d2680375e80f099dc481 b/deps/libgit2/tests/resources/status/.gitted/objects/19/d9cc8584ac2c7dcf57d2680375e80f099dc481 similarity index 100% rename from tests/resources/status/.gitted/objects/19/d9cc8584ac2c7dcf57d2680375e80f099dc481 rename to deps/libgit2/tests/resources/status/.gitted/objects/19/d9cc8584ac2c7dcf57d2680375e80f099dc481 diff --git a/tests/resources/status/.gitted/objects/26/a125ee1bfc5df1e1b2e9441bbe63c8a7ae989f b/deps/libgit2/tests/resources/status/.gitted/objects/26/a125ee1bfc5df1e1b2e9441bbe63c8a7ae989f similarity index 100% rename from tests/resources/status/.gitted/objects/26/a125ee1bfc5df1e1b2e9441bbe63c8a7ae989f rename to deps/libgit2/tests/resources/status/.gitted/objects/26/a125ee1bfc5df1e1b2e9441bbe63c8a7ae989f diff --git a/tests/resources/status/.gitted/objects/32/504b727382542f9f089e24fddac5e78533e96c b/deps/libgit2/tests/resources/status/.gitted/objects/32/504b727382542f9f089e24fddac5e78533e96c similarity index 100% rename from tests/resources/status/.gitted/objects/32/504b727382542f9f089e24fddac5e78533e96c rename to deps/libgit2/tests/resources/status/.gitted/objects/32/504b727382542f9f089e24fddac5e78533e96c diff --git a/tests/resources/status/.gitted/objects/37/fcb02ccc1a85d1941e7f106d52dc3702dcf0d0 b/deps/libgit2/tests/resources/status/.gitted/objects/37/fcb02ccc1a85d1941e7f106d52dc3702dcf0d0 similarity index 100% rename from tests/resources/status/.gitted/objects/37/fcb02ccc1a85d1941e7f106d52dc3702dcf0d0 rename to deps/libgit2/tests/resources/status/.gitted/objects/37/fcb02ccc1a85d1941e7f106d52dc3702dcf0d0 diff --git a/tests/resources/status/.gitted/objects/45/2e4244b5d083ddf0460acf1ecc74db9dcfa11a b/deps/libgit2/tests/resources/status/.gitted/objects/45/2e4244b5d083ddf0460acf1ecc74db9dcfa11a similarity index 100% rename from tests/resources/status/.gitted/objects/45/2e4244b5d083ddf0460acf1ecc74db9dcfa11a rename to deps/libgit2/tests/resources/status/.gitted/objects/45/2e4244b5d083ddf0460acf1ecc74db9dcfa11a diff --git a/tests/resources/status/.gitted/objects/52/9a16e8e762d4acb7b9636ff540a00831f9155a b/deps/libgit2/tests/resources/status/.gitted/objects/52/9a16e8e762d4acb7b9636ff540a00831f9155a similarity index 100% rename from tests/resources/status/.gitted/objects/52/9a16e8e762d4acb7b9636ff540a00831f9155a rename to deps/libgit2/tests/resources/status/.gitted/objects/52/9a16e8e762d4acb7b9636ff540a00831f9155a diff --git a/tests/resources/status/.gitted/objects/53/ace0d1cc1145a5f4fe4f78a186a60263190733 b/deps/libgit2/tests/resources/status/.gitted/objects/53/ace0d1cc1145a5f4fe4f78a186a60263190733 similarity index 100% rename from tests/resources/status/.gitted/objects/53/ace0d1cc1145a5f4fe4f78a186a60263190733 rename to deps/libgit2/tests/resources/status/.gitted/objects/53/ace0d1cc1145a5f4fe4f78a186a60263190733 diff --git a/tests/resources/status/.gitted/objects/54/52d32f1dd538eb0405e8a83cc185f79e25e80f b/deps/libgit2/tests/resources/status/.gitted/objects/54/52d32f1dd538eb0405e8a83cc185f79e25e80f similarity index 100% rename from tests/resources/status/.gitted/objects/54/52d32f1dd538eb0405e8a83cc185f79e25e80f rename to deps/libgit2/tests/resources/status/.gitted/objects/54/52d32f1dd538eb0405e8a83cc185f79e25e80f diff --git a/tests/resources/status/.gitted/objects/55/d316c9ba708999f1918e9677d01dfcae69c6b9 b/deps/libgit2/tests/resources/status/.gitted/objects/55/d316c9ba708999f1918e9677d01dfcae69c6b9 similarity index 100% rename from tests/resources/status/.gitted/objects/55/d316c9ba708999f1918e9677d01dfcae69c6b9 rename to deps/libgit2/tests/resources/status/.gitted/objects/55/d316c9ba708999f1918e9677d01dfcae69c6b9 diff --git a/tests/resources/status/.gitted/objects/70/bd9443ada07063e7fbf0b3ff5c13f7494d89c2 b/deps/libgit2/tests/resources/status/.gitted/objects/70/bd9443ada07063e7fbf0b3ff5c13f7494d89c2 similarity index 100% rename from tests/resources/status/.gitted/objects/70/bd9443ada07063e7fbf0b3ff5c13f7494d89c2 rename to deps/libgit2/tests/resources/status/.gitted/objects/70/bd9443ada07063e7fbf0b3ff5c13f7494d89c2 diff --git a/tests/resources/status/.gitted/objects/73/5b6a258cd196a8f7c9428419b02c1dca93fd75 b/deps/libgit2/tests/resources/status/.gitted/objects/73/5b6a258cd196a8f7c9428419b02c1dca93fd75 similarity index 100% rename from tests/resources/status/.gitted/objects/73/5b6a258cd196a8f7c9428419b02c1dca93fd75 rename to deps/libgit2/tests/resources/status/.gitted/objects/73/5b6a258cd196a8f7c9428419b02c1dca93fd75 diff --git a/tests/resources/status/.gitted/objects/75/6e27627e67bfbc048d01ece5819c6de733d7ea b/deps/libgit2/tests/resources/status/.gitted/objects/75/6e27627e67bfbc048d01ece5819c6de733d7ea similarity index 100% rename from tests/resources/status/.gitted/objects/75/6e27627e67bfbc048d01ece5819c6de733d7ea rename to deps/libgit2/tests/resources/status/.gitted/objects/75/6e27627e67bfbc048d01ece5819c6de733d7ea diff --git a/tests/resources/status/.gitted/objects/90/6ee7711f4f4928ddcb2a5f8fbc500deba0d2a8 b/deps/libgit2/tests/resources/status/.gitted/objects/90/6ee7711f4f4928ddcb2a5f8fbc500deba0d2a8 similarity index 100% rename from tests/resources/status/.gitted/objects/90/6ee7711f4f4928ddcb2a5f8fbc500deba0d2a8 rename to deps/libgit2/tests/resources/status/.gitted/objects/90/6ee7711f4f4928ddcb2a5f8fbc500deba0d2a8 diff --git a/tests/resources/status/.gitted/objects/90/b8c29d8ba39434d1c63e1b093daaa26e5bd972 b/deps/libgit2/tests/resources/status/.gitted/objects/90/b8c29d8ba39434d1c63e1b093daaa26e5bd972 similarity index 100% rename from tests/resources/status/.gitted/objects/90/b8c29d8ba39434d1c63e1b093daaa26e5bd972 rename to deps/libgit2/tests/resources/status/.gitted/objects/90/b8c29d8ba39434d1c63e1b093daaa26e5bd972 diff --git a/tests/resources/status/.gitted/objects/9c/2e02cdffa8d73e6c189074594477a6baf87960 b/deps/libgit2/tests/resources/status/.gitted/objects/9c/2e02cdffa8d73e6c189074594477a6baf87960 similarity index 100% rename from tests/resources/status/.gitted/objects/9c/2e02cdffa8d73e6c189074594477a6baf87960 rename to deps/libgit2/tests/resources/status/.gitted/objects/9c/2e02cdffa8d73e6c189074594477a6baf87960 diff --git a/tests/resources/status/.gitted/objects/a0/de7e0ac200c489c41c59dfa910154a70264e6e b/deps/libgit2/tests/resources/status/.gitted/objects/a0/de7e0ac200c489c41c59dfa910154a70264e6e similarity index 100% rename from tests/resources/status/.gitted/objects/a0/de7e0ac200c489c41c59dfa910154a70264e6e rename to deps/libgit2/tests/resources/status/.gitted/objects/a0/de7e0ac200c489c41c59dfa910154a70264e6e diff --git a/tests/resources/status/.gitted/objects/a6/191982709b746d5650e93c2acf34ef74e11504 b/deps/libgit2/tests/resources/status/.gitted/objects/a6/191982709b746d5650e93c2acf34ef74e11504 similarity index 100% rename from tests/resources/status/.gitted/objects/a6/191982709b746d5650e93c2acf34ef74e11504 rename to deps/libgit2/tests/resources/status/.gitted/objects/a6/191982709b746d5650e93c2acf34ef74e11504 diff --git a/tests/resources/status/.gitted/objects/a6/be623522ce87a1d862128ac42672604f7b468b b/deps/libgit2/tests/resources/status/.gitted/objects/a6/be623522ce87a1d862128ac42672604f7b468b similarity index 100% rename from tests/resources/status/.gitted/objects/a6/be623522ce87a1d862128ac42672604f7b468b rename to deps/libgit2/tests/resources/status/.gitted/objects/a6/be623522ce87a1d862128ac42672604f7b468b diff --git a/tests/resources/status/.gitted/objects/aa/27a641456848200fdb7f7c99ba36f8a0952877 b/deps/libgit2/tests/resources/status/.gitted/objects/aa/27a641456848200fdb7f7c99ba36f8a0952877 similarity index 100% rename from tests/resources/status/.gitted/objects/aa/27a641456848200fdb7f7c99ba36f8a0952877 rename to deps/libgit2/tests/resources/status/.gitted/objects/aa/27a641456848200fdb7f7c99ba36f8a0952877 diff --git a/tests/resources/status/.gitted/objects/da/bc8af9bd6e9f5bbe96a176f1a24baf3d1f8916 b/deps/libgit2/tests/resources/status/.gitted/objects/da/bc8af9bd6e9f5bbe96a176f1a24baf3d1f8916 similarity index 100% rename from tests/resources/status/.gitted/objects/da/bc8af9bd6e9f5bbe96a176f1a24baf3d1f8916 rename to deps/libgit2/tests/resources/status/.gitted/objects/da/bc8af9bd6e9f5bbe96a176f1a24baf3d1f8916 diff --git a/tests/resources/status/.gitted/objects/e8/ee89e15bbe9b20137715232387b3de5b28972e b/deps/libgit2/tests/resources/status/.gitted/objects/e8/ee89e15bbe9b20137715232387b3de5b28972e similarity index 100% rename from tests/resources/status/.gitted/objects/e8/ee89e15bbe9b20137715232387b3de5b28972e rename to deps/libgit2/tests/resources/status/.gitted/objects/e8/ee89e15bbe9b20137715232387b3de5b28972e diff --git a/tests/resources/status/.gitted/objects/e9/b9107f290627c04d097733a10055af941f6bca b/deps/libgit2/tests/resources/status/.gitted/objects/e9/b9107f290627c04d097733a10055af941f6bca similarity index 100% rename from tests/resources/status/.gitted/objects/e9/b9107f290627c04d097733a10055af941f6bca rename to deps/libgit2/tests/resources/status/.gitted/objects/e9/b9107f290627c04d097733a10055af941f6bca diff --git a/tests/resources/status/.gitted/objects/ed/062903b8f6f3dccb2fa81117ba6590944ef9bd b/deps/libgit2/tests/resources/status/.gitted/objects/ed/062903b8f6f3dccb2fa81117ba6590944ef9bd similarity index 100% rename from tests/resources/status/.gitted/objects/ed/062903b8f6f3dccb2fa81117ba6590944ef9bd rename to deps/libgit2/tests/resources/status/.gitted/objects/ed/062903b8f6f3dccb2fa81117ba6590944ef9bd diff --git a/tests/resources/status/.gitted/refs/heads/master b/deps/libgit2/tests/resources/status/.gitted/refs/heads/master similarity index 100% rename from tests/resources/status/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/status/.gitted/refs/heads/master diff --git a/tests/resources/status/current_file b/deps/libgit2/tests/resources/status/current_file similarity index 100% rename from tests/resources/status/current_file rename to deps/libgit2/tests/resources/status/current_file diff --git a/tests/resources/status/ignored_file b/deps/libgit2/tests/resources/status/ignored_file similarity index 100% rename from tests/resources/status/ignored_file rename to deps/libgit2/tests/resources/status/ignored_file diff --git a/tests/resources/status/modified_file b/deps/libgit2/tests/resources/status/modified_file similarity index 100% rename from tests/resources/status/modified_file rename to deps/libgit2/tests/resources/status/modified_file diff --git a/tests/resources/status/new_file b/deps/libgit2/tests/resources/status/new_file similarity index 100% rename from tests/resources/status/new_file rename to deps/libgit2/tests/resources/status/new_file diff --git a/tests/resources/status/staged_changes b/deps/libgit2/tests/resources/status/staged_changes similarity index 100% rename from tests/resources/status/staged_changes rename to deps/libgit2/tests/resources/status/staged_changes diff --git a/tests/resources/status/staged_changes_modified_file b/deps/libgit2/tests/resources/status/staged_changes_modified_file similarity index 100% rename from tests/resources/status/staged_changes_modified_file rename to deps/libgit2/tests/resources/status/staged_changes_modified_file diff --git a/tests/resources/status/staged_delete_modified_file b/deps/libgit2/tests/resources/status/staged_delete_modified_file similarity index 100% rename from tests/resources/status/staged_delete_modified_file rename to deps/libgit2/tests/resources/status/staged_delete_modified_file diff --git a/tests/resources/status/staged_new_file b/deps/libgit2/tests/resources/status/staged_new_file similarity index 100% rename from tests/resources/status/staged_new_file rename to deps/libgit2/tests/resources/status/staged_new_file diff --git a/tests/resources/status/staged_new_file_modified_file b/deps/libgit2/tests/resources/status/staged_new_file_modified_file similarity index 100% rename from tests/resources/status/staged_new_file_modified_file rename to deps/libgit2/tests/resources/status/staged_new_file_modified_file diff --git a/tests/resources/status/subdir.txt b/deps/libgit2/tests/resources/status/subdir.txt similarity index 100% rename from tests/resources/status/subdir.txt rename to deps/libgit2/tests/resources/status/subdir.txt diff --git a/tests/resources/status/subdir/current_file b/deps/libgit2/tests/resources/status/subdir/current_file similarity index 100% rename from tests/resources/status/subdir/current_file rename to deps/libgit2/tests/resources/status/subdir/current_file diff --git a/tests/resources/status/subdir/modified_file b/deps/libgit2/tests/resources/status/subdir/modified_file similarity index 100% rename from tests/resources/status/subdir/modified_file rename to deps/libgit2/tests/resources/status/subdir/modified_file diff --git a/tests/resources/status/subdir/new_file b/deps/libgit2/tests/resources/status/subdir/new_file similarity index 100% rename from tests/resources/status/subdir/new_file rename to deps/libgit2/tests/resources/status/subdir/new_file diff --git "a/tests/resources/status/\350\277\231" "b/deps/libgit2/tests/resources/status/\350\277\231" similarity index 100% rename from "tests/resources/status/\350\277\231" rename to "deps/libgit2/tests/resources/status/\350\277\231" diff --git a/tests/resources/submod2/.gitted/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/HEAD diff --git a/tests/resources/submod2/.gitted/config b/deps/libgit2/tests/resources/submod2/.gitted/config similarity index 100% rename from tests/resources/submod2/.gitted/config rename to deps/libgit2/tests/resources/submod2/.gitted/config diff --git a/tests/resources/submod2/.gitted/description b/deps/libgit2/tests/resources/submod2/.gitted/description similarity index 100% rename from tests/resources/submod2/.gitted/description rename to deps/libgit2/tests/resources/submod2/.gitted/description diff --git a/tests/resources/submod2/.gitted/index b/deps/libgit2/tests/resources/submod2/.gitted/index similarity index 100% rename from tests/resources/submod2/.gitted/index rename to deps/libgit2/tests/resources/submod2/.gitted/index diff --git a/tests/resources/submod2/.gitted/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/info/exclude diff --git a/tests/resources/submod2/.gitted/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/logs/HEAD diff --git a/tests/resources/submod2/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/config diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/description diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/index diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_added_and_uncommited/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/config diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/description diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/index diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_file/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_file/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/COMMIT_EDITMSG b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/COMMIT_EDITMSG similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/COMMIT_EDITMSG rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/COMMIT_EDITMSG diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/config diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/description diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/index diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/3d/9386c507f6b093471a3e324085657a3c2b4247 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/3d/9386c507f6b093471a3e324085657a3c2b4247 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/3d/9386c507f6b093471a3e324085657a3c2b4247 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/3d/9386c507f6b093471a3e324085657a3c2b4247 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/77/fb0ed3e58568d6ad362c78de08ab8649d76e29 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/77/fb0ed3e58568d6ad362c78de08ab8649d76e29 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/77/fb0ed3e58568d6ad362c78de08ab8649d76e29 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/77/fb0ed3e58568d6ad362c78de08ab8649d76e29 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/8e/b1e637ed9fc8e5454fa20d38f809091f9395f4 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/8e/b1e637ed9fc8e5454fa20d38f809091f9395f4 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/8e/b1e637ed9fc8e5454fa20d38f809091f9395f4 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/8e/b1e637ed9fc8e5454fa20d38f809091f9395f4 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_head/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_head/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/config diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/description diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/index diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/a0/2d31770687965547ab7a04cee199b29ee458d6 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/a0/2d31770687965547ab7a04cee199b29ee458d6 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/a0/2d31770687965547ab7a04cee199b29ee458d6 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/a0/2d31770687965547ab7a04cee199b29ee458d6 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_index/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_index/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/config diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/description diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/index diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_changed_untracked_file/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/config diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/description diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/index diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_missing_commits/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/config b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/config similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/config rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/config diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/description b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/description similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/description rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/description diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/index b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/index similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/index rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/index diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/info/exclude b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/info/exclude similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/info/exclude rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/info/exclude diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/logs/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/packed-refs b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/packed-refs similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/packed-refs rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/packed-refs diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/heads/master diff --git a/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submod2/.gitted/modules/sm_unchanged/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submod2/.gitted/modules/sm_unchanged/refs/remotes/origin/HEAD diff --git a/tests/resources/submod2/.gitted/objects/09/460e5b6cbcb05a3e404593c32a3aa7221eca0e b/deps/libgit2/tests/resources/submod2/.gitted/objects/09/460e5b6cbcb05a3e404593c32a3aa7221eca0e similarity index 100% rename from tests/resources/submod2/.gitted/objects/09/460e5b6cbcb05a3e404593c32a3aa7221eca0e rename to deps/libgit2/tests/resources/submod2/.gitted/objects/09/460e5b6cbcb05a3e404593c32a3aa7221eca0e diff --git a/tests/resources/submod2/.gitted/objects/14/fe9ccf104058df25e0a08361c4494e167ef243 b/deps/libgit2/tests/resources/submod2/.gitted/objects/14/fe9ccf104058df25e0a08361c4494e167ef243 similarity index 100% rename from tests/resources/submod2/.gitted/objects/14/fe9ccf104058df25e0a08361c4494e167ef243 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/14/fe9ccf104058df25e0a08361c4494e167ef243 diff --git a/tests/resources/submod2/.gitted/objects/22/ce3e0311dda73a5992d54a4a595518d3876ea7 b/deps/libgit2/tests/resources/submod2/.gitted/objects/22/ce3e0311dda73a5992d54a4a595518d3876ea7 similarity index 100% rename from tests/resources/submod2/.gitted/objects/22/ce3e0311dda73a5992d54a4a595518d3876ea7 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/22/ce3e0311dda73a5992d54a4a595518d3876ea7 diff --git a/tests/resources/submod2/.gitted/objects/25/5546424b0efb847b1bfc91dbf7348b277f8970 b/deps/libgit2/tests/resources/submod2/.gitted/objects/25/5546424b0efb847b1bfc91dbf7348b277f8970 similarity index 100% rename from tests/resources/submod2/.gitted/objects/25/5546424b0efb847b1bfc91dbf7348b277f8970 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/25/5546424b0efb847b1bfc91dbf7348b277f8970 diff --git a/tests/resources/submod2/.gitted/objects/2a/30f1e6f94b20917005a21273f65b406d0f8bad b/deps/libgit2/tests/resources/submod2/.gitted/objects/2a/30f1e6f94b20917005a21273f65b406d0f8bad similarity index 100% rename from tests/resources/submod2/.gitted/objects/2a/30f1e6f94b20917005a21273f65b406d0f8bad rename to deps/libgit2/tests/resources/submod2/.gitted/objects/2a/30f1e6f94b20917005a21273f65b406d0f8bad diff --git a/tests/resources/submod2/.gitted/objects/42/cfb95cd01bf9225b659b5ee3edcc78e8eeb478 b/deps/libgit2/tests/resources/submod2/.gitted/objects/42/cfb95cd01bf9225b659b5ee3edcc78e8eeb478 similarity index 100% rename from tests/resources/submod2/.gitted/objects/42/cfb95cd01bf9225b659b5ee3edcc78e8eeb478 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/42/cfb95cd01bf9225b659b5ee3edcc78e8eeb478 diff --git a/tests/resources/submod2/.gitted/objects/57/958699c2dc394f81cfc76950e9c3ac3025c398 b/deps/libgit2/tests/resources/submod2/.gitted/objects/57/958699c2dc394f81cfc76950e9c3ac3025c398 similarity index 100% rename from tests/resources/submod2/.gitted/objects/57/958699c2dc394f81cfc76950e9c3ac3025c398 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/57/958699c2dc394f81cfc76950e9c3ac3025c398 diff --git a/tests/resources/submod2/.gitted/objects/59/01da4f1c67756eeadc5121d206bec2431f253b b/deps/libgit2/tests/resources/submod2/.gitted/objects/59/01da4f1c67756eeadc5121d206bec2431f253b similarity index 100% rename from tests/resources/submod2/.gitted/objects/59/01da4f1c67756eeadc5121d206bec2431f253b rename to deps/libgit2/tests/resources/submod2/.gitted/objects/59/01da4f1c67756eeadc5121d206bec2431f253b diff --git a/tests/resources/submod2/.gitted/objects/60/7d96653d4d0a4f733107f7890c2e67b55b620d b/deps/libgit2/tests/resources/submod2/.gitted/objects/60/7d96653d4d0a4f733107f7890c2e67b55b620d similarity index 100% rename from tests/resources/submod2/.gitted/objects/60/7d96653d4d0a4f733107f7890c2e67b55b620d rename to deps/libgit2/tests/resources/submod2/.gitted/objects/60/7d96653d4d0a4f733107f7890c2e67b55b620d diff --git a/tests/resources/submod2/.gitted/objects/74/84482eb8db738cafa696993664607500a3f2b9 b/deps/libgit2/tests/resources/submod2/.gitted/objects/74/84482eb8db738cafa696993664607500a3f2b9 similarity index 100% rename from tests/resources/submod2/.gitted/objects/74/84482eb8db738cafa696993664607500a3f2b9 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/74/84482eb8db738cafa696993664607500a3f2b9 diff --git a/tests/resources/submod2/.gitted/objects/7b/a4c5c3561daa5ab1a86215cfb0587e96d404d6 b/deps/libgit2/tests/resources/submod2/.gitted/objects/7b/a4c5c3561daa5ab1a86215cfb0587e96d404d6 similarity index 100% rename from tests/resources/submod2/.gitted/objects/7b/a4c5c3561daa5ab1a86215cfb0587e96d404d6 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/7b/a4c5c3561daa5ab1a86215cfb0587e96d404d6 diff --git a/tests/resources/submod2/.gitted/objects/87/3585b94bdeabccea991ea5e3ec1a277895b698 b/deps/libgit2/tests/resources/submod2/.gitted/objects/87/3585b94bdeabccea991ea5e3ec1a277895b698 similarity index 100% rename from tests/resources/submod2/.gitted/objects/87/3585b94bdeabccea991ea5e3ec1a277895b698 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/87/3585b94bdeabccea991ea5e3ec1a277895b698 diff --git a/tests/resources/submod2/.gitted/objects/97/4cf7c73de336b0c4e019f918f3cee367d72e84 b/deps/libgit2/tests/resources/submod2/.gitted/objects/97/4cf7c73de336b0c4e019f918f3cee367d72e84 similarity index 100% rename from tests/resources/submod2/.gitted/objects/97/4cf7c73de336b0c4e019f918f3cee367d72e84 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/97/4cf7c73de336b0c4e019f918f3cee367d72e84 diff --git a/tests/resources/submod2/.gitted/objects/9d/bc299bc013ea253583b40bf327b5a6e4037b89 b/deps/libgit2/tests/resources/submod2/.gitted/objects/9d/bc299bc013ea253583b40bf327b5a6e4037b89 similarity index 100% rename from tests/resources/submod2/.gitted/objects/9d/bc299bc013ea253583b40bf327b5a6e4037b89 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/9d/bc299bc013ea253583b40bf327b5a6e4037b89 diff --git a/tests/resources/submod2/.gitted/objects/a9/104bf89e911387244ef499413960ba472066d9 b/deps/libgit2/tests/resources/submod2/.gitted/objects/a9/104bf89e911387244ef499413960ba472066d9 similarity index 100% rename from tests/resources/submod2/.gitted/objects/a9/104bf89e911387244ef499413960ba472066d9 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/a9/104bf89e911387244ef499413960ba472066d9 diff --git a/tests/resources/submod2/.gitted/objects/b6/14088620bbdc1d29549d223ceba0f4419fd4cb b/deps/libgit2/tests/resources/submod2/.gitted/objects/b6/14088620bbdc1d29549d223ceba0f4419fd4cb similarity index 100% rename from tests/resources/submod2/.gitted/objects/b6/14088620bbdc1d29549d223ceba0f4419fd4cb rename to deps/libgit2/tests/resources/submod2/.gitted/objects/b6/14088620bbdc1d29549d223ceba0f4419fd4cb diff --git a/tests/resources/submod2/.gitted/objects/d4/07f19e50c1da1ff584beafe0d6dac7237c5d06 b/deps/libgit2/tests/resources/submod2/.gitted/objects/d4/07f19e50c1da1ff584beafe0d6dac7237c5d06 similarity index 100% rename from tests/resources/submod2/.gitted/objects/d4/07f19e50c1da1ff584beafe0d6dac7237c5d06 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/d4/07f19e50c1da1ff584beafe0d6dac7237c5d06 diff --git a/tests/resources/submod2/.gitted/objects/d9/3e95571d92cceb5de28c205f1d5f3cc8b88bc8 b/deps/libgit2/tests/resources/submod2/.gitted/objects/d9/3e95571d92cceb5de28c205f1d5f3cc8b88bc8 similarity index 100% rename from tests/resources/submod2/.gitted/objects/d9/3e95571d92cceb5de28c205f1d5f3cc8b88bc8 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/d9/3e95571d92cceb5de28c205f1d5f3cc8b88bc8 diff --git a/tests/resources/submod2/.gitted/objects/e3/b83bf274ee065eee48734cf8c6dfaf5e81471c b/deps/libgit2/tests/resources/submod2/.gitted/objects/e3/b83bf274ee065eee48734cf8c6dfaf5e81471c similarity index 100% rename from tests/resources/submod2/.gitted/objects/e3/b83bf274ee065eee48734cf8c6dfaf5e81471c rename to deps/libgit2/tests/resources/submod2/.gitted/objects/e3/b83bf274ee065eee48734cf8c6dfaf5e81471c diff --git a/tests/resources/submod2/.gitted/objects/f5/4414c25e6d24fe39f5c3f128d7c8a17bc23833 b/deps/libgit2/tests/resources/submod2/.gitted/objects/f5/4414c25e6d24fe39f5c3f128d7c8a17bc23833 similarity index 100% rename from tests/resources/submod2/.gitted/objects/f5/4414c25e6d24fe39f5c3f128d7c8a17bc23833 rename to deps/libgit2/tests/resources/submod2/.gitted/objects/f5/4414c25e6d24fe39f5c3f128d7c8a17bc23833 diff --git a/tests/resources/submod2/.gitted/objects/f9/90a25a74d1a8281ce2ab018ea8df66795cd60b b/deps/libgit2/tests/resources/submod2/.gitted/objects/f9/90a25a74d1a8281ce2ab018ea8df66795cd60b similarity index 100% rename from tests/resources/submod2/.gitted/objects/f9/90a25a74d1a8281ce2ab018ea8df66795cd60b rename to deps/libgit2/tests/resources/submod2/.gitted/objects/f9/90a25a74d1a8281ce2ab018ea8df66795cd60b diff --git a/tests/resources/submod2/.gitted/refs/heads/master b/deps/libgit2/tests/resources/submod2/.gitted/refs/heads/master similarity index 100% rename from tests/resources/submod2/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/submod2/.gitted/refs/heads/master diff --git a/tests/resources/submod2/README.txt b/deps/libgit2/tests/resources/submod2/README.txt similarity index 100% rename from tests/resources/submod2/README.txt rename to deps/libgit2/tests/resources/submod2/README.txt diff --git a/tests/resources/submod2/gitmodules b/deps/libgit2/tests/resources/submod2/gitmodules similarity index 100% rename from tests/resources/submod2/gitmodules rename to deps/libgit2/tests/resources/submod2/gitmodules diff --git a/tests/resources/submod2/just_a_dir/contents b/deps/libgit2/tests/resources/submod2/just_a_dir/contents similarity index 100% rename from tests/resources/submod2/just_a_dir/contents rename to deps/libgit2/tests/resources/submod2/just_a_dir/contents diff --git a/tests/resources/submod2/just_a_file b/deps/libgit2/tests/resources/submod2/just_a_file similarity index 100% rename from tests/resources/submod2/just_a_file rename to deps/libgit2/tests/resources/submod2/just_a_file diff --git a/tests/resources/submod2/not-submodule/.gitted/HEAD b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/HEAD similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/HEAD rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/HEAD diff --git a/tests/resources/submod2/not-submodule/.gitted/config b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/config similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/config rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/config diff --git a/tests/resources/submod2/not-submodule/.gitted/description b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/description similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/description rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/description diff --git a/tests/resources/submod2/not-submodule/.gitted/index b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/index similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/index rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/index diff --git a/tests/resources/submod2/not-submodule/.gitted/info/exclude b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/info/exclude similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/info/exclude rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/info/exclude diff --git a/tests/resources/submod2/not-submodule/.gitted/logs/HEAD b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/logs/HEAD similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/logs/HEAD diff --git a/tests/resources/submod2/not-submodule/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/logs/refs/heads/master diff --git a/tests/resources/submod2/not-submodule/.gitted/objects/68/e92c611b80ee1ed8f38314ff9577f0d15b2444 b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/68/e92c611b80ee1ed8f38314ff9577f0d15b2444 similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/objects/68/e92c611b80ee1ed8f38314ff9577f0d15b2444 rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/68/e92c611b80ee1ed8f38314ff9577f0d15b2444 diff --git a/tests/resources/submod2/not-submodule/.gitted/objects/71/ff9927d7c8a5639e062c38a7d35c433c424627 b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/71/ff9927d7c8a5639e062c38a7d35c433c424627 similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/objects/71/ff9927d7c8a5639e062c38a7d35c433c424627 rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/71/ff9927d7c8a5639e062c38a7d35c433c424627 diff --git a/tests/resources/submod2/not-submodule/.gitted/objects/f0/1d56b18efd353ef2bb93a4585d590a0847195e b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/f0/1d56b18efd353ef2bb93a4585d590a0847195e similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/objects/f0/1d56b18efd353ef2bb93a4585d590a0847195e rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/objects/f0/1d56b18efd353ef2bb93a4585d590a0847195e diff --git a/tests/resources/submod2/not-submodule/.gitted/refs/heads/master b/deps/libgit2/tests/resources/submod2/not-submodule/.gitted/refs/heads/master similarity index 100% rename from tests/resources/submod2/not-submodule/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/submod2/not-submodule/.gitted/refs/heads/master diff --git a/tests/resources/submod2/not-submodule/README.txt b/deps/libgit2/tests/resources/submod2/not-submodule/README.txt similarity index 100% rename from tests/resources/submod2/not-submodule/README.txt rename to deps/libgit2/tests/resources/submod2/not-submodule/README.txt diff --git a/tests/resources/submod2/not/.gitted/notempty b/deps/libgit2/tests/resources/submod2/not/.gitted/notempty similarity index 100% rename from tests/resources/submod2/not/.gitted/notempty rename to deps/libgit2/tests/resources/submod2/not/.gitted/notempty diff --git a/tests/resources/submod2/not/README.txt b/deps/libgit2/tests/resources/submod2/not/README.txt similarity index 100% rename from tests/resources/submod2/not/README.txt rename to deps/libgit2/tests/resources/submod2/not/README.txt diff --git a/tests/resources/submod2/sm_added_and_uncommited/.gitted b/deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/.gitted similarity index 100% rename from tests/resources/submod2/sm_added_and_uncommited/.gitted rename to deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/.gitted diff --git a/tests/resources/submod2/sm_added_and_uncommited/README.txt b/deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/README.txt similarity index 100% rename from tests/resources/submod2/sm_added_and_uncommited/README.txt rename to deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/README.txt diff --git a/tests/resources/submod2/sm_added_and_uncommited/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_added_and_uncommited/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_added_and_uncommited/file_to_modify diff --git a/tests/resources/submod2/sm_changed_file/.gitted b/deps/libgit2/tests/resources/submod2/sm_changed_file/.gitted similarity index 100% rename from tests/resources/submod2/sm_changed_file/.gitted rename to deps/libgit2/tests/resources/submod2/sm_changed_file/.gitted diff --git a/tests/resources/submod2/sm_changed_file/README.txt b/deps/libgit2/tests/resources/submod2/sm_changed_file/README.txt similarity index 100% rename from tests/resources/submod2/sm_changed_file/README.txt rename to deps/libgit2/tests/resources/submod2/sm_changed_file/README.txt diff --git a/tests/resources/submod2/sm_changed_file/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_changed_file/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_changed_file/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_changed_file/file_to_modify diff --git a/tests/resources/submod2/sm_changed_head/.gitted b/deps/libgit2/tests/resources/submod2/sm_changed_head/.gitted similarity index 100% rename from tests/resources/submod2/sm_changed_head/.gitted rename to deps/libgit2/tests/resources/submod2/sm_changed_head/.gitted diff --git a/tests/resources/submod2/sm_changed_head/README.txt b/deps/libgit2/tests/resources/submod2/sm_changed_head/README.txt similarity index 100% rename from tests/resources/submod2/sm_changed_head/README.txt rename to deps/libgit2/tests/resources/submod2/sm_changed_head/README.txt diff --git a/tests/resources/submod2/sm_changed_head/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_changed_head/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_changed_head/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_changed_head/file_to_modify diff --git a/tests/resources/submod2/sm_changed_index/.gitted b/deps/libgit2/tests/resources/submod2/sm_changed_index/.gitted similarity index 100% rename from tests/resources/submod2/sm_changed_index/.gitted rename to deps/libgit2/tests/resources/submod2/sm_changed_index/.gitted diff --git a/tests/resources/submod2/sm_changed_index/README.txt b/deps/libgit2/tests/resources/submod2/sm_changed_index/README.txt similarity index 100% rename from tests/resources/submod2/sm_changed_index/README.txt rename to deps/libgit2/tests/resources/submod2/sm_changed_index/README.txt diff --git a/tests/resources/submod2/sm_changed_index/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_changed_index/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_changed_index/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_changed_index/file_to_modify diff --git a/tests/resources/submod2/sm_changed_untracked_file/.gitted b/deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/.gitted similarity index 100% rename from tests/resources/submod2/sm_changed_untracked_file/.gitted rename to deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/.gitted diff --git a/tests/resources/submod2/sm_changed_untracked_file/README.txt b/deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/README.txt similarity index 100% rename from tests/resources/submod2/sm_changed_untracked_file/README.txt rename to deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/README.txt diff --git a/tests/resources/submod2/sm_changed_untracked_file/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_changed_untracked_file/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/file_to_modify diff --git a/tests/resources/submod2/sm_changed_untracked_file/i_am_untracked b/deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/i_am_untracked similarity index 100% rename from tests/resources/submod2/sm_changed_untracked_file/i_am_untracked rename to deps/libgit2/tests/resources/submod2/sm_changed_untracked_file/i_am_untracked diff --git a/tests/resources/submod2/sm_missing_commits/.gitted b/deps/libgit2/tests/resources/submod2/sm_missing_commits/.gitted similarity index 100% rename from tests/resources/submod2/sm_missing_commits/.gitted rename to deps/libgit2/tests/resources/submod2/sm_missing_commits/.gitted diff --git a/tests/resources/submod2/sm_missing_commits/README.txt b/deps/libgit2/tests/resources/submod2/sm_missing_commits/README.txt similarity index 100% rename from tests/resources/submod2/sm_missing_commits/README.txt rename to deps/libgit2/tests/resources/submod2/sm_missing_commits/README.txt diff --git a/tests/resources/submod2/sm_missing_commits/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_missing_commits/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_missing_commits/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_missing_commits/file_to_modify diff --git a/tests/resources/submod2/sm_unchanged/.gitted b/deps/libgit2/tests/resources/submod2/sm_unchanged/.gitted similarity index 100% rename from tests/resources/submod2/sm_unchanged/.gitted rename to deps/libgit2/tests/resources/submod2/sm_unchanged/.gitted diff --git a/tests/resources/submod2/sm_unchanged/README.txt b/deps/libgit2/tests/resources/submod2/sm_unchanged/README.txt similarity index 100% rename from tests/resources/submod2/sm_unchanged/README.txt rename to deps/libgit2/tests/resources/submod2/sm_unchanged/README.txt diff --git a/tests/resources/submod2/sm_unchanged/file_to_modify b/deps/libgit2/tests/resources/submod2/sm_unchanged/file_to_modify similarity index 100% rename from tests/resources/submod2/sm_unchanged/file_to_modify rename to deps/libgit2/tests/resources/submod2/sm_unchanged/file_to_modify diff --git a/tests/resources/submod2_target/.gitted/HEAD b/deps/libgit2/tests/resources/submod2_target/.gitted/HEAD similarity index 100% rename from tests/resources/submod2_target/.gitted/HEAD rename to deps/libgit2/tests/resources/submod2_target/.gitted/HEAD diff --git a/tests/resources/submod2_target/.gitted/config b/deps/libgit2/tests/resources/submod2_target/.gitted/config similarity index 100% rename from tests/resources/submod2_target/.gitted/config rename to deps/libgit2/tests/resources/submod2_target/.gitted/config diff --git a/tests/resources/submod2_target/.gitted/description b/deps/libgit2/tests/resources/submod2_target/.gitted/description similarity index 100% rename from tests/resources/submod2_target/.gitted/description rename to deps/libgit2/tests/resources/submod2_target/.gitted/description diff --git a/tests/resources/submod2_target/.gitted/index b/deps/libgit2/tests/resources/submod2_target/.gitted/index similarity index 100% rename from tests/resources/submod2_target/.gitted/index rename to deps/libgit2/tests/resources/submod2_target/.gitted/index diff --git a/tests/resources/submod2_target/.gitted/info/exclude b/deps/libgit2/tests/resources/submod2_target/.gitted/info/exclude similarity index 100% rename from tests/resources/submod2_target/.gitted/info/exclude rename to deps/libgit2/tests/resources/submod2_target/.gitted/info/exclude diff --git a/tests/resources/submod2_target/.gitted/logs/HEAD b/deps/libgit2/tests/resources/submod2_target/.gitted/logs/HEAD similarity index 100% rename from tests/resources/submod2_target/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/submod2_target/.gitted/logs/HEAD diff --git a/tests/resources/submod2_target/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/submod2_target/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/submod2_target/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/submod2_target/.gitted/logs/refs/heads/master diff --git a/tests/resources/submod2_target/.gitted/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/submod2_target/.gitted/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/submod2_target/.gitted/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/submod2_target/.gitted/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/submod2_target/.gitted/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/submod2_target/.gitted/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/submod2_target/.gitted/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/submod2_target/.gitted/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/submod2_target/.gitted/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/submod2_target/.gitted/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/submod2_target/.gitted/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/submod2_target/.gitted/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/submod2_target/.gitted/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/submod2_target/.gitted/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/submod2_target/.gitted/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/submod2_target/.gitted/refs/heads/master b/deps/libgit2/tests/resources/submod2_target/.gitted/refs/heads/master similarity index 100% rename from tests/resources/submod2_target/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/submod2_target/.gitted/refs/heads/master diff --git a/tests/resources/submod2_target/README.txt b/deps/libgit2/tests/resources/submod2_target/README.txt similarity index 100% rename from tests/resources/submod2_target/README.txt rename to deps/libgit2/tests/resources/submod2_target/README.txt diff --git a/tests/resources/submod2_target/file_to_modify b/deps/libgit2/tests/resources/submod2_target/file_to_modify similarity index 100% rename from tests/resources/submod2_target/file_to_modify rename to deps/libgit2/tests/resources/submod2_target/file_to_modify diff --git a/tests/resources/submodules/.gitted/HEAD b/deps/libgit2/tests/resources/submodules/.gitted/HEAD similarity index 100% rename from tests/resources/submodules/.gitted/HEAD rename to deps/libgit2/tests/resources/submodules/.gitted/HEAD diff --git a/tests/resources/submodules/.gitted/config b/deps/libgit2/tests/resources/submodules/.gitted/config similarity index 100% rename from tests/resources/submodules/.gitted/config rename to deps/libgit2/tests/resources/submodules/.gitted/config diff --git a/tests/resources/submodules/.gitted/description b/deps/libgit2/tests/resources/submodules/.gitted/description similarity index 100% rename from tests/resources/submodules/.gitted/description rename to deps/libgit2/tests/resources/submodules/.gitted/description diff --git a/tests/resources/submodules/.gitted/index b/deps/libgit2/tests/resources/submodules/.gitted/index similarity index 100% rename from tests/resources/submodules/.gitted/index rename to deps/libgit2/tests/resources/submodules/.gitted/index diff --git a/tests/resources/submodules/.gitted/info/exclude b/deps/libgit2/tests/resources/submodules/.gitted/info/exclude similarity index 100% rename from tests/resources/submodules/.gitted/info/exclude rename to deps/libgit2/tests/resources/submodules/.gitted/info/exclude diff --git a/tests/resources/submodules/.gitted/info/refs b/deps/libgit2/tests/resources/submodules/.gitted/info/refs similarity index 100% rename from tests/resources/submodules/.gitted/info/refs rename to deps/libgit2/tests/resources/submodules/.gitted/info/refs diff --git a/tests/resources/submodules/.gitted/logs/HEAD b/deps/libgit2/tests/resources/submodules/.gitted/logs/HEAD similarity index 100% rename from tests/resources/submodules/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/submodules/.gitted/logs/HEAD diff --git a/tests/resources/submodules/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/submodules/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/submodules/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/submodules/.gitted/logs/refs/heads/master diff --git a/tests/resources/submodules/.gitted/objects/26/a3b32a9b7d97486c5557f5902e8ac94638145e b/deps/libgit2/tests/resources/submodules/.gitted/objects/26/a3b32a9b7d97486c5557f5902e8ac94638145e similarity index 100% rename from tests/resources/submodules/.gitted/objects/26/a3b32a9b7d97486c5557f5902e8ac94638145e rename to deps/libgit2/tests/resources/submodules/.gitted/objects/26/a3b32a9b7d97486c5557f5902e8ac94638145e diff --git a/tests/resources/submodules/.gitted/objects/78/308c9251cf4eee8b25a76c7d2790c73d797357 b/deps/libgit2/tests/resources/submodules/.gitted/objects/78/308c9251cf4eee8b25a76c7d2790c73d797357 similarity index 100% rename from tests/resources/submodules/.gitted/objects/78/308c9251cf4eee8b25a76c7d2790c73d797357 rename to deps/libgit2/tests/resources/submodules/.gitted/objects/78/308c9251cf4eee8b25a76c7d2790c73d797357 diff --git a/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 b/deps/libgit2/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 similarity index 100% rename from tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 rename to deps/libgit2/tests/resources/submodules/.gitted/objects/97/896810b3210244a62a82458b8e0819ecfc6850 diff --git a/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 b/deps/libgit2/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 similarity index 100% rename from tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 rename to deps/libgit2/tests/resources/submodules/.gitted/objects/b6/0fd986699ba4e9e68bea07cf8e793f323ef888 diff --git a/tests/resources/submodules/.gitted/objects/d5/f7fc3f74f7dec08280f370a975b112e8f60818 b/deps/libgit2/tests/resources/submodules/.gitted/objects/d5/f7fc3f74f7dec08280f370a975b112e8f60818 similarity index 100% rename from tests/resources/submodules/.gitted/objects/d5/f7fc3f74f7dec08280f370a975b112e8f60818 rename to deps/libgit2/tests/resources/submodules/.gitted/objects/d5/f7fc3f74f7dec08280f370a975b112e8f60818 diff --git a/tests/resources/submodules/.gitted/objects/e3/50052cc767cd1fcb37e84e9a89e701925be4ae b/deps/libgit2/tests/resources/submodules/.gitted/objects/e3/50052cc767cd1fcb37e84e9a89e701925be4ae similarity index 100% rename from tests/resources/submodules/.gitted/objects/e3/50052cc767cd1fcb37e84e9a89e701925be4ae rename to deps/libgit2/tests/resources/submodules/.gitted/objects/e3/50052cc767cd1fcb37e84e9a89e701925be4ae diff --git a/tests/resources/submodules/.gitted/objects/info/packs b/deps/libgit2/tests/resources/submodules/.gitted/objects/info/packs similarity index 100% rename from tests/resources/submodules/.gitted/objects/info/packs rename to deps/libgit2/tests/resources/submodules/.gitted/objects/info/packs diff --git a/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.idx b/deps/libgit2/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.idx similarity index 100% rename from tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.idx rename to deps/libgit2/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.idx diff --git a/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.pack b/deps/libgit2/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.pack similarity index 100% rename from tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.pack rename to deps/libgit2/tests/resources/submodules/.gitted/objects/pack/pack-b69d04bb39ac274669e2184e45bd90015d02ef5b.pack diff --git a/tests/resources/submodules/.gitted/packed-refs b/deps/libgit2/tests/resources/submodules/.gitted/packed-refs similarity index 100% rename from tests/resources/submodules/.gitted/packed-refs rename to deps/libgit2/tests/resources/submodules/.gitted/packed-refs diff --git a/tests/resources/submodules/.gitted/refs/heads/master b/deps/libgit2/tests/resources/submodules/.gitted/refs/heads/master similarity index 100% rename from tests/resources/submodules/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/submodules/.gitted/refs/heads/master diff --git a/tests/resources/submodules/added b/deps/libgit2/tests/resources/submodules/added similarity index 100% rename from tests/resources/submodules/added rename to deps/libgit2/tests/resources/submodules/added diff --git a/tests/resources/submodules/gitmodules b/deps/libgit2/tests/resources/submodules/gitmodules similarity index 100% rename from tests/resources/submodules/gitmodules rename to deps/libgit2/tests/resources/submodules/gitmodules diff --git a/tests/resources/submodules/ignored b/deps/libgit2/tests/resources/submodules/ignored similarity index 100% rename from tests/resources/submodules/ignored rename to deps/libgit2/tests/resources/submodules/ignored diff --git a/tests/resources/submodules/modified b/deps/libgit2/tests/resources/submodules/modified similarity index 100% rename from tests/resources/submodules/modified rename to deps/libgit2/tests/resources/submodules/modified diff --git a/tests/resources/submodules/testrepo/.gitted/HEAD b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/HEAD similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/HEAD rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/HEAD diff --git a/tests/resources/submodules/testrepo/.gitted/config b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/config similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/config rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/config diff --git a/tests/resources/submodules/testrepo/.gitted/description b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/description similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/description rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/description diff --git a/tests/resources/submodules/testrepo/.gitted/index b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/index similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/index rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/index diff --git a/tests/resources/submodules/testrepo/.gitted/info/exclude b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/info/exclude similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/info/exclude rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/info/exclude diff --git a/tests/resources/submodules/testrepo/.gitted/logs/HEAD b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/logs/HEAD similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/logs/HEAD diff --git a/tests/resources/submodules/testrepo/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/logs/refs/heads/master diff --git a/tests/resources/submodules/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/submodules/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b diff --git a/tests/resources/submodules/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d diff --git a/tests/resources/submodules/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc diff --git a/tests/resources/submodules/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/submodules/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af diff --git a/tests/resources/submodules/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/submodules/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/submodules/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/submodules/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/submodules/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/submodules/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f diff --git a/tests/resources/submodules/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/tests/resources/submodules/testrepo/.gitted/packed-refs b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/packed-refs similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/packed-refs rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/packed-refs diff --git a/tests/resources/submodules/testrepo/.gitted/refs/heads/master b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/refs/heads/master similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/refs/heads/master diff --git a/tests/resources/submodules/testrepo/.gitted/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/submodules/testrepo/.gitted/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/submodules/testrepo/.gitted/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/submodules/testrepo/.gitted/refs/remotes/origin/HEAD diff --git a/tests/resources/submodules/testrepo/README b/deps/libgit2/tests/resources/submodules/testrepo/README similarity index 100% rename from tests/resources/submodules/testrepo/README rename to deps/libgit2/tests/resources/submodules/testrepo/README diff --git a/tests/resources/submodules/testrepo/branch_file.txt b/deps/libgit2/tests/resources/submodules/testrepo/branch_file.txt similarity index 100% rename from tests/resources/submodules/testrepo/branch_file.txt rename to deps/libgit2/tests/resources/submodules/testrepo/branch_file.txt diff --git a/tests/resources/submodules/testrepo/new.txt b/deps/libgit2/tests/resources/submodules/testrepo/new.txt similarity index 100% rename from tests/resources/submodules/testrepo/new.txt rename to deps/libgit2/tests/resources/submodules/testrepo/new.txt diff --git a/tests/resources/submodules/unmodified b/deps/libgit2/tests/resources/submodules/unmodified similarity index 100% rename from tests/resources/submodules/unmodified rename to deps/libgit2/tests/resources/submodules/unmodified diff --git a/tests/resources/submodules/untracked b/deps/libgit2/tests/resources/submodules/untracked similarity index 100% rename from tests/resources/submodules/untracked rename to deps/libgit2/tests/resources/submodules/untracked diff --git a/tests/resources/template/branches/.gitignore b/deps/libgit2/tests/resources/template/branches/.gitignore similarity index 100% rename from tests/resources/template/branches/.gitignore rename to deps/libgit2/tests/resources/template/branches/.gitignore diff --git a/tests/resources/template/description b/deps/libgit2/tests/resources/template/description similarity index 100% rename from tests/resources/template/description rename to deps/libgit2/tests/resources/template/description diff --git a/tests/resources/template/hooks/link.sample b/deps/libgit2/tests/resources/template/hooks/link.sample similarity index 100% rename from tests/resources/template/hooks/link.sample rename to deps/libgit2/tests/resources/template/hooks/link.sample diff --git a/tests/resources/template/hooks/update.sample b/deps/libgit2/tests/resources/template/hooks/update.sample similarity index 100% rename from tests/resources/template/hooks/update.sample rename to deps/libgit2/tests/resources/template/hooks/update.sample diff --git a/tests/resources/template/info/exclude b/deps/libgit2/tests/resources/template/info/exclude similarity index 100% rename from tests/resources/template/info/exclude rename to deps/libgit2/tests/resources/template/info/exclude diff --git a/tests/resources/testrepo.git/FETCH_HEAD b/deps/libgit2/tests/resources/testrepo.git/FETCH_HEAD similarity index 100% rename from tests/resources/testrepo.git/FETCH_HEAD rename to deps/libgit2/tests/resources/testrepo.git/FETCH_HEAD diff --git a/tests/resources/testrepo.git/HEAD b/deps/libgit2/tests/resources/testrepo.git/HEAD similarity index 100% rename from tests/resources/testrepo.git/HEAD rename to deps/libgit2/tests/resources/testrepo.git/HEAD diff --git a/tests/resources/testrepo.git/HEAD_TRACKER b/deps/libgit2/tests/resources/testrepo.git/HEAD_TRACKER similarity index 100% rename from tests/resources/testrepo.git/HEAD_TRACKER rename to deps/libgit2/tests/resources/testrepo.git/HEAD_TRACKER diff --git a/tests/resources/testrepo.git/config b/deps/libgit2/tests/resources/testrepo.git/config similarity index 100% rename from tests/resources/testrepo.git/config rename to deps/libgit2/tests/resources/testrepo.git/config diff --git a/tests/resources/testrepo.git/index b/deps/libgit2/tests/resources/testrepo.git/index similarity index 100% rename from tests/resources/testrepo.git/index rename to deps/libgit2/tests/resources/testrepo.git/index diff --git a/tests/resources/testrepo.git/logs/HEAD b/deps/libgit2/tests/resources/testrepo.git/logs/HEAD similarity index 100% rename from tests/resources/testrepo.git/logs/HEAD rename to deps/libgit2/tests/resources/testrepo.git/logs/HEAD diff --git a/tests/resources/testrepo.git/logs/refs/heads/br2 b/deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/br2 similarity index 100% rename from tests/resources/testrepo.git/logs/refs/heads/br2 rename to deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/br2 diff --git a/tests/resources/testrepo.git/logs/refs/heads/master b/deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/master similarity index 100% rename from tests/resources/testrepo.git/logs/refs/heads/master rename to deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/master diff --git a/tests/resources/testrepo.git/logs/refs/heads/not-good b/deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/not-good similarity index 100% rename from tests/resources/testrepo.git/logs/refs/heads/not-good rename to deps/libgit2/tests/resources/testrepo.git/logs/refs/heads/not-good diff --git a/tests/resources/testrepo.git/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/testrepo.git/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/testrepo.git/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/testrepo.git/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/testrepo.git/logs/refs/remotes/test/master b/deps/libgit2/tests/resources/testrepo.git/logs/refs/remotes/test/master similarity index 100% rename from tests/resources/testrepo.git/logs/refs/remotes/test/master rename to deps/libgit2/tests/resources/testrepo.git/logs/refs/remotes/test/master diff --git a/tests/resources/testrepo.git/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 b/deps/libgit2/tests/resources/testrepo.git/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 similarity index 100% rename from tests/resources/testrepo.git/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 rename to deps/libgit2/tests/resources/testrepo.git/objects/08/b041783f40edfe12bb406c9c9a8a040177c125 diff --git a/tests/resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/testrepo.git/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/testrepo.git/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/testrepo.git/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd b/deps/libgit2/tests/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd similarity index 100% rename from tests/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd rename to deps/libgit2/tests/resources/testrepo.git/objects/1a/443023183e3f2bfbef8ac923cd81c1018a18fd diff --git a/tests/resources/testrepo.git/objects/1b/8cbad43e867676df601306689fe7c3def5e689 b/deps/libgit2/tests/resources/testrepo.git/objects/1b/8cbad43e867676df601306689fe7c3def5e689 similarity index 100% rename from tests/resources/testrepo.git/objects/1b/8cbad43e867676df601306689fe7c3def5e689 rename to deps/libgit2/tests/resources/testrepo.git/objects/1b/8cbad43e867676df601306689fe7c3def5e689 diff --git a/tests/resources/testrepo.git/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b b/deps/libgit2/tests/resources/testrepo.git/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b similarity index 100% rename from tests/resources/testrepo.git/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b rename to deps/libgit2/tests/resources/testrepo.git/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b diff --git a/tests/resources/testrepo.git/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 b/deps/libgit2/tests/resources/testrepo.git/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 similarity index 100% rename from tests/resources/testrepo.git/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 rename to deps/libgit2/tests/resources/testrepo.git/objects/25/8f0e2a959a364e40ed6603d5d44fbb24765b10 diff --git a/tests/resources/testrepo.git/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d b/deps/libgit2/tests/resources/testrepo.git/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d similarity index 100% rename from tests/resources/testrepo.git/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d rename to deps/libgit2/tests/resources/testrepo.git/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d diff --git a/tests/resources/testrepo.git/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 b/deps/libgit2/tests/resources/testrepo.git/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 similarity index 100% rename from tests/resources/testrepo.git/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 rename to deps/libgit2/tests/resources/testrepo.git/objects/2d/59075e0681f540482d4f6223a68e0fef790bc7 diff --git a/tests/resources/testrepo.git/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 b/deps/libgit2/tests/resources/testrepo.git/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 similarity index 100% rename from tests/resources/testrepo.git/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 rename to deps/libgit2/tests/resources/testrepo.git/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 diff --git a/tests/resources/testrepo.git/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc b/deps/libgit2/tests/resources/testrepo.git/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc similarity index 100% rename from tests/resources/testrepo.git/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc rename to deps/libgit2/tests/resources/testrepo.git/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc diff --git a/tests/resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/testrepo.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/testrepo.git/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/testrepo.git/objects/4a/23e2e65ad4e31c4c9db7dc746650bfad082679 b/deps/libgit2/tests/resources/testrepo.git/objects/4a/23e2e65ad4e31c4c9db7dc746650bfad082679 similarity index 100% rename from tests/resources/testrepo.git/objects/4a/23e2e65ad4e31c4c9db7dc746650bfad082679 rename to deps/libgit2/tests/resources/testrepo.git/objects/4a/23e2e65ad4e31c4c9db7dc746650bfad082679 diff --git a/tests/resources/testrepo.git/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea b/deps/libgit2/tests/resources/testrepo.git/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea similarity index 100% rename from tests/resources/testrepo.git/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea rename to deps/libgit2/tests/resources/testrepo.git/objects/4b/22b35d44b5a4f589edf3dc89196399771796ea diff --git a/tests/resources/testrepo.git/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 b/deps/libgit2/tests/resources/testrepo.git/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 similarity index 100% rename from tests/resources/testrepo.git/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 rename to deps/libgit2/tests/resources/testrepo.git/objects/52/1d87c1ec3aef9824daf6d96cc0ae3710766d91 diff --git a/tests/resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/testrepo.git/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/testrepo.git/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/testrepo.git/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af b/deps/libgit2/tests/resources/testrepo.git/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af similarity index 100% rename from tests/resources/testrepo.git/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af rename to deps/libgit2/tests/resources/testrepo.git/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af diff --git a/tests/resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/deps/libgit2/tests/resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from tests/resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to deps/libgit2/tests/resources/testrepo.git/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/tests/resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/testrepo.git/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/testrepo.git/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/testrepo.git/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe b/deps/libgit2/tests/resources/testrepo.git/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe similarity index 100% rename from tests/resources/testrepo.git/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe rename to deps/libgit2/tests/resources/testrepo.git/objects/84/9a5e34a26815e821f865b8479f5815a47af0fe diff --git a/tests/resources/testrepo.git/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 b/deps/libgit2/tests/resources/testrepo.git/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 similarity index 100% rename from tests/resources/testrepo.git/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 rename to deps/libgit2/tests/resources/testrepo.git/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 diff --git a/tests/resources/testrepo.git/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 b/deps/libgit2/tests/resources/testrepo.git/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 similarity index 100% rename from tests/resources/testrepo.git/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 rename to deps/libgit2/tests/resources/testrepo.git/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 diff --git a/tests/resources/testrepo.git/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 b/deps/libgit2/tests/resources/testrepo.git/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 similarity index 100% rename from tests/resources/testrepo.git/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 rename to deps/libgit2/tests/resources/testrepo.git/objects/9f/13f7d0a9402c681f91dc590cf7b5470e6a77d2 diff --git a/tests/resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/testrepo.git/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/testrepo.git/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/testrepo.git/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 b/deps/libgit2/tests/resources/testrepo.git/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 similarity index 100% rename from tests/resources/testrepo.git/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 rename to deps/libgit2/tests/resources/testrepo.git/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 diff --git a/tests/resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/testrepo.git/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/testrepo.git/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/testrepo.git/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 b/deps/libgit2/tests/resources/testrepo.git/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 similarity index 100% rename from tests/resources/testrepo.git/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 rename to deps/libgit2/tests/resources/testrepo.git/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 diff --git a/tests/resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/deps/libgit2/tests/resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from tests/resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to deps/libgit2/tests/resources/testrepo.git/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/tests/resources/testrepo.git/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 b/deps/libgit2/tests/resources/testrepo.git/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 similarity index 100% rename from tests/resources/testrepo.git/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 rename to deps/libgit2/tests/resources/testrepo.git/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 diff --git a/tests/resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/deps/libgit2/tests/resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from tests/resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to deps/libgit2/tests/resources/testrepo.git/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/tests/resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/testrepo.git/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/testrepo.git/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 b/deps/libgit2/tests/resources/testrepo.git/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 similarity index 100% rename from tests/resources/testrepo.git/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 rename to deps/libgit2/tests/resources/testrepo.git/objects/d0/7b0f9a8c89f1d9e74dc4fce6421dec5ef8a659 diff --git a/tests/resources/testrepo.git/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f b/deps/libgit2/tests/resources/testrepo.git/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f similarity index 100% rename from tests/resources/testrepo.git/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f rename to deps/libgit2/tests/resources/testrepo.git/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f diff --git a/tests/resources/testrepo.git/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 b/deps/libgit2/tests/resources/testrepo.git/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 similarity index 100% rename from tests/resources/testrepo.git/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 rename to deps/libgit2/tests/resources/testrepo.git/objects/d7/1aab4f9b04b45ce09bcaa636a9be6231474759 diff --git a/tests/resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/testrepo.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/testrepo.git/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 b/deps/libgit2/tests/resources/testrepo.git/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 similarity index 100% rename from tests/resources/testrepo.git/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 rename to deps/libgit2/tests/resources/testrepo.git/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 diff --git a/tests/resources/testrepo.git/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 b/deps/libgit2/tests/resources/testrepo.git/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 similarity index 100% rename from tests/resources/testrepo.git/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 rename to deps/libgit2/tests/resources/testrepo.git/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 diff --git a/tests/resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/testrepo.git/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/testrepo.git/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/testrepo.git/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 b/deps/libgit2/tests/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 similarity index 100% rename from tests/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 rename to deps/libgit2/tests/resources/testrepo.git/objects/fd/4959ce7510db09d4d8217fa2d1780413e05a09 diff --git a/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to deps/libgit2/tests/resources/testrepo.git/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/tests/resources/testrepo.git/packed-refs b/deps/libgit2/tests/resources/testrepo.git/packed-refs similarity index 100% rename from tests/resources/testrepo.git/packed-refs rename to deps/libgit2/tests/resources/testrepo.git/packed-refs diff --git a/tests/resources/testrepo.git/refs/heads/br2 b/deps/libgit2/tests/resources/testrepo.git/refs/heads/br2 similarity index 100% rename from tests/resources/testrepo.git/refs/heads/br2 rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/br2 diff --git a/tests/resources/testrepo.git/refs/heads/cannot-fetch b/deps/libgit2/tests/resources/testrepo.git/refs/heads/cannot-fetch similarity index 100% rename from tests/resources/testrepo.git/refs/heads/cannot-fetch rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/cannot-fetch diff --git a/tests/resources/testrepo.git/refs/heads/chomped b/deps/libgit2/tests/resources/testrepo.git/refs/heads/chomped similarity index 100% rename from tests/resources/testrepo.git/refs/heads/chomped rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/chomped diff --git a/tests/resources/testrepo.git/refs/heads/haacked b/deps/libgit2/tests/resources/testrepo.git/refs/heads/haacked similarity index 100% rename from tests/resources/testrepo.git/refs/heads/haacked rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/haacked diff --git a/tests/resources/testrepo.git/refs/heads/master b/deps/libgit2/tests/resources/testrepo.git/refs/heads/master similarity index 100% rename from tests/resources/testrepo.git/refs/heads/master rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/master diff --git a/tests/resources/testrepo.git/refs/heads/not-good b/deps/libgit2/tests/resources/testrepo.git/refs/heads/not-good similarity index 100% rename from tests/resources/testrepo.git/refs/heads/not-good rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/not-good diff --git a/tests/resources/testrepo.git/refs/heads/packed-test b/deps/libgit2/tests/resources/testrepo.git/refs/heads/packed-test similarity index 100% rename from tests/resources/testrepo.git/refs/heads/packed-test rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/packed-test diff --git a/tests/resources/testrepo.git/refs/heads/subtrees b/deps/libgit2/tests/resources/testrepo.git/refs/heads/subtrees similarity index 100% rename from tests/resources/testrepo.git/refs/heads/subtrees rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/subtrees diff --git a/tests/resources/testrepo.git/refs/heads/test b/deps/libgit2/tests/resources/testrepo.git/refs/heads/test similarity index 100% rename from tests/resources/testrepo.git/refs/heads/test rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/test diff --git a/tests/resources/testrepo.git/refs/heads/track-local b/deps/libgit2/tests/resources/testrepo.git/refs/heads/track-local similarity index 100% rename from tests/resources/testrepo.git/refs/heads/track-local rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/track-local diff --git a/tests/resources/testrepo.git/refs/heads/trailing b/deps/libgit2/tests/resources/testrepo.git/refs/heads/trailing similarity index 100% rename from tests/resources/testrepo.git/refs/heads/trailing rename to deps/libgit2/tests/resources/testrepo.git/refs/heads/trailing diff --git a/tests/resources/testrepo.git/refs/notes/fanout b/deps/libgit2/tests/resources/testrepo.git/refs/notes/fanout similarity index 100% rename from tests/resources/testrepo.git/refs/notes/fanout rename to deps/libgit2/tests/resources/testrepo.git/refs/notes/fanout diff --git a/tests/resources/testrepo.git/refs/remotes/test/master b/deps/libgit2/tests/resources/testrepo.git/refs/remotes/test/master similarity index 100% rename from tests/resources/testrepo.git/refs/remotes/test/master rename to deps/libgit2/tests/resources/testrepo.git/refs/remotes/test/master diff --git a/tests/resources/testrepo.git/refs/tags/annotated_tag_to_blob b/deps/libgit2/tests/resources/testrepo.git/refs/tags/annotated_tag_to_blob similarity index 100% rename from tests/resources/testrepo.git/refs/tags/annotated_tag_to_blob rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/annotated_tag_to_blob diff --git a/tests/resources/testrepo.git/refs/tags/e90810b b/deps/libgit2/tests/resources/testrepo.git/refs/tags/e90810b similarity index 100% rename from tests/resources/testrepo.git/refs/tags/e90810b rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/e90810b diff --git a/tests/resources/testrepo.git/refs/tags/hard_tag b/deps/libgit2/tests/resources/testrepo.git/refs/tags/hard_tag similarity index 100% rename from tests/resources/testrepo.git/refs/tags/hard_tag rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/hard_tag diff --git a/tests/resources/testrepo.git/refs/tags/point_to_blob b/deps/libgit2/tests/resources/testrepo.git/refs/tags/point_to_blob similarity index 100% rename from tests/resources/testrepo.git/refs/tags/point_to_blob rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/point_to_blob diff --git a/tests/resources/testrepo.git/refs/tags/taggerless b/deps/libgit2/tests/resources/testrepo.git/refs/tags/taggerless similarity index 100% rename from tests/resources/testrepo.git/refs/tags/taggerless rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/taggerless diff --git a/tests/resources/testrepo.git/refs/tags/test b/deps/libgit2/tests/resources/testrepo.git/refs/tags/test similarity index 100% rename from tests/resources/testrepo.git/refs/tags/test rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/test diff --git a/tests/resources/testrepo.git/refs/tags/wrapped_tag b/deps/libgit2/tests/resources/testrepo.git/refs/tags/wrapped_tag similarity index 100% rename from tests/resources/testrepo.git/refs/tags/wrapped_tag rename to deps/libgit2/tests/resources/testrepo.git/refs/tags/wrapped_tag diff --git a/tests/resources/testrepo/.gitted/HEAD b/deps/libgit2/tests/resources/testrepo/.gitted/HEAD similarity index 100% rename from tests/resources/testrepo/.gitted/HEAD rename to deps/libgit2/tests/resources/testrepo/.gitted/HEAD diff --git a/tests/resources/testrepo/.gitted/HEAD_TRACKER b/deps/libgit2/tests/resources/testrepo/.gitted/HEAD_TRACKER similarity index 100% rename from tests/resources/testrepo/.gitted/HEAD_TRACKER rename to deps/libgit2/tests/resources/testrepo/.gitted/HEAD_TRACKER diff --git a/tests/resources/testrepo/.gitted/config b/deps/libgit2/tests/resources/testrepo/.gitted/config similarity index 100% rename from tests/resources/testrepo/.gitted/config rename to deps/libgit2/tests/resources/testrepo/.gitted/config diff --git a/tests/resources/testrepo/.gitted/index b/deps/libgit2/tests/resources/testrepo/.gitted/index similarity index 100% rename from tests/resources/testrepo/.gitted/index rename to deps/libgit2/tests/resources/testrepo/.gitted/index diff --git a/tests/resources/testrepo/.gitted/objects/09/9fabac3a9ea935598528c27f866e34089c2eff b/deps/libgit2/tests/resources/testrepo/.gitted/objects/09/9fabac3a9ea935598528c27f866e34089c2eff similarity index 100% rename from tests/resources/testrepo/.gitted/objects/09/9fabac3a9ea935598528c27f866e34089c2eff rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/09/9fabac3a9ea935598528c27f866e34089c2eff diff --git a/tests/resources/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e b/deps/libgit2/tests/resources/testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e similarity index 100% rename from tests/resources/testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e diff --git a/tests/resources/testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 diff --git a/tests/resources/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/testrepo/.gitted/objects/1d/d0968be3ff95fcaecb6fa4245662db9fdc4568 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/1d/d0968be3ff95fcaecb6fa4245662db9fdc4568 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/1d/d0968be3ff95fcaecb6fa4245662db9fdc4568 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/1d/d0968be3ff95fcaecb6fa4245662db9fdc4568 diff --git a/tests/resources/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b b/deps/libgit2/tests/resources/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b similarity index 100% rename from tests/resources/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/1f/67fc4386b2d171e0d21be1c447e12660561f9b diff --git a/tests/resources/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d b/deps/libgit2/tests/resources/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d similarity index 100% rename from tests/resources/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/27/0b8ea76056d5cad83af921837702d3e3c2924d diff --git a/tests/resources/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/32/59a6bd5b57fb9c1281bb7ed3167b50f224cb54 diff --git a/tests/resources/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc b/deps/libgit2/tests/resources/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc similarity index 100% rename from tests/resources/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/36/97d64be941a53d4ae8f6a271e4e3fa56b022cc diff --git a/tests/resources/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/testrepo/.gitted/objects/45/dd856fdd4d89b884c340ba0e047752d9b085d6 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/45/dd856fdd4d89b884c340ba0e047752d9b085d6 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/45/dd856fdd4d89b884c340ba0e047752d9b085d6 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/45/dd856fdd4d89b884c340ba0e047752d9b085d6 diff --git a/tests/resources/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 diff --git a/tests/resources/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc b/deps/libgit2/tests/resources/testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc similarity index 100% rename from tests/resources/testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc diff --git a/tests/resources/testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 diff --git a/tests/resources/testrepo/.gitted/objects/6b/377958d8c6a4906e8573b53672a1a23a4e8ce6 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/6b/377958d8c6a4906e8573b53672a1a23a4e8ce6 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/6b/377958d8c6a4906e8573b53672a1a23a4e8ce6 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/6b/377958d8c6a4906e8573b53672a1a23a4e8ce6 diff --git a/tests/resources/testrepo/.gitted/objects/6b/9b767af9992b4abad5e24ffb1ba2d688ca602e b/deps/libgit2/tests/resources/testrepo/.gitted/objects/6b/9b767af9992b4abad5e24ffb1ba2d688ca602e similarity index 100% rename from tests/resources/testrepo/.gitted/objects/6b/9b767af9992b4abad5e24ffb1ba2d688ca602e rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/6b/9b767af9992b4abad5e24ffb1ba2d688ca602e diff --git a/tests/resources/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af b/deps/libgit2/tests/resources/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af similarity index 100% rename from tests/resources/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/76/3d71aadf09a7951596c9746c024e7eece7c7af diff --git a/tests/resources/testrepo/.gitted/objects/7b/2417a23b63e1fdde88c80e14b33247c6e5785a b/deps/libgit2/tests/resources/testrepo/.gitted/objects/7b/2417a23b63e1fdde88c80e14b33247c6e5785a similarity index 100% rename from tests/resources/testrepo/.gitted/objects/7b/2417a23b63e1fdde88c80e14b33247c6e5785a rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/7b/2417a23b63e1fdde88c80e14b33247c6e5785a diff --git a/tests/resources/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/7b/4384978d2493e851f9cca7858815fac9b10980 diff --git a/tests/resources/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/testrepo/.gitted/objects/87/380ae84009e9c503506c2f6143a4fc6c60bf80 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/87/380ae84009e9c503506c2f6143a4fc6c60bf80 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/87/380ae84009e9c503506c2f6143a4fc6c60bf80 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/87/380ae84009e9c503506c2f6143a4fc6c60bf80 diff --git a/tests/resources/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/94/4c0f6e4dfa41595e6eb3ceecdb14f50fe18162 diff --git a/tests/resources/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/9a/03079b8a8ee85a0bee58bf9be3da8b62414ed4 diff --git a/tests/resources/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/a6/5fedf39aefe402d3bb6e24df4d4f5fe4547750 diff --git a/tests/resources/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/ae/90f12eea699729ed24555e40b9fd669da12a12 diff --git a/tests/resources/testrepo/.gitted/objects/af/e4393b2b2a965f06acf2ca9658eaa01e0cd6b6 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/af/e4393b2b2a965f06acf2ca9658eaa01e0cd6b6 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/af/e4393b2b2a965f06acf2ca9658eaa01e0cd6b6 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/af/e4393b2b2a965f06acf2ca9658eaa01e0cd6b6 diff --git a/tests/resources/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/b2/5fa35b38051e4ae45d4222e795f9df2e43f1d1 diff --git a/tests/resources/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/b6/361fc6a97178d8fc8639fdeed71c775ab52593 diff --git a/tests/resources/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/tests/resources/testrepo/.gitted/objects/c0/528fd6cc988c0a40ce0be11bc192fc8dc5346e b/deps/libgit2/tests/resources/testrepo/.gitted/objects/c0/528fd6cc988c0a40ce0be11bc192fc8dc5346e similarity index 100% rename from tests/resources/testrepo/.gitted/objects/c0/528fd6cc988c0a40ce0be11bc192fc8dc5346e rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/c0/528fd6cc988c0a40ce0be11bc192fc8dc5346e diff --git a/tests/resources/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/testrepo/.gitted/objects/ce/054d4c5e3c83522aed8bc061987b46b7ede3be b/deps/libgit2/tests/resources/testrepo/.gitted/objects/ce/054d4c5e3c83522aed8bc061987b46b7ede3be similarity index 100% rename from tests/resources/testrepo/.gitted/objects/ce/054d4c5e3c83522aed8bc061987b46b7ede3be rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/ce/054d4c5e3c83522aed8bc061987b46b7ede3be diff --git a/tests/resources/testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 diff --git a/tests/resources/testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 diff --git a/tests/resources/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f b/deps/libgit2/tests/resources/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f similarity index 100% rename from tests/resources/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/d6/c93164c249c8000205dd4ec5cbca1b516d487f diff --git a/tests/resources/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/e7/b4ad382349ff96dd8199000580b9b1e2042eb0 diff --git a/tests/resources/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/f1/425cef211cc08caa31e7b545ffb232acb098c3 diff --git a/tests/resources/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.idx diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-a81e489679b7d3418f9ab594bda8ceb37dd4c695.pack diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.idx diff --git a/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack b/deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack similarity index 100% rename from tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack rename to deps/libgit2/tests/resources/testrepo/.gitted/objects/pack/pack-d85f5d483273108c9d8dd0e4728ccf0b2982423a.pack diff --git a/tests/resources/testrepo/.gitted/packed-refs b/deps/libgit2/tests/resources/testrepo/.gitted/packed-refs similarity index 100% rename from tests/resources/testrepo/.gitted/packed-refs rename to deps/libgit2/tests/resources/testrepo/.gitted/packed-refs diff --git a/tests/resources/testrepo/.gitted/refs/heads/br2 b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/br2 similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/br2 rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/br2 diff --git a/tests/resources/testrepo/.gitted/refs/heads/dir b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/dir similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/dir rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/dir diff --git a/tests/resources/testrepo/.gitted/refs/heads/long-file-name b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/long-file-name similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/long-file-name rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/long-file-name diff --git a/tests/resources/testrepo/.gitted/refs/heads/master b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/master similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/master diff --git a/tests/resources/testrepo/.gitted/refs/heads/packed-test b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/packed-test similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/packed-test rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/packed-test diff --git a/tests/resources/testrepo/.gitted/refs/heads/subtrees b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/subtrees similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/subtrees rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/subtrees diff --git a/tests/resources/testrepo/.gitted/refs/heads/test b/deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/test similarity index 100% rename from tests/resources/testrepo/.gitted/refs/heads/test rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/heads/test diff --git a/tests/resources/testrepo/.gitted/refs/tags/e90810b b/deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/e90810b similarity index 100% rename from tests/resources/testrepo/.gitted/refs/tags/e90810b rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/e90810b diff --git a/tests/resources/testrepo/.gitted/refs/tags/foo/bar b/deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/foo/bar similarity index 100% rename from tests/resources/testrepo/.gitted/refs/tags/foo/bar rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/foo/bar diff --git a/tests/resources/testrepo/.gitted/refs/tags/foo/foo/bar b/deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/foo/foo/bar similarity index 100% rename from tests/resources/testrepo/.gitted/refs/tags/foo/foo/bar rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/foo/foo/bar diff --git a/tests/resources/testrepo/.gitted/refs/tags/point_to_blob b/deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/point_to_blob similarity index 100% rename from tests/resources/testrepo/.gitted/refs/tags/point_to_blob rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/point_to_blob diff --git a/tests/resources/testrepo/.gitted/refs/tags/test b/deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/test similarity index 100% rename from tests/resources/testrepo/.gitted/refs/tags/test rename to deps/libgit2/tests/resources/testrepo/.gitted/refs/tags/test diff --git a/tests/resources/testrepo2/.gitted/HEAD b/deps/libgit2/tests/resources/testrepo2/.gitted/HEAD similarity index 100% rename from tests/resources/testrepo2/.gitted/HEAD rename to deps/libgit2/tests/resources/testrepo2/.gitted/HEAD diff --git a/tests/resources/testrepo2/.gitted/config b/deps/libgit2/tests/resources/testrepo2/.gitted/config similarity index 100% rename from tests/resources/testrepo2/.gitted/config rename to deps/libgit2/tests/resources/testrepo2/.gitted/config diff --git a/tests/resources/testrepo2/.gitted/description b/deps/libgit2/tests/resources/testrepo2/.gitted/description similarity index 100% rename from tests/resources/testrepo2/.gitted/description rename to deps/libgit2/tests/resources/testrepo2/.gitted/description diff --git a/tests/resources/testrepo2/.gitted/index b/deps/libgit2/tests/resources/testrepo2/.gitted/index similarity index 100% rename from tests/resources/testrepo2/.gitted/index rename to deps/libgit2/tests/resources/testrepo2/.gitted/index diff --git a/tests/resources/testrepo2/.gitted/info/exclude b/deps/libgit2/tests/resources/testrepo2/.gitted/info/exclude similarity index 100% rename from tests/resources/testrepo2/.gitted/info/exclude rename to deps/libgit2/tests/resources/testrepo2/.gitted/info/exclude diff --git a/tests/resources/testrepo2/.gitted/logs/HEAD b/deps/libgit2/tests/resources/testrepo2/.gitted/logs/HEAD similarity index 100% rename from tests/resources/testrepo2/.gitted/logs/HEAD rename to deps/libgit2/tests/resources/testrepo2/.gitted/logs/HEAD diff --git a/tests/resources/testrepo2/.gitted/logs/refs/heads/master b/deps/libgit2/tests/resources/testrepo2/.gitted/logs/refs/heads/master similarity index 100% rename from tests/resources/testrepo2/.gitted/logs/refs/heads/master rename to deps/libgit2/tests/resources/testrepo2/.gitted/logs/refs/heads/master diff --git a/tests/resources/testrepo2/.gitted/logs/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/testrepo2/.gitted/logs/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/testrepo2/.gitted/logs/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/testrepo2/.gitted/logs/refs/remotes/origin/HEAD diff --git a/tests/resources/testrepo2/.gitted/objects/0c/37a5391bbff43c37f0d0371823a5509eed5b1d b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/0c/37a5391bbff43c37f0d0371823a5509eed5b1d similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/0c/37a5391bbff43c37f0d0371823a5509eed5b1d rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/0c/37a5391bbff43c37f0d0371823a5509eed5b1d diff --git a/tests/resources/testrepo2/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 diff --git a/tests/resources/testrepo2/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 diff --git a/tests/resources/testrepo2/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd diff --git a/tests/resources/testrepo2/.gitted/objects/2d/2eff63372b08adf0a9eb84109ccf7d19e2f3a2 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/2d/2eff63372b08adf0a9eb84109ccf7d19e2f3a2 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/2d/2eff63372b08adf0a9eb84109ccf7d19e2f3a2 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/2d/2eff63372b08adf0a9eb84109ccf7d19e2f3a2 diff --git a/tests/resources/testrepo2/.gitted/objects/36/060c58702ed4c2a40832c51758d5344201d89a b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/36/060c58702ed4c2a40832c51758d5344201d89a similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/36/060c58702ed4c2a40832c51758d5344201d89a rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/36/060c58702ed4c2a40832c51758d5344201d89a diff --git a/tests/resources/testrepo2/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 diff --git a/tests/resources/testrepo2/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 diff --git a/tests/resources/testrepo2/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 diff --git a/tests/resources/testrepo2/.gitted/objects/61/9f9935957e010c419cb9d15621916ddfcc0b96 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/61/9f9935957e010c419cb9d15621916ddfcc0b96 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/61/9f9935957e010c419cb9d15621916ddfcc0b96 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/61/9f9935957e010c419cb9d15621916ddfcc0b96 diff --git a/tests/resources/testrepo2/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a diff --git a/tests/resources/testrepo2/.gitted/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 diff --git a/tests/resources/testrepo2/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d diff --git a/tests/resources/testrepo2/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 diff --git a/tests/resources/testrepo2/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a diff --git a/tests/resources/testrepo2/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f diff --git a/tests/resources/testrepo2/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd diff --git a/tests/resources/testrepo2/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 diff --git a/tests/resources/testrepo2/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/be/3563ae3f795b2b4353bcce3a527ad0a4f7f644 diff --git a/tests/resources/testrepo2/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd diff --git a/tests/resources/testrepo2/.gitted/objects/c4/dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/c4/dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/c4/dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/c4/dc1555e4d4fa0e0c9c3fc46734c7c35b3ce90b diff --git a/tests/resources/testrepo2/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/testrepo2/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 diff --git a/tests/resources/testrepo2/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 diff --git a/tests/resources/testrepo2/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 diff --git a/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.idx diff --git a/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack b/deps/libgit2/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack similarity index 100% rename from tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack rename to deps/libgit2/tests/resources/testrepo2/.gitted/objects/pack/pack-d7c6adf9f61318f041845b01440d09aa7a91e1b5.pack diff --git a/tests/resources/testrepo2/.gitted/packed-refs b/deps/libgit2/tests/resources/testrepo2/.gitted/packed-refs similarity index 100% rename from tests/resources/testrepo2/.gitted/packed-refs rename to deps/libgit2/tests/resources/testrepo2/.gitted/packed-refs diff --git a/tests/resources/testrepo2/.gitted/refs/heads/master b/deps/libgit2/tests/resources/testrepo2/.gitted/refs/heads/master similarity index 100% rename from tests/resources/testrepo2/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/testrepo2/.gitted/refs/heads/master diff --git a/tests/resources/testrepo2/.gitted/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/testrepo2/.gitted/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/testrepo2/.gitted/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/testrepo2/.gitted/refs/remotes/origin/HEAD diff --git a/tests/resources/testrepo2/README b/deps/libgit2/tests/resources/testrepo2/README similarity index 100% rename from tests/resources/testrepo2/README rename to deps/libgit2/tests/resources/testrepo2/README diff --git a/tests/resources/testrepo2/new.txt b/deps/libgit2/tests/resources/testrepo2/new.txt similarity index 100% rename from tests/resources/testrepo2/new.txt rename to deps/libgit2/tests/resources/testrepo2/new.txt diff --git a/tests/resources/testrepo2/subdir/README b/deps/libgit2/tests/resources/testrepo2/subdir/README similarity index 100% rename from tests/resources/testrepo2/subdir/README rename to deps/libgit2/tests/resources/testrepo2/subdir/README diff --git a/tests/resources/testrepo2/subdir/new.txt b/deps/libgit2/tests/resources/testrepo2/subdir/new.txt similarity index 100% rename from tests/resources/testrepo2/subdir/new.txt rename to deps/libgit2/tests/resources/testrepo2/subdir/new.txt diff --git a/tests/resources/testrepo2/subdir/subdir2/README b/deps/libgit2/tests/resources/testrepo2/subdir/subdir2/README similarity index 100% rename from tests/resources/testrepo2/subdir/subdir2/README rename to deps/libgit2/tests/resources/testrepo2/subdir/subdir2/README diff --git a/tests/resources/testrepo2/subdir/subdir2/new.txt b/deps/libgit2/tests/resources/testrepo2/subdir/subdir2/new.txt similarity index 100% rename from tests/resources/testrepo2/subdir/subdir2/new.txt rename to deps/libgit2/tests/resources/testrepo2/subdir/subdir2/new.txt diff --git a/tests/resources/twowaymerge.git/HEAD b/deps/libgit2/tests/resources/twowaymerge.git/HEAD similarity index 100% rename from tests/resources/twowaymerge.git/HEAD rename to deps/libgit2/tests/resources/twowaymerge.git/HEAD diff --git a/tests/resources/twowaymerge.git/config b/deps/libgit2/tests/resources/twowaymerge.git/config similarity index 100% rename from tests/resources/twowaymerge.git/config rename to deps/libgit2/tests/resources/twowaymerge.git/config diff --git a/tests/resources/twowaymerge.git/description b/deps/libgit2/tests/resources/twowaymerge.git/description similarity index 100% rename from tests/resources/twowaymerge.git/description rename to deps/libgit2/tests/resources/twowaymerge.git/description diff --git a/tests/resources/twowaymerge.git/info/exclude b/deps/libgit2/tests/resources/twowaymerge.git/info/exclude similarity index 100% rename from tests/resources/twowaymerge.git/info/exclude rename to deps/libgit2/tests/resources/twowaymerge.git/info/exclude diff --git a/tests/resources/twowaymerge.git/objects/0c/8a3f1f3d5f421cf83048c7c73ee3b55a5e0f29 b/deps/libgit2/tests/resources/twowaymerge.git/objects/0c/8a3f1f3d5f421cf83048c7c73ee3b55a5e0f29 similarity index 100% rename from tests/resources/twowaymerge.git/objects/0c/8a3f1f3d5f421cf83048c7c73ee3b55a5e0f29 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/0c/8a3f1f3d5f421cf83048c7c73ee3b55a5e0f29 diff --git a/tests/resources/twowaymerge.git/objects/10/2dce8e3081f398e4bdd9fd894dc85ac3ca6a67 b/deps/libgit2/tests/resources/twowaymerge.git/objects/10/2dce8e3081f398e4bdd9fd894dc85ac3ca6a67 similarity index 100% rename from tests/resources/twowaymerge.git/objects/10/2dce8e3081f398e4bdd9fd894dc85ac3ca6a67 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/10/2dce8e3081f398e4bdd9fd894dc85ac3ca6a67 diff --git a/tests/resources/twowaymerge.git/objects/17/7d8634a28e26ec7819284752757ebe01a479d5 b/deps/libgit2/tests/resources/twowaymerge.git/objects/17/7d8634a28e26ec7819284752757ebe01a479d5 similarity index 100% rename from tests/resources/twowaymerge.git/objects/17/7d8634a28e26ec7819284752757ebe01a479d5 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/17/7d8634a28e26ec7819284752757ebe01a479d5 diff --git a/tests/resources/twowaymerge.git/objects/1c/30b88f5f3ee66d78df6520a7de9e89b890818b b/deps/libgit2/tests/resources/twowaymerge.git/objects/1c/30b88f5f3ee66d78df6520a7de9e89b890818b similarity index 100% rename from tests/resources/twowaymerge.git/objects/1c/30b88f5f3ee66d78df6520a7de9e89b890818b rename to deps/libgit2/tests/resources/twowaymerge.git/objects/1c/30b88f5f3ee66d78df6520a7de9e89b890818b diff --git a/tests/resources/twowaymerge.git/objects/1f/4c0311a24b63f6fc209a59a1e404942d4a5006 b/deps/libgit2/tests/resources/twowaymerge.git/objects/1f/4c0311a24b63f6fc209a59a1e404942d4a5006 similarity index 100% rename from tests/resources/twowaymerge.git/objects/1f/4c0311a24b63f6fc209a59a1e404942d4a5006 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/1f/4c0311a24b63f6fc209a59a1e404942d4a5006 diff --git a/tests/resources/twowaymerge.git/objects/22/24e191514cb4bd8c566d80dac22dfcb1e9bb83 b/deps/libgit2/tests/resources/twowaymerge.git/objects/22/24e191514cb4bd8c566d80dac22dfcb1e9bb83 similarity index 100% rename from tests/resources/twowaymerge.git/objects/22/24e191514cb4bd8c566d80dac22dfcb1e9bb83 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/22/24e191514cb4bd8c566d80dac22dfcb1e9bb83 diff --git a/tests/resources/twowaymerge.git/objects/29/6e56023cdc034d2735fee8c0d85a659d1b07f4 b/deps/libgit2/tests/resources/twowaymerge.git/objects/29/6e56023cdc034d2735fee8c0d85a659d1b07f4 similarity index 100% rename from tests/resources/twowaymerge.git/objects/29/6e56023cdc034d2735fee8c0d85a659d1b07f4 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/29/6e56023cdc034d2735fee8c0d85a659d1b07f4 diff --git a/tests/resources/twowaymerge.git/objects/31/51880ae2b363f1c262cf98b750c1f169a0d432 b/deps/libgit2/tests/resources/twowaymerge.git/objects/31/51880ae2b363f1c262cf98b750c1f169a0d432 similarity index 100% rename from tests/resources/twowaymerge.git/objects/31/51880ae2b363f1c262cf98b750c1f169a0d432 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/31/51880ae2b363f1c262cf98b750c1f169a0d432 diff --git a/tests/resources/twowaymerge.git/objects/3b/287f8730c81d0b763c2d294618a5e32b67b4f8 b/deps/libgit2/tests/resources/twowaymerge.git/objects/3b/287f8730c81d0b763c2d294618a5e32b67b4f8 similarity index 100% rename from tests/resources/twowaymerge.git/objects/3b/287f8730c81d0b763c2d294618a5e32b67b4f8 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/3b/287f8730c81d0b763c2d294618a5e32b67b4f8 diff --git a/tests/resources/twowaymerge.git/objects/42/b7311aa626e712891940c1ec5d5cba201946a4 b/deps/libgit2/tests/resources/twowaymerge.git/objects/42/b7311aa626e712891940c1ec5d5cba201946a4 similarity index 100% rename from tests/resources/twowaymerge.git/objects/42/b7311aa626e712891940c1ec5d5cba201946a4 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/42/b7311aa626e712891940c1ec5d5cba201946a4 diff --git a/tests/resources/twowaymerge.git/objects/49/6d6428b9cf92981dc9495211e6e1120fb6f2ba b/deps/libgit2/tests/resources/twowaymerge.git/objects/49/6d6428b9cf92981dc9495211e6e1120fb6f2ba similarity index 100% rename from tests/resources/twowaymerge.git/objects/49/6d6428b9cf92981dc9495211e6e1120fb6f2ba rename to deps/libgit2/tests/resources/twowaymerge.git/objects/49/6d6428b9cf92981dc9495211e6e1120fb6f2ba diff --git a/tests/resources/twowaymerge.git/objects/59/b0cf7d74659e1cdb13305319d6d4ce2733c118 b/deps/libgit2/tests/resources/twowaymerge.git/objects/59/b0cf7d74659e1cdb13305319d6d4ce2733c118 similarity index 100% rename from tests/resources/twowaymerge.git/objects/59/b0cf7d74659e1cdb13305319d6d4ce2733c118 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/59/b0cf7d74659e1cdb13305319d6d4ce2733c118 diff --git a/tests/resources/twowaymerge.git/objects/6a/b5d28acbf3c3bdff276f7ccfdf29c1520e542f b/deps/libgit2/tests/resources/twowaymerge.git/objects/6a/b5d28acbf3c3bdff276f7ccfdf29c1520e542f similarity index 100% rename from tests/resources/twowaymerge.git/objects/6a/b5d28acbf3c3bdff276f7ccfdf29c1520e542f rename to deps/libgit2/tests/resources/twowaymerge.git/objects/6a/b5d28acbf3c3bdff276f7ccfdf29c1520e542f diff --git a/tests/resources/twowaymerge.git/objects/6c/fca542b55b8b37017e6125a4b8f59a6eae6f11 b/deps/libgit2/tests/resources/twowaymerge.git/objects/6c/fca542b55b8b37017e6125a4b8f59a6eae6f11 similarity index 100% rename from tests/resources/twowaymerge.git/objects/6c/fca542b55b8b37017e6125a4b8f59a6eae6f11 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/6c/fca542b55b8b37017e6125a4b8f59a6eae6f11 diff --git a/tests/resources/twowaymerge.git/objects/76/5b32c65d38f04c4f287abda055818ec0f26912 b/deps/libgit2/tests/resources/twowaymerge.git/objects/76/5b32c65d38f04c4f287abda055818ec0f26912 similarity index 100% rename from tests/resources/twowaymerge.git/objects/76/5b32c65d38f04c4f287abda055818ec0f26912 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/76/5b32c65d38f04c4f287abda055818ec0f26912 diff --git a/tests/resources/twowaymerge.git/objects/7b/8c336c45fc6895c1c60827260fe5d798e5d247 b/deps/libgit2/tests/resources/twowaymerge.git/objects/7b/8c336c45fc6895c1c60827260fe5d798e5d247 similarity index 100% rename from tests/resources/twowaymerge.git/objects/7b/8c336c45fc6895c1c60827260fe5d798e5d247 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/7b/8c336c45fc6895c1c60827260fe5d798e5d247 diff --git a/tests/resources/twowaymerge.git/objects/82/bf9a1a10a4b25c1f14c9607b60970705e92545 b/deps/libgit2/tests/resources/twowaymerge.git/objects/82/bf9a1a10a4b25c1f14c9607b60970705e92545 similarity index 100% rename from tests/resources/twowaymerge.git/objects/82/bf9a1a10a4b25c1f14c9607b60970705e92545 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/82/bf9a1a10a4b25c1f14c9607b60970705e92545 diff --git a/tests/resources/twowaymerge.git/objects/8b/82fb1794cb1c8c7f172ec730a4c2db0ae3e650 b/deps/libgit2/tests/resources/twowaymerge.git/objects/8b/82fb1794cb1c8c7f172ec730a4c2db0ae3e650 similarity index 100% rename from tests/resources/twowaymerge.git/objects/8b/82fb1794cb1c8c7f172ec730a4c2db0ae3e650 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/8b/82fb1794cb1c8c7f172ec730a4c2db0ae3e650 diff --git a/tests/resources/twowaymerge.git/objects/9a/40a2f11c191f180c47e54b11567cb3c1e89b30 b/deps/libgit2/tests/resources/twowaymerge.git/objects/9a/40a2f11c191f180c47e54b11567cb3c1e89b30 similarity index 100% rename from tests/resources/twowaymerge.git/objects/9a/40a2f11c191f180c47e54b11567cb3c1e89b30 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/9a/40a2f11c191f180c47e54b11567cb3c1e89b30 diff --git a/tests/resources/twowaymerge.git/objects/9b/219343610c88a1187c996d0dc58330b55cee28 b/deps/libgit2/tests/resources/twowaymerge.git/objects/9b/219343610c88a1187c996d0dc58330b55cee28 similarity index 100% rename from tests/resources/twowaymerge.git/objects/9b/219343610c88a1187c996d0dc58330b55cee28 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/9b/219343610c88a1187c996d0dc58330b55cee28 diff --git a/tests/resources/twowaymerge.git/objects/9f/e06a50f4d1634d6c6879854d01d80857388706 b/deps/libgit2/tests/resources/twowaymerge.git/objects/9f/e06a50f4d1634d6c6879854d01d80857388706 similarity index 100% rename from tests/resources/twowaymerge.git/objects/9f/e06a50f4d1634d6c6879854d01d80857388706 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/9f/e06a50f4d1634d6c6879854d01d80857388706 diff --git a/tests/resources/twowaymerge.git/objects/a4/1a49f8f5cd9b6cb14a076bf8394881ed0b4d19 b/deps/libgit2/tests/resources/twowaymerge.git/objects/a4/1a49f8f5cd9b6cb14a076bf8394881ed0b4d19 similarity index 100% rename from tests/resources/twowaymerge.git/objects/a4/1a49f8f5cd9b6cb14a076bf8394881ed0b4d19 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/a4/1a49f8f5cd9b6cb14a076bf8394881ed0b4d19 diff --git a/tests/resources/twowaymerge.git/objects/a9/53a018c5b10b20c86e69fef55ebc8ad4c5a417 b/deps/libgit2/tests/resources/twowaymerge.git/objects/a9/53a018c5b10b20c86e69fef55ebc8ad4c5a417 similarity index 100% rename from tests/resources/twowaymerge.git/objects/a9/53a018c5b10b20c86e69fef55ebc8ad4c5a417 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/a9/53a018c5b10b20c86e69fef55ebc8ad4c5a417 diff --git a/tests/resources/twowaymerge.git/objects/a9/cce3cd1b3efbda5b1f4a6dcc3f1570b2d3d74c b/deps/libgit2/tests/resources/twowaymerge.git/objects/a9/cce3cd1b3efbda5b1f4a6dcc3f1570b2d3d74c similarity index 100% rename from tests/resources/twowaymerge.git/objects/a9/cce3cd1b3efbda5b1f4a6dcc3f1570b2d3d74c rename to deps/libgit2/tests/resources/twowaymerge.git/objects/a9/cce3cd1b3efbda5b1f4a6dcc3f1570b2d3d74c diff --git a/tests/resources/twowaymerge.git/objects/bd/1732c43c68d712ad09e1d872b9be6d4b9efdc4 b/deps/libgit2/tests/resources/twowaymerge.git/objects/bd/1732c43c68d712ad09e1d872b9be6d4b9efdc4 similarity index 100% rename from tests/resources/twowaymerge.git/objects/bd/1732c43c68d712ad09e1d872b9be6d4b9efdc4 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/bd/1732c43c68d712ad09e1d872b9be6d4b9efdc4 diff --git a/tests/resources/twowaymerge.git/objects/c3/7a783c20d92ac92362a78a32860f7eebf938ef b/deps/libgit2/tests/resources/twowaymerge.git/objects/c3/7a783c20d92ac92362a78a32860f7eebf938ef similarity index 100% rename from tests/resources/twowaymerge.git/objects/c3/7a783c20d92ac92362a78a32860f7eebf938ef rename to deps/libgit2/tests/resources/twowaymerge.git/objects/c3/7a783c20d92ac92362a78a32860f7eebf938ef diff --git a/tests/resources/twowaymerge.git/objects/cb/dd40facab1682754eb67f7a43f29e672903cf6 b/deps/libgit2/tests/resources/twowaymerge.git/objects/cb/dd40facab1682754eb67f7a43f29e672903cf6 similarity index 100% rename from tests/resources/twowaymerge.git/objects/cb/dd40facab1682754eb67f7a43f29e672903cf6 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/cb/dd40facab1682754eb67f7a43f29e672903cf6 diff --git a/tests/resources/twowaymerge.git/objects/cd/f97fd3bb48eb3827638bb33d208f5fd32d0aa6 b/deps/libgit2/tests/resources/twowaymerge.git/objects/cd/f97fd3bb48eb3827638bb33d208f5fd32d0aa6 similarity index 100% rename from tests/resources/twowaymerge.git/objects/cd/f97fd3bb48eb3827638bb33d208f5fd32d0aa6 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/cd/f97fd3bb48eb3827638bb33d208f5fd32d0aa6 diff --git a/tests/resources/twowaymerge.git/objects/d6/f10d549cb335b9e6d38afc1f0088be69b50494 b/deps/libgit2/tests/resources/twowaymerge.git/objects/d6/f10d549cb335b9e6d38afc1f0088be69b50494 similarity index 100% rename from tests/resources/twowaymerge.git/objects/d6/f10d549cb335b9e6d38afc1f0088be69b50494 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/d6/f10d549cb335b9e6d38afc1f0088be69b50494 diff --git a/tests/resources/twowaymerge.git/objects/d9/acdc7ae7632adfeec67fa73c1e343cf4d1f47e b/deps/libgit2/tests/resources/twowaymerge.git/objects/d9/acdc7ae7632adfeec67fa73c1e343cf4d1f47e similarity index 100% rename from tests/resources/twowaymerge.git/objects/d9/acdc7ae7632adfeec67fa73c1e343cf4d1f47e rename to deps/libgit2/tests/resources/twowaymerge.git/objects/d9/acdc7ae7632adfeec67fa73c1e343cf4d1f47e diff --git a/tests/resources/twowaymerge.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/twowaymerge.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/twowaymerge.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/twowaymerge.git/objects/ef/0488f0b722f0be8bcb90a7730ac7efafd1d694 b/deps/libgit2/tests/resources/twowaymerge.git/objects/ef/0488f0b722f0be8bcb90a7730ac7efafd1d694 similarity index 100% rename from tests/resources/twowaymerge.git/objects/ef/0488f0b722f0be8bcb90a7730ac7efafd1d694 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/ef/0488f0b722f0be8bcb90a7730ac7efafd1d694 diff --git a/tests/resources/twowaymerge.git/objects/fc/f7e3f51c11d199ab7a78403ee4f9ccd028da25 b/deps/libgit2/tests/resources/twowaymerge.git/objects/fc/f7e3f51c11d199ab7a78403ee4f9ccd028da25 similarity index 100% rename from tests/resources/twowaymerge.git/objects/fc/f7e3f51c11d199ab7a78403ee4f9ccd028da25 rename to deps/libgit2/tests/resources/twowaymerge.git/objects/fc/f7e3f51c11d199ab7a78403ee4f9ccd028da25 diff --git a/tests/resources/twowaymerge.git/refs/heads/first-branch b/deps/libgit2/tests/resources/twowaymerge.git/refs/heads/first-branch similarity index 100% rename from tests/resources/twowaymerge.git/refs/heads/first-branch rename to deps/libgit2/tests/resources/twowaymerge.git/refs/heads/first-branch diff --git a/tests/resources/twowaymerge.git/refs/heads/master b/deps/libgit2/tests/resources/twowaymerge.git/refs/heads/master similarity index 100% rename from tests/resources/twowaymerge.git/refs/heads/master rename to deps/libgit2/tests/resources/twowaymerge.git/refs/heads/master diff --git a/tests/resources/twowaymerge.git/refs/heads/second-branch b/deps/libgit2/tests/resources/twowaymerge.git/refs/heads/second-branch similarity index 100% rename from tests/resources/twowaymerge.git/refs/heads/second-branch rename to deps/libgit2/tests/resources/twowaymerge.git/refs/heads/second-branch diff --git a/tests/resources/typechanges/.gitted/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/HEAD diff --git a/tests/resources/typechanges/.gitted/config b/deps/libgit2/tests/resources/typechanges/.gitted/config similarity index 100% rename from tests/resources/typechanges/.gitted/config rename to deps/libgit2/tests/resources/typechanges/.gitted/config diff --git a/tests/resources/typechanges/.gitted/description b/deps/libgit2/tests/resources/typechanges/.gitted/description similarity index 100% rename from tests/resources/typechanges/.gitted/description rename to deps/libgit2/tests/resources/typechanges/.gitted/description diff --git a/tests/resources/typechanges/.gitted/index b/deps/libgit2/tests/resources/typechanges/.gitted/index similarity index 100% rename from tests/resources/typechanges/.gitted/index rename to deps/libgit2/tests/resources/typechanges/.gitted/index diff --git a/tests/resources/typechanges/.gitted/info/exclude b/deps/libgit2/tests/resources/typechanges/.gitted/info/exclude similarity index 100% rename from tests/resources/typechanges/.gitted/info/exclude rename to deps/libgit2/tests/resources/typechanges/.gitted/info/exclude diff --git a/tests/resources/typechanges/.gitted/modules/b/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/HEAD diff --git a/tests/resources/typechanges/.gitted/modules/b/config b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/config similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/config rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/config diff --git a/tests/resources/typechanges/.gitted/modules/b/description b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/description similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/description rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/description diff --git a/tests/resources/typechanges/.gitted/modules/b/index b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/index similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/index rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/index diff --git a/tests/resources/typechanges/.gitted/modules/b/info/exclude b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/info/exclude similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/info/exclude rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/info/exclude diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/typechanges/.gitted/modules/b/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/typechanges/.gitted/modules/b/packed-refs b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/packed-refs similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/packed-refs rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/packed-refs diff --git a/tests/resources/typechanges/.gitted/modules/b/refs/heads/master b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/refs/heads/master similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/refs/heads/master rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/refs/heads/master diff --git a/tests/resources/typechanges/.gitted/modules/b/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/b/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/b/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/b/refs/remotes/origin/HEAD diff --git a/tests/resources/typechanges/.gitted/modules/d/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/HEAD diff --git a/tests/resources/typechanges/.gitted/modules/d/config b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/config similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/config rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/config diff --git a/tests/resources/typechanges/.gitted/modules/d/description b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/description similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/description rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/description diff --git a/tests/resources/typechanges/.gitted/modules/d/index b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/index similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/index rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/index diff --git a/tests/resources/typechanges/.gitted/modules/d/info/exclude b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/info/exclude similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/info/exclude rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/info/exclude diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/typechanges/.gitted/modules/d/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/typechanges/.gitted/modules/d/packed-refs b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/packed-refs similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/packed-refs rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/packed-refs diff --git a/tests/resources/typechanges/.gitted/modules/d/refs/heads/master b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/refs/heads/master similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/refs/heads/master rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/refs/heads/master diff --git a/tests/resources/typechanges/.gitted/modules/d/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/d/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/d/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/d/refs/remotes/origin/HEAD diff --git a/tests/resources/typechanges/.gitted/modules/e/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/HEAD diff --git a/tests/resources/typechanges/.gitted/modules/e/config b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/config similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/config rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/config diff --git a/tests/resources/typechanges/.gitted/modules/e/description b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/description similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/description rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/description diff --git a/tests/resources/typechanges/.gitted/modules/e/index b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/index similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/index rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/index diff --git a/tests/resources/typechanges/.gitted/modules/e/info/exclude b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/info/exclude similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/info/exclude rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/info/exclude diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/06/362fe2fdb7010d0e447b4fb450d405420479a1 diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/0e/6a3ca48bd47cfe67681acf39aa0b10a0b92484 diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/17/d0ece6e96460a06592d9d9d000de37ba4232c5 diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/41/bd4bc3df978de695f67ace64c560913da11653 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/41/bd4bc3df978de695f67ace64c560913da11653 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/41/bd4bc3df978de695f67ace64c560913da11653 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/41/bd4bc3df978de695f67ace64c560913da11653 diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/48/0095882d281ed676fe5b863569520e54a7d5c0 diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/5e/4963595a9774b90524d35a807169049de8ccad b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/5e/4963595a9774b90524d35a807169049de8ccad similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/5e/4963595a9774b90524d35a807169049de8ccad rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/5e/4963595a9774b90524d35a807169049de8ccad diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/6b/31c659545507c381e9cd34ec508f16c04e149e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/6b/31c659545507c381e9cd34ec508f16c04e149e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/6b/31c659545507c381e9cd34ec508f16c04e149e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/6b/31c659545507c381e9cd34ec508f16c04e149e diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/73/ba924a80437097795ae839e66e187c55d3babf b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/73/ba924a80437097795ae839e66e187c55d3babf similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/73/ba924a80437097795ae839e66e187c55d3babf rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/73/ba924a80437097795ae839e66e187c55d3babf diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/78/0d7397f5e8f8f477fb55b7af3accc2154b2d4a diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/78/9efbdadaa4a582778d4584385495559ea0994b b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/78/9efbdadaa4a582778d4584385495559ea0994b similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/78/9efbdadaa4a582778d4584385495559ea0994b rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/78/9efbdadaa4a582778d4584385495559ea0994b diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/88/34b635dd468a83cb012f6feace968c1c9f5d6e diff --git a/tests/resources/typechanges/.gitted/modules/e/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/objects/d0/5f2cd5cc77addf68ed6f50d622c9a4f732e6c5 diff --git a/tests/resources/typechanges/.gitted/modules/e/packed-refs b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/packed-refs similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/packed-refs rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/packed-refs diff --git a/tests/resources/typechanges/.gitted/modules/e/refs/heads/master b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/refs/heads/master similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/refs/heads/master rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/refs/heads/master diff --git a/tests/resources/typechanges/.gitted/modules/e/refs/remotes/origin/HEAD b/deps/libgit2/tests/resources/typechanges/.gitted/modules/e/refs/remotes/origin/HEAD similarity index 100% rename from tests/resources/typechanges/.gitted/modules/e/refs/remotes/origin/HEAD rename to deps/libgit2/tests/resources/typechanges/.gitted/modules/e/refs/remotes/origin/HEAD diff --git a/tests/resources/typechanges/.gitted/objects/0d/78578795b7ca49fd8df6c4b6d27c5c02d991d8 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/0d/78578795b7ca49fd8df6c4b6d27c5c02d991d8 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/0d/78578795b7ca49fd8df6c4b6d27c5c02d991d8 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/0d/78578795b7ca49fd8df6c4b6d27c5c02d991d8 diff --git a/tests/resources/typechanges/.gitted/objects/0e/7ed140b514b8cae23254cb8656fe1674403aff b/deps/libgit2/tests/resources/typechanges/.gitted/objects/0e/7ed140b514b8cae23254cb8656fe1674403aff similarity index 100% rename from tests/resources/typechanges/.gitted/objects/0e/7ed140b514b8cae23254cb8656fe1674403aff rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/0e/7ed140b514b8cae23254cb8656fe1674403aff diff --git a/tests/resources/typechanges/.gitted/objects/0f/f461da9689266f482d8f6654a4400b4e33c586 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/0f/f461da9689266f482d8f6654a4400b4e33c586 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/0f/f461da9689266f482d8f6654a4400b4e33c586 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/0f/f461da9689266f482d8f6654a4400b4e33c586 diff --git a/tests/resources/typechanges/.gitted/objects/18/aa7e45bbe4c3cc24a0b079696c59d36675af97 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/18/aa7e45bbe4c3cc24a0b079696c59d36675af97 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/18/aa7e45bbe4c3cc24a0b079696c59d36675af97 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/18/aa7e45bbe4c3cc24a0b079696c59d36675af97 diff --git a/tests/resources/typechanges/.gitted/objects/1b/63caae4a5ca96f78e8dfefc376c6a39a142475 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/1b/63caae4a5ca96f78e8dfefc376c6a39a142475 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/1b/63caae4a5ca96f78e8dfefc376c6a39a142475 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/1b/63caae4a5ca96f78e8dfefc376c6a39a142475 diff --git a/tests/resources/typechanges/.gitted/objects/1e/abe82aa3b2365a394f6108f24435df6e193d02 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/1e/abe82aa3b2365a394f6108f24435df6e193d02 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/1e/abe82aa3b2365a394f6108f24435df6e193d02 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/1e/abe82aa3b2365a394f6108f24435df6e193d02 diff --git a/tests/resources/typechanges/.gitted/objects/42/061c01a1c70097d1e4579f29a5adf40abdec95 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/42/061c01a1c70097d1e4579f29a5adf40abdec95 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/42/061c01a1c70097d1e4579f29a5adf40abdec95 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/42/061c01a1c70097d1e4579f29a5adf40abdec95 diff --git a/tests/resources/typechanges/.gitted/objects/46/2838cee476a87e7cff32196b66fa18ed756592 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/46/2838cee476a87e7cff32196b66fa18ed756592 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/46/2838cee476a87e7cff32196b66fa18ed756592 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/46/2838cee476a87e7cff32196b66fa18ed756592 diff --git a/tests/resources/typechanges/.gitted/objects/63/499e4ea8e096b831515ceb1d5a7593e4d87ae5 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/63/499e4ea8e096b831515ceb1d5a7593e4d87ae5 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/63/499e4ea8e096b831515ceb1d5a7593e4d87ae5 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/63/499e4ea8e096b831515ceb1d5a7593e4d87ae5 diff --git a/tests/resources/typechanges/.gitted/objects/68/1af94e10eaf262f3ab7cb9b8fd5f4158ba4d3e b/deps/libgit2/tests/resources/typechanges/.gitted/objects/68/1af94e10eaf262f3ab7cb9b8fd5f4158ba4d3e similarity index 100% rename from tests/resources/typechanges/.gitted/objects/68/1af94e10eaf262f3ab7cb9b8fd5f4158ba4d3e rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/68/1af94e10eaf262f3ab7cb9b8fd5f4158ba4d3e diff --git a/tests/resources/typechanges/.gitted/objects/6a/9008602b811e69a9b7a2d83496f39a794fdeeb b/deps/libgit2/tests/resources/typechanges/.gitted/objects/6a/9008602b811e69a9b7a2d83496f39a794fdeeb similarity index 100% rename from tests/resources/typechanges/.gitted/objects/6a/9008602b811e69a9b7a2d83496f39a794fdeeb rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/6a/9008602b811e69a9b7a2d83496f39a794fdeeb diff --git a/tests/resources/typechanges/.gitted/objects/6e/ae26c90e8ccc4d16208972119c40635489c6f0 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/6e/ae26c90e8ccc4d16208972119c40635489c6f0 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/6e/ae26c90e8ccc4d16208972119c40635489c6f0 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/6e/ae26c90e8ccc4d16208972119c40635489c6f0 diff --git a/tests/resources/typechanges/.gitted/objects/6f/39eabbb8a7541515e0d35971078bccb502e7e0 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/6f/39eabbb8a7541515e0d35971078bccb502e7e0 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/6f/39eabbb8a7541515e0d35971078bccb502e7e0 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/6f/39eabbb8a7541515e0d35971078bccb502e7e0 diff --git a/tests/resources/typechanges/.gitted/objects/71/54d3083461536dfc71ad5542f3e65e723a06c4 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/71/54d3083461536dfc71ad5542f3e65e723a06c4 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/71/54d3083461536dfc71ad5542f3e65e723a06c4 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/71/54d3083461536dfc71ad5542f3e65e723a06c4 diff --git a/tests/resources/typechanges/.gitted/objects/75/56c1d893a4c0ca85ac8ac51de47ff399758729 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/75/56c1d893a4c0ca85ac8ac51de47ff399758729 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/75/56c1d893a4c0ca85ac8ac51de47ff399758729 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/75/56c1d893a4c0ca85ac8ac51de47ff399758729 diff --git a/tests/resources/typechanges/.gitted/objects/76/fef844064c26d5e06c2508240dae661e7231b2 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/76/fef844064c26d5e06c2508240dae661e7231b2 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/76/fef844064c26d5e06c2508240dae661e7231b2 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/76/fef844064c26d5e06c2508240dae661e7231b2 diff --git a/tests/resources/typechanges/.gitted/objects/79/b9f23e85f55ea36a472a902e875bc1121a94cb b/deps/libgit2/tests/resources/typechanges/.gitted/objects/79/b9f23e85f55ea36a472a902e875bc1121a94cb similarity index 100% rename from tests/resources/typechanges/.gitted/objects/79/b9f23e85f55ea36a472a902e875bc1121a94cb rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/79/b9f23e85f55ea36a472a902e875bc1121a94cb diff --git a/tests/resources/typechanges/.gitted/objects/85/28da0ea65eacf1f74f9ed6696adbac547963ad b/deps/libgit2/tests/resources/typechanges/.gitted/objects/85/28da0ea65eacf1f74f9ed6696adbac547963ad similarity index 100% rename from tests/resources/typechanges/.gitted/objects/85/28da0ea65eacf1f74f9ed6696adbac547963ad rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/85/28da0ea65eacf1f74f9ed6696adbac547963ad diff --git a/tests/resources/typechanges/.gitted/objects/8b/3726b365824ad5a07c537247f4bc73ed7d37ea b/deps/libgit2/tests/resources/typechanges/.gitted/objects/8b/3726b365824ad5a07c537247f4bc73ed7d37ea similarity index 100% rename from tests/resources/typechanges/.gitted/objects/8b/3726b365824ad5a07c537247f4bc73ed7d37ea rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/8b/3726b365824ad5a07c537247f4bc73ed7d37ea diff --git a/tests/resources/typechanges/.gitted/objects/93/3e28c1c8a68838a763d250bdf0b2c6068289c3 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/93/3e28c1c8a68838a763d250bdf0b2c6068289c3 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/93/3e28c1c8a68838a763d250bdf0b2c6068289c3 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/93/3e28c1c8a68838a763d250bdf0b2c6068289c3 diff --git a/tests/resources/typechanges/.gitted/objects/96/2710fe5b4e453e9e827945b3487c525968ec4a b/deps/libgit2/tests/resources/typechanges/.gitted/objects/96/2710fe5b4e453e9e827945b3487c525968ec4a similarity index 100% rename from tests/resources/typechanges/.gitted/objects/96/2710fe5b4e453e9e827945b3487c525968ec4a rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/96/2710fe5b4e453e9e827945b3487c525968ec4a diff --git a/tests/resources/typechanges/.gitted/objects/96/6cf1b3598e195b31b2cde3784f9a19f0728a6f b/deps/libgit2/tests/resources/typechanges/.gitted/objects/96/6cf1b3598e195b31b2cde3784f9a19f0728a6f similarity index 100% rename from tests/resources/typechanges/.gitted/objects/96/6cf1b3598e195b31b2cde3784f9a19f0728a6f rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/96/6cf1b3598e195b31b2cde3784f9a19f0728a6f diff --git a/tests/resources/typechanges/.gitted/objects/99/e8bab9ece009f0fba7eb41f850f4c12bedb9b7 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/99/e8bab9ece009f0fba7eb41f850f4c12bedb9b7 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/99/e8bab9ece009f0fba7eb41f850f4c12bedb9b7 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/99/e8bab9ece009f0fba7eb41f850f4c12bedb9b7 diff --git a/tests/resources/typechanges/.gitted/objects/9b/19edf33a03a0c59cdfc113bfa5c06179bf9b1a b/deps/libgit2/tests/resources/typechanges/.gitted/objects/9b/19edf33a03a0c59cdfc113bfa5c06179bf9b1a similarity index 100% rename from tests/resources/typechanges/.gitted/objects/9b/19edf33a03a0c59cdfc113bfa5c06179bf9b1a rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/9b/19edf33a03a0c59cdfc113bfa5c06179bf9b1a diff --git a/tests/resources/typechanges/.gitted/objects/9b/db75b73836a99e3dbeea640a81de81031fdc29 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/9b/db75b73836a99e3dbeea640a81de81031fdc29 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/9b/db75b73836a99e3dbeea640a81de81031fdc29 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/9b/db75b73836a99e3dbeea640a81de81031fdc29 diff --git a/tests/resources/typechanges/.gitted/objects/9d/0235c7a7edc0889a18f97a42ee6db9fe688447 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/9d/0235c7a7edc0889a18f97a42ee6db9fe688447 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/9d/0235c7a7edc0889a18f97a42ee6db9fe688447 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/9d/0235c7a7edc0889a18f97a42ee6db9fe688447 diff --git a/tests/resources/typechanges/.gitted/objects/9e/ffc457877f109b2a4319e14bee613a15f2a00d b/deps/libgit2/tests/resources/typechanges/.gitted/objects/9e/ffc457877f109b2a4319e14bee613a15f2a00d similarity index 100% rename from tests/resources/typechanges/.gitted/objects/9e/ffc457877f109b2a4319e14bee613a15f2a00d rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/9e/ffc457877f109b2a4319e14bee613a15f2a00d diff --git a/tests/resources/typechanges/.gitted/objects/a0/a9bad6f6f40325198f938a0e3ae981622d7707 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/a0/a9bad6f6f40325198f938a0e3ae981622d7707 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/a0/a9bad6f6f40325198f938a0e3ae981622d7707 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/a0/a9bad6f6f40325198f938a0e3ae981622d7707 diff --git a/tests/resources/typechanges/.gitted/objects/b1/977dc4e573b812d4619754c98138c56999dc0d b/deps/libgit2/tests/resources/typechanges/.gitted/objects/b1/977dc4e573b812d4619754c98138c56999dc0d similarity index 100% rename from tests/resources/typechanges/.gitted/objects/b1/977dc4e573b812d4619754c98138c56999dc0d rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/b1/977dc4e573b812d4619754c98138c56999dc0d diff --git a/tests/resources/typechanges/.gitted/objects/d7/5992dd02391e128dac332dcc78d649dd9ab095 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/d7/5992dd02391e128dac332dcc78d649dd9ab095 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/d7/5992dd02391e128dac332dcc78d649dd9ab095 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/d7/5992dd02391e128dac332dcc78d649dd9ab095 diff --git a/tests/resources/typechanges/.gitted/objects/da/e2709d638df52212b1f43ff61797ebfedfcc7c b/deps/libgit2/tests/resources/typechanges/.gitted/objects/da/e2709d638df52212b1f43ff61797ebfedfcc7c similarity index 100% rename from tests/resources/typechanges/.gitted/objects/da/e2709d638df52212b1f43ff61797ebfedfcc7c rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/da/e2709d638df52212b1f43ff61797ebfedfcc7c diff --git a/tests/resources/typechanges/.gitted/objects/e1/152adcb9adf37ec551ada9ba377ab53aec3bad b/deps/libgit2/tests/resources/typechanges/.gitted/objects/e1/152adcb9adf37ec551ada9ba377ab53aec3bad similarity index 100% rename from tests/resources/typechanges/.gitted/objects/e1/152adcb9adf37ec551ada9ba377ab53aec3bad rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/e1/152adcb9adf37ec551ada9ba377ab53aec3bad diff --git a/tests/resources/typechanges/.gitted/objects/e4/ed436a9eb0f198cda722886a5f8d6d6c836b7b b/deps/libgit2/tests/resources/typechanges/.gitted/objects/e4/ed436a9eb0f198cda722886a5f8d6d6c836b7b similarity index 100% rename from tests/resources/typechanges/.gitted/objects/e4/ed436a9eb0f198cda722886a5f8d6d6c836b7b rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/e4/ed436a9eb0f198cda722886a5f8d6d6c836b7b diff --git a/tests/resources/typechanges/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/deps/libgit2/tests/resources/typechanges/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 similarity index 100% rename from tests/resources/typechanges/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/typechanges/.gitted/objects/f2/0b79342712e0b2315647cd8227a573fd3bc46e b/deps/libgit2/tests/resources/typechanges/.gitted/objects/f2/0b79342712e0b2315647cd8227a573fd3bc46e similarity index 100% rename from tests/resources/typechanges/.gitted/objects/f2/0b79342712e0b2315647cd8227a573fd3bc46e rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/f2/0b79342712e0b2315647cd8227a573fd3bc46e diff --git a/tests/resources/typechanges/.gitted/objects/fd/e0147e3b59f381635a3b016e3fe6dacb70779d b/deps/libgit2/tests/resources/typechanges/.gitted/objects/fd/e0147e3b59f381635a3b016e3fe6dacb70779d similarity index 100% rename from tests/resources/typechanges/.gitted/objects/fd/e0147e3b59f381635a3b016e3fe6dacb70779d rename to deps/libgit2/tests/resources/typechanges/.gitted/objects/fd/e0147e3b59f381635a3b016e3fe6dacb70779d diff --git a/tests/resources/typechanges/.gitted/refs/heads/master b/deps/libgit2/tests/resources/typechanges/.gitted/refs/heads/master similarity index 100% rename from tests/resources/typechanges/.gitted/refs/heads/master rename to deps/libgit2/tests/resources/typechanges/.gitted/refs/heads/master diff --git a/tests/resources/typechanges/README.md b/deps/libgit2/tests/resources/typechanges/README.md similarity index 100% rename from tests/resources/typechanges/README.md rename to deps/libgit2/tests/resources/typechanges/README.md diff --git a/tests/resources/typechanges/gitmodules b/deps/libgit2/tests/resources/typechanges/gitmodules similarity index 100% rename from tests/resources/typechanges/gitmodules rename to deps/libgit2/tests/resources/typechanges/gitmodules diff --git a/tests/resources/unsymlinked.git/HEAD b/deps/libgit2/tests/resources/unsymlinked.git/HEAD similarity index 100% rename from tests/resources/unsymlinked.git/HEAD rename to deps/libgit2/tests/resources/unsymlinked.git/HEAD diff --git a/tests/resources/unsymlinked.git/config b/deps/libgit2/tests/resources/unsymlinked.git/config similarity index 100% rename from tests/resources/unsymlinked.git/config rename to deps/libgit2/tests/resources/unsymlinked.git/config diff --git a/tests/resources/unsymlinked.git/description b/deps/libgit2/tests/resources/unsymlinked.git/description similarity index 100% rename from tests/resources/unsymlinked.git/description rename to deps/libgit2/tests/resources/unsymlinked.git/description diff --git a/tests/resources/unsymlinked.git/info/exclude b/deps/libgit2/tests/resources/unsymlinked.git/info/exclude similarity index 100% rename from tests/resources/unsymlinked.git/info/exclude rename to deps/libgit2/tests/resources/unsymlinked.git/info/exclude diff --git a/tests/resources/unsymlinked.git/objects/08/8b64704e0d6b8bd061dea879418cb5442a3fbf b/deps/libgit2/tests/resources/unsymlinked.git/objects/08/8b64704e0d6b8bd061dea879418cb5442a3fbf similarity index 100% rename from tests/resources/unsymlinked.git/objects/08/8b64704e0d6b8bd061dea879418cb5442a3fbf rename to deps/libgit2/tests/resources/unsymlinked.git/objects/08/8b64704e0d6b8bd061dea879418cb5442a3fbf diff --git a/tests/resources/unsymlinked.git/objects/13/a5e939bca25940c069fd2169d993dba328e30b b/deps/libgit2/tests/resources/unsymlinked.git/objects/13/a5e939bca25940c069fd2169d993dba328e30b similarity index 100% rename from tests/resources/unsymlinked.git/objects/13/a5e939bca25940c069fd2169d993dba328e30b rename to deps/libgit2/tests/resources/unsymlinked.git/objects/13/a5e939bca25940c069fd2169d993dba328e30b diff --git a/tests/resources/unsymlinked.git/objects/19/bf568e59e3a0b363cafb4106226e62d4a4c41c b/deps/libgit2/tests/resources/unsymlinked.git/objects/19/bf568e59e3a0b363cafb4106226e62d4a4c41c similarity index 100% rename from tests/resources/unsymlinked.git/objects/19/bf568e59e3a0b363cafb4106226e62d4a4c41c rename to deps/libgit2/tests/resources/unsymlinked.git/objects/19/bf568e59e3a0b363cafb4106226e62d4a4c41c diff --git a/tests/resources/unsymlinked.git/objects/58/1fadd35b4cf320d102a152f918729011604773 b/deps/libgit2/tests/resources/unsymlinked.git/objects/58/1fadd35b4cf320d102a152f918729011604773 similarity index 100% rename from tests/resources/unsymlinked.git/objects/58/1fadd35b4cf320d102a152f918729011604773 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/58/1fadd35b4cf320d102a152f918729011604773 diff --git a/tests/resources/unsymlinked.git/objects/5c/87b6791e8b13da658a14d1ef7e09b5dc3bac8c b/deps/libgit2/tests/resources/unsymlinked.git/objects/5c/87b6791e8b13da658a14d1ef7e09b5dc3bac8c similarity index 100% rename from tests/resources/unsymlinked.git/objects/5c/87b6791e8b13da658a14d1ef7e09b5dc3bac8c rename to deps/libgit2/tests/resources/unsymlinked.git/objects/5c/87b6791e8b13da658a14d1ef7e09b5dc3bac8c diff --git a/tests/resources/unsymlinked.git/objects/6f/e5f5398af85fb3de8a6aba0339b6d3bfa26a27 b/deps/libgit2/tests/resources/unsymlinked.git/objects/6f/e5f5398af85fb3de8a6aba0339b6d3bfa26a27 similarity index 100% rename from tests/resources/unsymlinked.git/objects/6f/e5f5398af85fb3de8a6aba0339b6d3bfa26a27 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/6f/e5f5398af85fb3de8a6aba0339b6d3bfa26a27 diff --git a/tests/resources/unsymlinked.git/objects/7f/ccd75616ec188b8f1b23d67506a334cc34a49d b/deps/libgit2/tests/resources/unsymlinked.git/objects/7f/ccd75616ec188b8f1b23d67506a334cc34a49d similarity index 100% rename from tests/resources/unsymlinked.git/objects/7f/ccd75616ec188b8f1b23d67506a334cc34a49d rename to deps/libgit2/tests/resources/unsymlinked.git/objects/7f/ccd75616ec188b8f1b23d67506a334cc34a49d diff --git a/tests/resources/unsymlinked.git/objects/80/6999882bf91d24241e4077906b9017605eb1f3 b/deps/libgit2/tests/resources/unsymlinked.git/objects/80/6999882bf91d24241e4077906b9017605eb1f3 similarity index 100% rename from tests/resources/unsymlinked.git/objects/80/6999882bf91d24241e4077906b9017605eb1f3 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/80/6999882bf91d24241e4077906b9017605eb1f3 diff --git a/tests/resources/unsymlinked.git/objects/83/7d176303c5005505ec1e4a30231c40930c0230 b/deps/libgit2/tests/resources/unsymlinked.git/objects/83/7d176303c5005505ec1e4a30231c40930c0230 similarity index 100% rename from tests/resources/unsymlinked.git/objects/83/7d176303c5005505ec1e4a30231c40930c0230 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/83/7d176303c5005505ec1e4a30231c40930c0230 diff --git a/tests/resources/unsymlinked.git/objects/a8/595ccca04f40818ae0155c8f9c77a230e597b6 b/deps/libgit2/tests/resources/unsymlinked.git/objects/a8/595ccca04f40818ae0155c8f9c77a230e597b6 similarity index 100% rename from tests/resources/unsymlinked.git/objects/a8/595ccca04f40818ae0155c8f9c77a230e597b6 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/a8/595ccca04f40818ae0155c8f9c77a230e597b6 diff --git a/tests/resources/unsymlinked.git/objects/cf/8f1cf5cce859c438d6cc067284cb5e161206e7 b/deps/libgit2/tests/resources/unsymlinked.git/objects/cf/8f1cf5cce859c438d6cc067284cb5e161206e7 similarity index 100% rename from tests/resources/unsymlinked.git/objects/cf/8f1cf5cce859c438d6cc067284cb5e161206e7 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/cf/8f1cf5cce859c438d6cc067284cb5e161206e7 diff --git a/tests/resources/unsymlinked.git/objects/d5/278d05c8607ec420bfee4cf219fbc0eeebfd6a b/deps/libgit2/tests/resources/unsymlinked.git/objects/d5/278d05c8607ec420bfee4cf219fbc0eeebfd6a similarity index 100% rename from tests/resources/unsymlinked.git/objects/d5/278d05c8607ec420bfee4cf219fbc0eeebfd6a rename to deps/libgit2/tests/resources/unsymlinked.git/objects/d5/278d05c8607ec420bfee4cf219fbc0eeebfd6a diff --git a/tests/resources/unsymlinked.git/objects/f4/e16fb76536591a41454194058d048d8e4dd2e9 b/deps/libgit2/tests/resources/unsymlinked.git/objects/f4/e16fb76536591a41454194058d048d8e4dd2e9 similarity index 100% rename from tests/resources/unsymlinked.git/objects/f4/e16fb76536591a41454194058d048d8e4dd2e9 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/f4/e16fb76536591a41454194058d048d8e4dd2e9 diff --git a/tests/resources/unsymlinked.git/objects/f9/e65619d93fdf2673882e0a261c5e93b1a84006 b/deps/libgit2/tests/resources/unsymlinked.git/objects/f9/e65619d93fdf2673882e0a261c5e93b1a84006 similarity index 100% rename from tests/resources/unsymlinked.git/objects/f9/e65619d93fdf2673882e0a261c5e93b1a84006 rename to deps/libgit2/tests/resources/unsymlinked.git/objects/f9/e65619d93fdf2673882e0a261c5e93b1a84006 diff --git a/tests/resources/unsymlinked.git/refs/heads/exe-file b/deps/libgit2/tests/resources/unsymlinked.git/refs/heads/exe-file similarity index 100% rename from tests/resources/unsymlinked.git/refs/heads/exe-file rename to deps/libgit2/tests/resources/unsymlinked.git/refs/heads/exe-file diff --git a/tests/resources/unsymlinked.git/refs/heads/master b/deps/libgit2/tests/resources/unsymlinked.git/refs/heads/master similarity index 100% rename from tests/resources/unsymlinked.git/refs/heads/master rename to deps/libgit2/tests/resources/unsymlinked.git/refs/heads/master diff --git a/tests/resources/unsymlinked.git/refs/heads/reg-file b/deps/libgit2/tests/resources/unsymlinked.git/refs/heads/reg-file similarity index 100% rename from tests/resources/unsymlinked.git/refs/heads/reg-file rename to deps/libgit2/tests/resources/unsymlinked.git/refs/heads/reg-file diff --git a/tests/resources/userdiff/.gitted/HEAD b/deps/libgit2/tests/resources/userdiff/.gitted/HEAD similarity index 100% rename from tests/resources/userdiff/.gitted/HEAD rename to deps/libgit2/tests/resources/userdiff/.gitted/HEAD diff --git a/tests/resources/userdiff/.gitted/config b/deps/libgit2/tests/resources/userdiff/.gitted/config similarity index 100% rename from tests/resources/userdiff/.gitted/config rename to deps/libgit2/tests/resources/userdiff/.gitted/config diff --git a/tests/resources/userdiff/.gitted/description b/deps/libgit2/tests/resources/userdiff/.gitted/description similarity index 100% rename from tests/resources/userdiff/.gitted/description rename to deps/libgit2/tests/resources/userdiff/.gitted/description diff --git a/tests/resources/userdiff/.gitted/index b/deps/libgit2/tests/resources/userdiff/.gitted/index similarity index 100% rename from tests/resources/userdiff/.gitted/index rename to deps/libgit2/tests/resources/userdiff/.gitted/index diff --git a/tests/resources/userdiff/.gitted/info/refs b/deps/libgit2/tests/resources/userdiff/.gitted/info/refs similarity index 100% rename from tests/resources/userdiff/.gitted/info/refs rename to deps/libgit2/tests/resources/userdiff/.gitted/info/refs diff --git a/tests/resources/userdiff/.gitted/objects/info/packs b/deps/libgit2/tests/resources/userdiff/.gitted/objects/info/packs similarity index 100% rename from tests/resources/userdiff/.gitted/objects/info/packs rename to deps/libgit2/tests/resources/userdiff/.gitted/objects/info/packs diff --git a/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.idx b/deps/libgit2/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.idx similarity index 100% rename from tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.idx rename to deps/libgit2/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.idx diff --git a/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.pack b/deps/libgit2/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.pack similarity index 100% rename from tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.pack rename to deps/libgit2/tests/resources/userdiff/.gitted/objects/pack/pack-1652578900ac63564f2a24b9714529821276ceb9.pack diff --git a/tests/resources/userdiff/.gitted/packed-refs b/deps/libgit2/tests/resources/userdiff/.gitted/packed-refs similarity index 100% rename from tests/resources/userdiff/.gitted/packed-refs rename to deps/libgit2/tests/resources/userdiff/.gitted/packed-refs diff --git a/tests/resources/userdiff/.gitted/refs/dummy-marker.txt b/deps/libgit2/tests/resources/userdiff/.gitted/refs/dummy-marker.txt similarity index 100% rename from tests/resources/userdiff/.gitted/refs/dummy-marker.txt rename to deps/libgit2/tests/resources/userdiff/.gitted/refs/dummy-marker.txt diff --git a/tests/resources/userdiff/after/file.html b/deps/libgit2/tests/resources/userdiff/after/file.html similarity index 100% rename from tests/resources/userdiff/after/file.html rename to deps/libgit2/tests/resources/userdiff/after/file.html diff --git a/tests/resources/userdiff/after/file.javascript b/deps/libgit2/tests/resources/userdiff/after/file.javascript similarity index 100% rename from tests/resources/userdiff/after/file.javascript rename to deps/libgit2/tests/resources/userdiff/after/file.javascript diff --git a/tests/resources/userdiff/after/file.php b/deps/libgit2/tests/resources/userdiff/after/file.php similarity index 100% rename from tests/resources/userdiff/after/file.php rename to deps/libgit2/tests/resources/userdiff/after/file.php diff --git a/tests/resources/userdiff/before/file.html b/deps/libgit2/tests/resources/userdiff/before/file.html similarity index 100% rename from tests/resources/userdiff/before/file.html rename to deps/libgit2/tests/resources/userdiff/before/file.html diff --git a/tests/resources/userdiff/before/file.javascript b/deps/libgit2/tests/resources/userdiff/before/file.javascript similarity index 100% rename from tests/resources/userdiff/before/file.javascript rename to deps/libgit2/tests/resources/userdiff/before/file.javascript diff --git a/tests/resources/userdiff/before/file.php b/deps/libgit2/tests/resources/userdiff/before/file.php similarity index 100% rename from tests/resources/userdiff/before/file.php rename to deps/libgit2/tests/resources/userdiff/before/file.php diff --git a/tests/resources/userdiff/expected/driver/diff.html b/deps/libgit2/tests/resources/userdiff/expected/driver/diff.html similarity index 100% rename from tests/resources/userdiff/expected/driver/diff.html rename to deps/libgit2/tests/resources/userdiff/expected/driver/diff.html diff --git a/tests/resources/userdiff/expected/driver/diff.javascript b/deps/libgit2/tests/resources/userdiff/expected/driver/diff.javascript similarity index 100% rename from tests/resources/userdiff/expected/driver/diff.javascript rename to deps/libgit2/tests/resources/userdiff/expected/driver/diff.javascript diff --git a/tests/resources/userdiff/expected/driver/diff.php b/deps/libgit2/tests/resources/userdiff/expected/driver/diff.php similarity index 100% rename from tests/resources/userdiff/expected/driver/diff.php rename to deps/libgit2/tests/resources/userdiff/expected/driver/diff.php diff --git a/tests/resources/userdiff/expected/nodriver/diff.html b/deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.html similarity index 100% rename from tests/resources/userdiff/expected/nodriver/diff.html rename to deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.html diff --git a/tests/resources/userdiff/expected/nodriver/diff.javascript b/deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.javascript similarity index 100% rename from tests/resources/userdiff/expected/nodriver/diff.javascript rename to deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.javascript diff --git a/tests/resources/userdiff/expected/nodriver/diff.php b/deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.php similarity index 100% rename from tests/resources/userdiff/expected/nodriver/diff.php rename to deps/libgit2/tests/resources/userdiff/expected/nodriver/diff.php diff --git a/tests/resources/userdiff/files/file.html b/deps/libgit2/tests/resources/userdiff/files/file.html similarity index 100% rename from tests/resources/userdiff/files/file.html rename to deps/libgit2/tests/resources/userdiff/files/file.html diff --git a/tests/resources/userdiff/files/file.javascript b/deps/libgit2/tests/resources/userdiff/files/file.javascript similarity index 100% rename from tests/resources/userdiff/files/file.javascript rename to deps/libgit2/tests/resources/userdiff/files/file.javascript diff --git a/tests/resources/userdiff/files/file.php b/deps/libgit2/tests/resources/userdiff/files/file.php similarity index 100% rename from tests/resources/userdiff/files/file.php rename to deps/libgit2/tests/resources/userdiff/files/file.php diff --git a/tests/revert/bare.c b/deps/libgit2/tests/revert/bare.c similarity index 100% rename from tests/revert/bare.c rename to deps/libgit2/tests/revert/bare.c diff --git a/tests/revert/workdir.c b/deps/libgit2/tests/revert/workdir.c similarity index 100% rename from tests/revert/workdir.c rename to deps/libgit2/tests/revert/workdir.c diff --git a/tests/revwalk/basic.c b/deps/libgit2/tests/revwalk/basic.c similarity index 100% rename from tests/revwalk/basic.c rename to deps/libgit2/tests/revwalk/basic.c diff --git a/tests/revwalk/hidecb.c b/deps/libgit2/tests/revwalk/hidecb.c similarity index 100% rename from tests/revwalk/hidecb.c rename to deps/libgit2/tests/revwalk/hidecb.c diff --git a/tests/revwalk/mergebase.c b/deps/libgit2/tests/revwalk/mergebase.c similarity index 100% rename from tests/revwalk/mergebase.c rename to deps/libgit2/tests/revwalk/mergebase.c diff --git a/tests/revwalk/signatureparsing.c b/deps/libgit2/tests/revwalk/signatureparsing.c similarity index 100% rename from tests/revwalk/signatureparsing.c rename to deps/libgit2/tests/revwalk/signatureparsing.c diff --git a/tests/revwalk/simplify.c b/deps/libgit2/tests/revwalk/simplify.c similarity index 100% rename from tests/revwalk/simplify.c rename to deps/libgit2/tests/revwalk/simplify.c diff --git a/tests/stash/drop.c b/deps/libgit2/tests/stash/drop.c similarity index 100% rename from tests/stash/drop.c rename to deps/libgit2/tests/stash/drop.c diff --git a/tests/stash/foreach.c b/deps/libgit2/tests/stash/foreach.c similarity index 100% rename from tests/stash/foreach.c rename to deps/libgit2/tests/stash/foreach.c diff --git a/tests/stash/save.c b/deps/libgit2/tests/stash/save.c similarity index 100% rename from tests/stash/save.c rename to deps/libgit2/tests/stash/save.c diff --git a/tests/stash/stash_helpers.c b/deps/libgit2/tests/stash/stash_helpers.c similarity index 100% rename from tests/stash/stash_helpers.c rename to deps/libgit2/tests/stash/stash_helpers.c diff --git a/tests/stash/stash_helpers.h b/deps/libgit2/tests/stash/stash_helpers.h similarity index 100% rename from tests/stash/stash_helpers.h rename to deps/libgit2/tests/stash/stash_helpers.h diff --git a/tests/stash/submodules.c b/deps/libgit2/tests/stash/submodules.c similarity index 100% rename from tests/stash/submodules.c rename to deps/libgit2/tests/stash/submodules.c diff --git a/tests/status/ignore.c b/deps/libgit2/tests/status/ignore.c similarity index 100% rename from tests/status/ignore.c rename to deps/libgit2/tests/status/ignore.c diff --git a/tests/status/renames.c b/deps/libgit2/tests/status/renames.c similarity index 100% rename from tests/status/renames.c rename to deps/libgit2/tests/status/renames.c diff --git a/tests/status/single.c b/deps/libgit2/tests/status/single.c similarity index 100% rename from tests/status/single.c rename to deps/libgit2/tests/status/single.c diff --git a/tests/status/status_data.h b/deps/libgit2/tests/status/status_data.h similarity index 100% rename from tests/status/status_data.h rename to deps/libgit2/tests/status/status_data.h diff --git a/tests/status/status_helpers.c b/deps/libgit2/tests/status/status_helpers.c similarity index 100% rename from tests/status/status_helpers.c rename to deps/libgit2/tests/status/status_helpers.c diff --git a/tests/status/status_helpers.h b/deps/libgit2/tests/status/status_helpers.h similarity index 100% rename from tests/status/status_helpers.h rename to deps/libgit2/tests/status/status_helpers.h diff --git a/tests/status/submodules.c b/deps/libgit2/tests/status/submodules.c similarity index 100% rename from tests/status/submodules.c rename to deps/libgit2/tests/status/submodules.c diff --git a/tests/status/worktree.c b/deps/libgit2/tests/status/worktree.c similarity index 100% rename from tests/status/worktree.c rename to deps/libgit2/tests/status/worktree.c diff --git a/tests/status/worktree_init.c b/deps/libgit2/tests/status/worktree_init.c similarity index 100% rename from tests/status/worktree_init.c rename to deps/libgit2/tests/status/worktree_init.c diff --git a/tests/stress/diff.c b/deps/libgit2/tests/stress/diff.c similarity index 100% rename from tests/stress/diff.c rename to deps/libgit2/tests/stress/diff.c diff --git a/tests/structinit/structinit.c b/deps/libgit2/tests/structinit/structinit.c similarity index 100% rename from tests/structinit/structinit.c rename to deps/libgit2/tests/structinit/structinit.c diff --git a/tests/submodule/add.c b/deps/libgit2/tests/submodule/add.c similarity index 100% rename from tests/submodule/add.c rename to deps/libgit2/tests/submodule/add.c diff --git a/tests/submodule/lookup.c b/deps/libgit2/tests/submodule/lookup.c similarity index 100% rename from tests/submodule/lookup.c rename to deps/libgit2/tests/submodule/lookup.c diff --git a/tests/submodule/modify.c b/deps/libgit2/tests/submodule/modify.c similarity index 100% rename from tests/submodule/modify.c rename to deps/libgit2/tests/submodule/modify.c diff --git a/tests/submodule/nosubs.c b/deps/libgit2/tests/submodule/nosubs.c similarity index 100% rename from tests/submodule/nosubs.c rename to deps/libgit2/tests/submodule/nosubs.c diff --git a/tests/submodule/status.c b/deps/libgit2/tests/submodule/status.c similarity index 100% rename from tests/submodule/status.c rename to deps/libgit2/tests/submodule/status.c diff --git a/tests/submodule/submodule_helpers.c b/deps/libgit2/tests/submodule/submodule_helpers.c similarity index 100% rename from tests/submodule/submodule_helpers.c rename to deps/libgit2/tests/submodule/submodule_helpers.c diff --git a/tests/submodule/submodule_helpers.h b/deps/libgit2/tests/submodule/submodule_helpers.h similarity index 100% rename from tests/submodule/submodule_helpers.h rename to deps/libgit2/tests/submodule/submodule_helpers.h diff --git a/tests/threads/basic.c b/deps/libgit2/tests/threads/basic.c similarity index 100% rename from tests/threads/basic.c rename to deps/libgit2/tests/threads/basic.c diff --git a/tests/threads/diff.c b/deps/libgit2/tests/threads/diff.c similarity index 100% rename from tests/threads/diff.c rename to deps/libgit2/tests/threads/diff.c diff --git a/tests/threads/iterator.c b/deps/libgit2/tests/threads/iterator.c similarity index 100% rename from tests/threads/iterator.c rename to deps/libgit2/tests/threads/iterator.c diff --git a/tests/threads/refdb.c b/deps/libgit2/tests/threads/refdb.c similarity index 100% rename from tests/threads/refdb.c rename to deps/libgit2/tests/threads/refdb.c diff --git a/tests/threads/thread_helpers.c b/deps/libgit2/tests/threads/thread_helpers.c similarity index 100% rename from tests/threads/thread_helpers.c rename to deps/libgit2/tests/threads/thread_helpers.c diff --git a/tests/threads/thread_helpers.h b/deps/libgit2/tests/threads/thread_helpers.h similarity index 100% rename from tests/threads/thread_helpers.h rename to deps/libgit2/tests/threads/thread_helpers.h diff --git a/tests/trace/trace.c b/deps/libgit2/tests/trace/trace.c similarity index 100% rename from tests/trace/trace.c rename to deps/libgit2/tests/trace/trace.c diff --git a/tests/valgrind-supp-mac.txt b/deps/libgit2/tests/valgrind-supp-mac.txt similarity index 100% rename from tests/valgrind-supp-mac.txt rename to deps/libgit2/tests/valgrind-supp-mac.txt diff --git a/dist.ini b/dist.ini new file mode 100644 index 00000000..5cd55bc7 --- /dev/null +++ b/dist.ini @@ -0,0 +1,21 @@ +name = Git-Raw +author = Alessandro Ghedini +license = Perl_5 +copyright_holder = Alessandro Ghedini +copyright_year = 2012 + +[@Author::ALEXBIO] +repo = p5-Git-Raw +makemaker = 0 + +[Prereqs / ConfigureRequires] +Devel::CheckLib = 0.6 +File::Basename = 2.74 +Getopt::Long = 2.35 +ExtUtils::MakeMaker = 6.63_03 +ExtUtils::Constant = 0.23 + +[=inc::MakeMaker / MakeMaker] + +[PruneFiles] +filename = README.pod diff --git a/inc/MakeMaker.pm b/inc/MakeMaker.pm new file mode 100644 index 00000000..540e709d --- /dev/null +++ b/inc/MakeMaker.pm @@ -0,0 +1,391 @@ +package inc::MakeMaker; + +use Moose; +use Config; + +extends 'Dist::Zilla::Plugin::MakeMaker::Awesome'; + +override _build_MakeFile_PL_template => sub { + my ($self) = @_; + + my $template = <<'TEMPLATE'; +use strict; +use warnings; +use Config; +use Getopt::Long; +use File::Basename qw(basename dirname); + +use Devel::CheckLib; + +# compiler detection +my $is_gcc = length($Config{gccversion}); +my $is_msvc = $Config{cc} eq 'cl' ? 1 : 0; +my $is_sunpro = (length($Config{ccversion}) && !$is_msvc) ? 1 : 0; + +# os detection +my $is_solaris = ($^O =~ /(sun|solaris)/i) ? 1 : 0; +my $is_windows = ($^O =~ /MSWin32/i) ? 1 : 0; +my $is_linux = ($^O =~ /linux/i) ? 1 : 0; +my $is_osx = ($^O =~ /darwin/i) ? 1 : 0; +my $is_gkfreebsd = ($^O =~ /gnukfreebsd/i) ? 1 : 0; + +# allow the user to override/specify the locations of OpenSSL and libssh2 +our $opt = {}; + +Getopt::Long::GetOptions( + "help" => \&usage, + 'with-openssl-include=s' => \$opt->{'ssl'}->{'incdir'}, + 'with-openssl-libs=s@' => \$opt->{'ssl'}->{'libs'}, + 'with-libssh2-include=s' => \$opt->{'ssh2'}->{'incdir'}, + 'with-libssh2-lib=s@' => \$opt->{'ssh2'}->{'libs'}, +) || die &usage(); + +my $def = ''; +my $lib = ''; +my $inc = ''; +my $ccflags = ''; + +my %os_specific = ( + 'darwin' => { + 'ssh2' => { + 'inc' => ['/opt/local/include'], + 'lib' => ['/opt/local/lib'] + } + }, + 'freebsd' => { + 'ssh2' => { + 'inc' => ['/usr/local/include'], + 'lib' => ['/usr/local/lib'] + } + } +); + +my $ssh2_libpath; +my $ssh2_incpath; +if (my $os_params = $os_specific{$^O}) { + if (my $ssh2 = $os_params -> {'ssh2'}) { + $ssh2_libpath = $ssh2 -> {'lib'}; + $ssh2_incpath = $ssh2 -> {'inc'}; + } +} + +my %library_tests = ( + 'ssl' => { + 'lib' => 'ssl', + 'header' => 'openssl/opensslconf.h', + }, + 'ssh2' => { + 'lib' => 'ssh2', + 'libpath' => $ssh2_libpath, + 'incpath' => $ssh2_incpath, + 'header' => 'libssh2.h', + } +); + +my %library_opts = ( + 'ssl' => { + 'defines' => ' -DGIT_SSL', + 'libs' => ' -lssl -lcrypto', + }, + 'ssh2' => { + 'defines' => ' -DGIT_SSH', + 'libs' => ' -lssh2', + } +); + +# check for optional libraries +while (my ($library, $test) = each %library_tests) { + my $user_library_opt = $opt->{$library}; + my $user_incpath = $user_library_opt->{'incdir'}; + my $user_libs = $user_library_opt->{'libs'}; + + if ($user_incpath && $user_libs) { + $inc .= " -I$user_incpath"; + + # perform some magic + foreach my $user_lib (@$user_libs) { + my ($link_dir, $link_lib) = (dirname($user_lib), basename($user_lib)); + + if (!$is_msvc) { + my @tokens = grep { $_ } split(/(lib|.)/, $link_lib); + shift @tokens if ($tokens[0] eq 'lib'); + $link_lib = shift @tokens; + } + $lib .= " -L$link_dir -l$link_lib"; + } + + my $opts = $library_opts{$library}; + $def .= $opts->{'defines'}; + + print uc($library), " support enabled (user provided)", "\n"; + } elsif (check_lib(%$test)) { + if (exists($test->{'incpath'})) { + if (my $incpath = $test->{'incpath'}) { + $inc .= ' -I'.join (' -I', @$incpath); + } + } + + if (exists($test->{'libpath'})) { + if (my $libpath = $test->{'libpath'}) { + $lib .= ' -L'.join (' -L', @$libpath); + } + } + + my $opts = $library_opts{$library}; + $def .= $opts->{'defines'}; + $lib .= $opts->{'libs'}; + + print uc($library), " support enabled", "\n"; + } else { + print uc($library), " support disabled", "\n"; + } +} + +# universally supported +$def .= ' -DNO_VIZ -DSTDC -DNO_GZIP -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE'; + +# supported on Solaris +if ($is_solaris) { + $def .= ' -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS'; +} + +if ($is_gcc) { + # gcc-like compiler + $ccflags .= ' -Wall -Wno-unused-variable'; + + # clang compiler is pedantic! + if ($is_osx) { + # clang masquerading as gcc + if ($Config{gccversion} =~ /LLVM/) { + $ccflags .= ' -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-function'; + } + } + + if ($is_solaris) { + $ccflags .= ' -std=c99'; + } + + # building with a 32-bit perl on a 64-bit OS may require this (supported by cc and gcc-like compilers, + # excluding some ARM toolchains) + if ($Config{ptrsize} == 4 && $Config{archname} !~ /^armv/) { + $ccflags .= ' -m32'; + } +} elsif ($is_sunpro) { + # probably the SunPro compiler + $def .= ' -D_STDC_C99'; + + $ccflags .= ' -errtags=yes -erroff=E_EMPTY_TRANSLATION_UNIT -erroff=E_ZERO_OR_NEGATIVE_SUBSCRIPT'; + $ccflags .= ' -erroff=E_EMPTY_DECLARATION -erroff=E_STATEMENT_NOT_REACHED'; +} + +# there are no atomic primitives for the Sun Pro compiler in libgit2, so even if pthreads is available +# and perl has been built with threads support, libgit2 cannot use threads under said compiler +if ($Config{usethreads} && !$is_sunpro) { + if (check_lib(lib => 'pthread')) { + $def .= ' -DGIT_THREADS'; + $lib .= ' -lpthread'; + + print "Threads support enabled\n"; + } else { + if ($is_windows) { + $def .= ' -DGIT_THREADS'; + } else { + print "Threads support disabled (pthreads not found)\n"; + } + } +} elsif ($is_sunpro) { + print "Thread support disabled (SunPro compiler detected)\n" +} else { + print "Thread support disabled (perl wasn't built with thread support)\n" +} + +my @deps = glob 'deps/libgit2/deps/{http-parser,zlib}/*.c'; +my @srcs = glob 'deps/libgit2/src/{*.c,transports/*.c,xdiff/*.c}'; +push @srcs, 'deps/libgit2/src/hash/hash_generic.c'; + +# the system regex is broken on Solaris, not available on Windows +if ($is_windows || $is_solaris) { + push @srcs, 'deps/libgit2/deps/regex/regex.c'; + $inc .= ' -Ideps/libgit2/deps/regex'; +} + +if ($is_windows) { + push @srcs, glob 'deps/libgit2/src/{win32,compat}/*.c'; + + $def .= ' -DWIN32 -DGIT_WIN32'; + + if ($is_msvc) { + # visual studio compiler + $def .= ' -D_CRT_SECURE_NO_WARNINGS'; + } else { + # mingw/cygwin + $def .= ' -D_WIN32_WINNT=0x0501 -D__USE_MINGW_ANSI_STDIO=1'; + } +} else { + push @srcs, glob 'deps/libgit2/src/unix/*.c' +} + +# real-time library is required for Solaris and Linux +if ($is_linux || $is_solaris || $is_gkfreebsd) { + $lib .= ' -lrt'; +} + +my @objs = map { substr ($_, 0, -1) . 'o' } (@deps, @srcs); + +sub MY::c_o { + my $out_switch = '-o '; + + if ($is_msvc) { + $out_switch = '/Fo'; + } + + my $line = qq{ +.c\$(OBJ_EXT): + \$(CCCMD) \$(CCCDLFLAGS) "-I\$(PERL_INC)" \$(PASTHRU_DEFINE) \$(DEFINE) \$*.c $out_switch\$@ +}; + return $line; +} + +# This Makefile.PL for {{ $distname }} was generated by Dist::Zilla. +# Don't edit it but the dist.ini used to construct it. +{{ $perl_prereq ? qq[BEGIN { require $perl_prereq; }] : ''; }} +use strict; +use warnings; +use ExtUtils::MakeMaker {{ $eumm_version }}; +use ExtUtils::Constant qw (WriteConstants); + +{{ $share_dir_block[0] }} +my {{ $WriteMakefileArgs }} + +$WriteMakefileArgs{DEFINE} .= $def; +$WriteMakefileArgs{LIBS} .= $lib; +$WriteMakefileArgs{INC} .= $inc; +$WriteMakefileArgs{CCFLAGS} .= $Config{ccflags} . ' '. $ccflags; +$WriteMakefileArgs{OBJECT} .= ' ' . join ' ', @objs; + +unless (eval { ExtUtils::MakeMaker->VERSION(6.56) }) { + my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; + my $pp = $WriteMakefileArgs{PREREQ_PM}; + + for my $mod (keys %$br) { + if (exists $pp -> {$mod}) { + $pp -> {$mod} = $br -> {$mod} + if $br -> {$mod} > $pp -> {$mod}; + } else { + $pp -> {$mod} = $br -> {$mod}; + } + } +} + +delete $WriteMakefileArgs{CONFIGURE_REQUIRES} + unless eval { ExtUtils::MakeMaker -> VERSION(6.52) }; + +my @error_constants = (qw( + OK + ERROR + ENOTFOUND + EEXISTS + EAMBIGUOUS + EBUFS + EUSER + EBAREREPO + EUNBORNBRANCH + EUNMERGED + ENONFASTFORWARD + EINVALIDSPEC + EMERGECONFLICT + ELOCKED + EMODIFIED + PASSTHROUGH + ITEROVER + + ASSERT + USAGE + RESOLVE +)); + +my @category_constants = (qw( + NONE + NOMEMORY + OS + INVALID + REFERENCE + ZLIB + REPOSITORY + CONFIG + REGEX + ODB + INDEX + OBJECT + NET + TAG + TREE + INDEXER + SSL + SUBMODULE + THREAD + STASH + CHECKOUT + FETCHHEAD + MERGE + SSH + FILTER + REVERT + CALLBACK + CHERRYPICK + + INTERNAL +)); + +ExtUtils::Constant::WriteConstants( + NAME => 'Git::Raw::Error', + NAMES => [@error_constants], + DEFAULT_TYPE => 'IV', + C_FILE => 'const-c-error.inc', + XS_FILE => 'const-xs-error.inc', + XS_SUBNAME => '_constant', + C_SUBNAME => '_error_constant', +); + +ExtUtils::Constant::WriteConstants( + NAME => 'Git::Raw::Error::Category', + NAMES => [@category_constants], + DEFAULT_TYPE => 'IV', + C_FILE => 'const-c-category.inc', + XS_FILE => 'const-xs-category.inc', + XS_SUBNAME => '_constant', + C_SUBNAME => '_category_constant', +); + +WriteMakefile(%WriteMakefileArgs); +exit(0); + +sub usage { + print STDERR << "USAGE"; +Usage: perl $0 [options] + +Possible options are: + --with-openssl-include= Specify for the root of the OpenSSL installation. + --with-openssl-libs= Specify for the OpenSSL libraries. + --with-libssh2-include= Specify for the root of the libssh2 installation. + --with-libssh2-lib= Specify for the libssh2 library. +USAGE + + exit(1); +} + +{{ $share_dir_block[1] }} +TEMPLATE + + return $template; +}; + +override _build_WriteMakefile_args => sub { + return +{ + %{ super() }, + INC => '-I. -Ideps/libgit2 -Ideps/libgit2/src -Ideps/libgit2/include -Ideps/libgit2/deps/http-parser -Ideps/libgit2/deps/zlib', + OBJECT => '$(O_FILES)', + } +}; + +__PACKAGE__ -> meta -> make_immutable; diff --git a/lib/Git/Raw.pm b/lib/Git/Raw.pm new file mode 100644 index 00000000..acaad946 --- /dev/null +++ b/lib/Git/Raw.pm @@ -0,0 +1,60 @@ +package Git::Raw; + +use strict; +use warnings; + +require XSLoader; +XSLoader::load('Git::Raw', $Git::Raw::VERSION); + +use Git::Raw::Error; +use Git::Raw::Error::Category; +use Git::Raw::Reference; +use Git::Raw::Repository; + +=for HTML + + Build Status + + + Coverage Status + +=cut + +=head1 NAME + +Git::Raw - Perl bindings to the Git linkable library (libgit2) + +=head1 DESCRIPTION + +L is a pure C implementation of the Git core +methods provided as a re-entrant linkable library designed to be fast and +portable with a solid API. This module provides Perl bindings to the libgit2 +API. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head2 features( ) + +List of (optional) compiled in features. Git::Raw may be built with support +for threads, HTTPS and SSH. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw diff --git a/lib/Git/Raw/Blame.pm b/lib/Git/Raw/Blame.pm new file mode 100644 index 00000000..3b4cf06a --- /dev/null +++ b/lib/Git/Raw/Blame.pm @@ -0,0 +1,59 @@ +package Git::Raw::Blame; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Blame - Git blame class + +=head1 DESCRIPTION + +A C represents the blame information for a file. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 hunk_count( ) + +Retrieve the number of hunks that exist in the blame structure. + +=head2 hunks( [$index] ) + +Returns a list of L objects. If C<$index> is specified +only the hunk at the specified index will be returned. + +=head2 buffer( $buffer ) + +Retrieve a new L object, created from this reference +L object and C<$buffer>, a file that has been modified in +memory. + +=head2 line( $line_no ) + +Retrieve the L that relates to the given line number in +the newest commit. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Blame diff --git a/lib/Git/Raw/Blame/Hunk.pm b/lib/Git/Raw/Blame/Hunk.pm new file mode 100644 index 00000000..0a571dfd --- /dev/null +++ b/lib/Git/Raw/Blame/Hunk.pm @@ -0,0 +1,70 @@ +package Git::Raw::Blame::Hunk; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Blame::Hunk - Git blame hunk class + +=head1 DESCRIPTION + +A C represents a hunk in the blame information of a file. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 lines_in_hunk( ) + +Retrieve the number of lines in the hunk. + +=head2 final_commit_id( ) + +Retrieve the id of the commit where this line was last changed as a string. + +=head2 final_start_line_number( ) + +Retrieve the 1-based line number where this hunk begins in the final version +of the file. + +=head2 orig_commit_id( ) + +Retrieve the id of the commit where this hunk was found. This will usually +be the same as C<"final_commit_id">. + +=head2 orig_start_line_number( ) + +Retrieve the 1-based line number where this hunk begins in the file named by +C<"orig_path"> in the commit specified by C<"orig_commit_id">. + +=head2 orig_path( ) + +Retrieve the path to the file where this hunk originated. + +=head2 boundary( ) + +If the hunk has been tracked to a boundary commit. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Blame::Hunk diff --git a/lib/Git/Raw/Blob.pm b/lib/Git/Raw/Blob.pm new file mode 100644 index 00000000..cdb683a4 --- /dev/null +++ b/lib/Git/Raw/Blob.pm @@ -0,0 +1,70 @@ +package Git::Raw::Blob; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Blob - Git blob class + +=head1 DESCRIPTION + +A C represents a Git blob. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo, $buffer ) + +Create a new blob from the given buffer. + +=head2 lookup( $repo, $id ) + +Retrieve the blob corresponding to C<$id>. This function is pretty much the +same as C<$repo-Elookup($id)> except that it only returns blobs. + +=head2 content( ) + +Retrieve the raw content of a blob. + +=head2 size( ) + +Retrieve the size of the raw content of a blob. + +=head2 id( ) + +Return the raw ID (the SHA-1 hash) of the blob. + +=head2 is_blob( ) + +Returns true. + +=cut + +=head2 is_tree( ) + +Returns false. + +=cut + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Blob diff --git a/lib/Git/Raw/Branch.pm b/lib/Git/Raw/Branch.pm new file mode 100644 index 00000000..3bdc2076 --- /dev/null +++ b/lib/Git/Raw/Branch.pm @@ -0,0 +1,82 @@ +package Git::Raw::Branch; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Branch - Git branch class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # create a new branch named 'some_branch' + $repo -> branch('some_branch', $repo -> head -> target); + +=head1 DESCRIPTION + +Helper class for branch manipulation. Note that a Git branch is nothing more +than a L, so this class inherits all methods from it. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo, $name, $target ) + +Create a new branch given a name and a target object (either a +L or a L). + +=head2 lookup( $repo, $name, $is_local ) + +Retrieve the branch corresponding to the given branch name. + +=head2 move( $name, $force ) + +Rename the branch to C<$name>. Note that in order to get the updated branch +object, an additional Clookup()> is needed. + +=head2 upstream( ) + +Retrieve the reference supporting the remote tracking branch, given the local +branch. If there is no corresponding supporting reference, this function will +return C. + +=head2 upstream_name( ) + +Return the name of the reference supporting the remote tracking branch, given +the the local branch. + +=head2 remote_name( ) + +Return the name of remote that the remote tracking branch belongs to, given +the local branch. + +=head2 is_head( ) + +Check if the current local branch is pointed at by HEAD. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Branch diff --git a/lib/Git/Raw/Commit.pm b/lib/Git/Raw/Commit.pm new file mode 100644 index 00000000..3b3fdd33 --- /dev/null +++ b/lib/Git/Raw/Commit.pm @@ -0,0 +1,130 @@ +package Git::Raw::Commit; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Commit - Git commit class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # add a file to the repository default index + my $index = $repo -> index; + $index -> add('test'); + $index -> write; + + # create a new tree out of the repository index + my $tree_id = $index -> write_tree; + my $tree = $repo -> lookup($tree_id); + + # retrieve user's name and email from the Git configuration + my $config = $repo -> config; + my $name = $config -> str('user.name'); + my $email = $config -> str('user.email'); + + # create a new Git signature + my $me = Git::Raw::Signature -> now($name, $email); + + # create a new commit out of the above tree, with the repository HEAD as + # parent + my $commit = $repo -> commit( + 'some commit', $me, $me, [ $repo -> head -> target ], $tree + ); + +=head1 DESCRIPTION + +A C represents a Git commit. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo, $msg, $author, $committer, [@parents], $tree [, $update_ref ] ) + +Create a new commit given a message, two L (one is the +commit author and the other the committer), a list of parent commits and a +L. If C<$update_ref> is provided and is defined, the reference +with the corresponding name is automatically updated or created. If +C<$update_ref> is C, no reference is updated. If C<$update_ref> is not +provided, "HEAD" is updated. + +=head2 lookup( $repo, $id ) + +Retrieve the commit corresponding to C<$id>. This function is pretty much the +same as C<$repo-Elookup($id)> except that it only returns commits. + +=head2 id( ) + +Retrieve the id of the commit, as string. + +=head2 message( ) + +Retrieve the message of the commit. + +=head2 summary( ) + +Retrieve the summary of the commit. + +=head2 author( ) + +Retrieve the L representing the author of the commit. + +=head2 committer( ) + +Retrieve the L representing the committer. + +=head2 time( ) + +Retrieve the committer time of the commit. + +=head2 offset( ) + +Retrieve the committer time offset (in minutes) of the commit. + +=head2 tree( ) + +Retrieve the L the commit points to. + +=head2 parents( ) + +Retrieve the list of parents of the commit. + +=head2 merge( $commit, [ \%merge_opts ]) + +Merge C<$commit> into this commit. See Cmerge()> +for valid C<%merge_opts> values. Returns a L object +containing the merge result. + +=head2 ancestor( $gen ) + +Retrieve the L object that is the C<$gen>'th generation +ancestor of this commit, following only the first parents. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Commit diff --git a/lib/Git/Raw/Config.pm b/lib/Git/Raw/Config.pm new file mode 100644 index 00000000..11f07b0d --- /dev/null +++ b/lib/Git/Raw/Config.pm @@ -0,0 +1,83 @@ +package Git::Raw::Config; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Config - Git config class + +=head1 DESCRIPTION + +A C represents a Git configuration file. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 new( ) + +Create a new config object. + +=head2 default( ) + +Retrieve the global, XDG and system configuration and open them into a single +prioritized config object that can be used when accessing default config data +outside a repository + +=head2 add_file( $path, $level ) + +Add C<$path> to the config object with priority level C<$level>. + +=head2 bool( $name [, $value ] ) + +Retrieve the value of the C<$name> configuration field of type boolean. If +C<$value> is passed, the value of the configration will be updated and +returned. If C<$name> configuration is not found, C is returned. + +=head2 int( $name [, $value ] ) + +Retrieve the value of the C<$name> configuration field of type integer. If +C<$value> is passed, the value of the configration will be updated and +returned. If C<$name> configuration is not found, C is returned. + +=head2 str( $name [, $value ] ) + +Retrieve the value of the C<$name> configuration field of type string. If +C<$value> is passed, the value of the configration will be updated and +returned. If C<$name> configuration is not found, C is returned. + +=head2 foreach( $callback ) + +Run C<$callback> for every config entry. The callback receives the name of the +config entry, its value and its priority level. A non-zero return value stops +the loop. + +=head2 refresh( ) + +Reload the config files from disk. + +=head2 delete( $name ) + +Delete the variable C<$name> from the config object. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Config diff --git a/lib/Git/Raw/Cred.pm b/lib/Git/Raw/Cred.pm new file mode 100644 index 00000000..69d84783 --- /dev/null +++ b/lib/Git/Raw/Cred.pm @@ -0,0 +1,78 @@ +package Git::Raw::Cred; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::Cred - Git credentials class + +=head1 DESCRIPTION + +A C object is used to store credentials. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 userpass( $user, $pass ) + +Create a new credential object with the given username and password. + +=head2 sshkey( $user, $public, $private [, $pass ] ) + +Create a new credential object given a SSH public and private key files, and +optionall the password of the private key. If the SSH support has not been +enabled at build-time, this method will always return C. + +=head2 sshagent( $user ) + +Create a new credential object used for querying an ssh-agent. If the SSH +support has not been enabled at build-time, this method will always return +C. + +=head2 sshinteractive( $user, $callback ) + +Create a new credential object based on interactive authentication. The +callback C<$callback> will be invoked when the remote-side issues a challenge. +It receives the following parameters: C<$name>, C<$instruction> and +C<@prompts>. Any of the parameters passed to the callback may be undefined. +Each C<$prompt> entry in C<@prompts> is a hash reference that may contain: + +=over 4 + +=item * "text" + +Text for the prompt. + +=item * "echo" + +Parameter indicating whether the response of the challenge is safe +to be echoed. + +=back + +The callback should return a list of responses, one for each prompt. +If the SSH support has not been enabled at build-time, this method will always +return C. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Cred diff --git a/lib/Git/Raw/Diff.pm b/lib/Git/Raw/Diff.pm new file mode 100644 index 00000000..638fdbf7 --- /dev/null +++ b/lib/Git/Raw/Diff.pm @@ -0,0 +1,183 @@ +package Git::Raw::Diff; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Diff - Git diff class + +=head1 DESCRIPTION + +A C represents the diff between two entities. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 merge( $from ) + +Merge the given diff with the L C<$from>. + +=head2 delta_count( ) + +Query how many diff records there are in the diff. + +=head2 find_similar( [\%options] ) + +Transform the diff marking file renames, copies, etc. Valid fields for the +C<%options> hash include: + +=over 4 + +=item * "flags" + +Flags for finding similar files. Valid values include: + +=over 8 + +=item * "renames" + +Look for renames. + +=item * "renames_from_rewrites" + +Consider old side of modifies files for renames. + +=item * "copies" + +Look for copies. + +=item * "copies_from_unmodified" + +Consider unmodified files as copy sources. + +=item * "rewrites" + +Mark significant rewrites for split. + +=item * "break_rewrites" + +Actually split large rewrites into delete/add pairs. + +=item * "untracked" + +Find renames/copies for untracked items in the working directory. + +=item * "all" + +Turn on all finding features. + +=item * "ignore_leading_whitespace" + +Measure similarity ignoring leading whitespace (default). + +=item * "ignore_whitespace" + +Measure similarity ignoring all whitespace. + +=item * "dont_ignore_whitespace" + +Measure similarity including all data. + +=item * "exact_match_only" + +Measure similarity only by comparing SHAs (fast and cheap). + +=item * "break_rewrites_for_renames_only" + +Do not break rewrites unless they contribute to a rename. + +=item * "remove_unmodified" + +Remove any unmodified deltas after C is done. + +=back + +=item * "rename_threshold" + +Similarity to consider a file renamed (default 50). + +=item * "rename_from_rewrite_threshold" + +Similarity of modified to be eligible rename source (default 50). + +=item * "copy_threshold" + +Similarity to consider a file a copy (default 50). + +=item * "break_rewrite_threshold" + +Similarity to split modify into delete/add pair (default 60). + +=item * "rename_limit" + +Maximum similarity sources to examine for a file (default 200). + +=back + +=head2 patches( ) + +Return a list of C objects for the diff. + +=head2 print( $format, $callback ) + +Generate text output from the diff object. The C<$callback> will be called for +each line of the diff with two arguments: the first one represents the type of +the patch line (C<"ctx"> for context lines, C<"add"> for additions, C<"del"> +for deletions, C<"file"> for file headers, C<"hunk"> for hunk headers or +C<"bin"> for binary data) and the second argument contains the content of the +patch line. + +The C<$format> can be one of the following: + +=over 4 + +=item * "patch" + +Full git diff. + +=item * "patch_header" + +Only the file headers of the diff. + +=item * "raw" + +Like C. + +=item * "name_only" + +Like C. + +=item * "name_status" + +Like C. + +=back + +=head2 stats( ) + +Accumlated diff statistics for all patches in the diff. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Diff diff --git a/lib/Git/Raw/Diff/Delta.pm b/lib/Git/Raw/Diff/Delta.pm new file mode 100644 index 00000000..6a48a2b5 --- /dev/null +++ b/lib/Git/Raw/Diff/Delta.pm @@ -0,0 +1,119 @@ +package Git::Raw::Diff::Delta; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Diff::Delta - Git diff delta class + +=head1 DESCRIPTION + +A C represents a delta in the diff between two entities. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 status( ) + +Retrieve the status of the delta. Returns one of the following: + +=over 4 + +=item * "unmodified" + +No changes. + +=item * "added" + +The entry does not exist in the old version. + +=item * "deleted" + +The entry does not exist in the new version. + +=item * "modified" + +The entry content changed between the old and new versions. + +=item * "renamed" + +The entry was renamed between the old and new versions. + +=item * "copied" + +The entry was copied from another old entry. + +=item * "ignored" + +The entry is an ignored item in the working directory. + +=item * "untracked" + +The entry is an untracked item in the working directory. + +=item * "type_change" + +The type of the entry changed between the old and new versions. + +=back + +=head2 flags( ) + +Retrieve the flags associated with the delta. Returns an array reference +with zero or more of the following: + +=over 4 + +=item * "binary" + +Files treated as binary data. + +=item * "valid_id" + +C<"id"> value is known correct. + +=back + +=head2 similarity( ) + +Retrieve the similarity score between 0 and 100 between C<"old_file"> +and C<"new_file">. + +=head2 file_count( ) + +Retrieve the number of files in the delta. + +=head2 old_file( ) + +The C<"old_file"> represents the C<"from"> side of the diff. Returns +a L object. + +=head2 new_file( ) + +The C<"new_file"> represents to C<"to"> side of the diff. Returns +a L object. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Diff::Delta diff --git a/lib/Git/Raw/Diff/File.pm b/lib/Git/Raw/Diff/File.pm new file mode 100644 index 00000000..5a5b9e5c --- /dev/null +++ b/lib/Git/Raw/Diff/File.pm @@ -0,0 +1,88 @@ +package Git::Raw::Diff::File; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Diff::File - Git diff file class + +=head1 DESCRIPTION + +A C represents one side of a diff delta. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 id( ) + +Retrieve the id of the diff file as a string. + +=head2 path( ) + +Retrieve the path of the diff file. + +=head2 size( ) + +Retrieve the size of the diff file. + +=head2 flags( ) + +Retrieve the flags associated with the delta. Returns an array reference +with zero or more of the following: + +=over 4 + +=item * "binary" + +Files treated as binary data. + +=item * "valid_id" + +C<"id"> value is known correct. + +=back + +=head2 mode( ) + +Retrieve the diff file mode. Returns one of the following: + +=over 4 + +=item * "new" + +=item * "tree" + +=item * "blob" + +=item * "blob_executable" + +=item * "link" + +=item * "commit" + +=back + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Diff::File diff --git a/lib/Git/Raw/Diff/Hunk.pm b/lib/Git/Raw/Diff/Hunk.pm new file mode 100644 index 00000000..4fb38bbf --- /dev/null +++ b/lib/Git/Raw/Diff/Hunk.pm @@ -0,0 +1,59 @@ +package Git::Raw::Diff::Hunk; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Diff::Hunk - Git diff hunk class + +=head1 DESCRIPTION + +A C represents a hunk in a patch. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 old_start( ) + +Starting line number in C<"old_file">. + +=head2 old_lines( ) + +Number of lines in C<"old_file">. + +=head2 new_start( ) + +Starting line number in C<"new_file">. + +=head2 new_lines( ) + +Number of lines in C<"new_file">. + +=head2 header( ) + +Header text. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Diff::Hunk diff --git a/lib/Git/Raw/Diff/Stats.pm b/lib/Git/Raw/Diff/Stats.pm new file mode 100644 index 00000000..46d96be9 --- /dev/null +++ b/lib/Git/Raw/Diff/Stats.pm @@ -0,0 +1,81 @@ +package Git::Raw::Diff::Stats; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Diff::Stats - Git diff statistics class + +=head1 DESCRIPTION + +A C represents diff statistics. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 deletions( ) + +Total number of deletions in the diff. + +=head2 insertions( ) + +Total number of insertions in the diff. + +=head2 files_changed( ) + +Total number of files changed in the diff. + +=head2 buffer( [\%options] ) + +=over 4 + +=item * "flags" + +Flags for generating the diff stats buffer. Valid values include: + +=over 8 + +=item * "full" + +Full statistics similar to core git's C<--stat>. + +=item * "short" + +Short statistics similar to core git's C<--shortstat>. + +=item * "number" + +Number statistics similar to core git's C<--numstat>. + +=item * "summary" + +Include extended header information such as creations, renames and mode changes. + +=back + +=back + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Diff::Stats diff --git a/lib/Git/Raw/Error.pm b/lib/Git/Raw/Error.pm new file mode 100644 index 00000000..dbd4879e --- /dev/null +++ b/lib/Git/Raw/Error.pm @@ -0,0 +1,76 @@ +package Git::Raw::Error; + +use strict; +use warnings; +use Carp; + +use overload + '""' => sub { return $_[0] -> message }, + '0+' => sub { return $_[0] -> code }, + 'bool' => sub { return $_[0] -> _is_error }, + 'fallback' => 1; + +sub AUTOLOAD { + # This AUTOLOAD is used to 'autoload' constants from the constant() + # XS function. + + my $constname; + our $AUTOLOAD; + ($constname = $AUTOLOAD) =~ s/.*:://; + croak "&Git::Raw::Error::constant not defined" if $constname eq '_constant'; + my ($error, $val) = _constant($constname); + if ($error) { croak $error; } + { + no strict 'refs'; + *$AUTOLOAD = sub { $val }; + } + goto &$AUTOLOAD; +} + +use Git::Raw; + +=head1 NAME + +Git::Raw::Error - Error class + +=head1 DESCRIPTION + +A C represents an error. A C may be the result +of a libgit2 error, or may be generated internally due to misuse of the API. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 message( ) + +Error message. + +=head2 code( ) + +Error code. + +=head2 category( ) + +The category (class) or source of the error. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Error diff --git a/lib/Git/Raw/Error/Category.pm b/lib/Git/Raw/Error/Category.pm new file mode 100644 index 00000000..5a037694 --- /dev/null +++ b/lib/Git/Raw/Error/Category.pm @@ -0,0 +1,55 @@ +package Git::Raw::Error::Category; + +use strict; +use warnings; +use Carp; + +sub AUTOLOAD { + # This AUTOLOAD is used to 'autoload' constants from the constant() + # XS function. + + my $constname; + our $AUTOLOAD; + ($constname = $AUTOLOAD) =~ s/.*:://; + croak "&Git::Raw::Error::Category::constant not defined" if $constname eq '_constant'; + my ($error, $val) = _constant($constname); + if ($error) { croak $error; } + { + no strict 'refs'; + *$AUTOLOAD = sub { $val }; + } + goto &$AUTOLOAD; +} + +use Git::Raw; + +=head1 NAME + +Git::Raw::Error::Category - Error category class + +=head1 DESCRIPTION + +A C represents an error category or classification. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Error::Category diff --git a/lib/Git/Raw/Filter.pm b/lib/Git/Raw/Filter.pm new file mode 100644 index 00000000..51e347a0 --- /dev/null +++ b/lib/Git/Raw/Filter.pm @@ -0,0 +1,103 @@ +package Git::Raw::Filter; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Filter - Git filter class + +=head1 DESCRIPTION + +A C represents a Git filter. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $name, $attributes) + +Create a filter. C<$name> is a name by which the filter can be referenced. +C<$attributes> is a whitespace-separated list of attribute names to check for +this filter (e.g. C<"eol crlf text">). If the attribute name is bare, it will +be simply loaded and passed to the C<"check"> callback. If it has a value +(i.e. "name=value"), the attribute must match that value for the filter to +be applied. + +=head2 callbacks( \%callbacks ) + +Set the callbacks for the filter. C<%callbacks> may specificy the following +callbacks. + +=over 4 + +=item * "initialize" + +Optional callback to be invoked before a filter is first used. It will be +called once at most. + +=item * "shutdown" + +Optional callback to be invoked when the filter is unregistered or when +the library is shutting down. It will be called once at most. This may be +called even if C<"initialize"> has never been called. + +=item * "check" + +Optional callback that checks if filtering is needed for a given source. +The callback receives the following parameters: The filter source, a +L object. + +If the filter should be applied, COK> should be returned. +If the filter should be skipped, CPASSTHROUGH> should be +returned. + +=item * "apply" + +Callback that actually filters data. + +The callback receives the following parameters: The filter source, a +L object, C<$from> the source data and C<$to>, +a scalar reference where the output should be written to. + +If the filter successfully writes the output, COK> should +be returned. If the filter failed, CERROR> should be +returned. If the filter does not want to run, CPASSTHROUGH> +should be returned. + +=item * "cleanup" + +Opitional callback to clean up after filtering has been applied. + +=back + +=head2 register( $priority ) + +Register the filter with priority C<$priority>. + +=head2 unregister( ) + +Remove the filter. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Filter diff --git a/lib/Git/Raw/Filter/Source.pm b/lib/Git/Raw/Filter/Source.pm new file mode 100644 index 00000000..93b4b17c --- /dev/null +++ b/lib/Git/Raw/Filter/Source.pm @@ -0,0 +1,70 @@ +package Git::Raw::Filter::Source; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Filter::Source - Git filter source class + +=head1 DESCRIPTION + +A C represents a Git filter source. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 id( ) + +Retrieve the id of the filter source as a string. + +=head2 path( ) + +Retrieve the path that the filter source data is coming from. + +=head2 file_mode( ) + +Retrieve the file mode of the source file, as an integer. If the mode +is unknown, this will return 0. + +=head2 mode( ) + +Retrieve the mode to be applied. Possible values include: + +=over 4 + +=item * "to_worktree" + +The file is being exported from the Git object database to the working +directory. + +=item * "to_odb" + +The file is being import from the working directory to the Git object +database. + +=back + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Filter::Source diff --git a/lib/Git/Raw/Graph.pm b/lib/Git/Raw/Graph.pm new file mode 100644 index 00000000..1604af24 --- /dev/null +++ b/lib/Git/Raw/Graph.pm @@ -0,0 +1,60 @@ +package Git::Raw::Graph; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Graph - Git graph class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + my $commit1 = Git::Raw::Commit -> lookup($repo, + '4a202b346bb0fb0db7eff3cffeb3c70babbd2045'); + + my $commit2 = Git::Raw::Commit -> lookup($repo, + '5b5b025afb0b4c913b4c338a42934a3863bf3644'); + + if (Git::Raw::Graph -> is_descendant_of($repo, $commit1, $commit2)) { + print $commit1 -> id, ' is a descendant of ', $commit2 -> id, "\n"; + } else { + print $commit1 -> id, ' is a not descendant of ', $commit2 -> id, "\n"; + } + +=head1 DESCRIPTION + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + + +=head2 is_descendant_of( $repo, $commitish, $ancestor ) + +Determine if C<$commitish> is the descendant of C<$ancestor>. C<$commitish> +and C<$ancestor> should be peelable to a L object, that is, +it should be a L or L object, or +alternatively a commit id or commit id prefix. + +=head1 AUTHOR + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Jacques Germishuys. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Graph diff --git a/lib/Git/Raw/Index.pm b/lib/Git/Raw/Index.pm new file mode 100644 index 00000000..60ff780b --- /dev/null +++ b/lib/Git/Raw/Index.pm @@ -0,0 +1,169 @@ +package Git::Raw::Index; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Index - Git index class + +=head1 DESCRIPTION + +A C represents an index in a Git repository. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 add( $entry ) + +Add C<$entry> to the index. C<$entry> should either be the path of a file +or alternatively a L. + +=head2 add_all( \%opts ) + +Add or update all index entries to match the working directory. Valid fields for +the C<%opts> hash are: + +=over 4 + +=item * "paths" + +List of path patterns to add. + +=item * "flags" + +Valid fields for the C<%flags> member: + +=over 8 + +=item * "force" + +Forced addition of files (even if they are ignored). + +=item * "disable_pathspec_match" + +Disable pathspec pattern matching against entries in C<$paths>. + +=item * "check_pathspec" + +Enable pathspec pattern matching against entries in C<$paths> (default). + +=back + +=item * "notification" + +The callback to be called for each added or updated item. Receives the C<$path> +and matching C<$pathspec>. This callback should return C<0> if the file should +be added to the index, C0> if it should be skipped or C0> to abort. + +=back + +=head2 remove( $path ) + +Remove C<$path> from the index. + +=head2 remove_all( \%opts ) + +Remove all matching index entries. See Cupdate_all()> for +valid C<%opts> values. + +=head2 path( ) + +Retrieve the full path to the index file on disk. + +=head2 clear( ) + +Clear the index. + +=head2 read( [$force] ) + +Update the index reading it from disk. + +=head2 write( ) + +Write the index to disk. + +=head2 read_tree( $tree ) + +Replace the index contente with C<$tree>. + +=head2 write_tree( [$repo] ) + +Create a new tree from the index and write it to disk. C<$repo> optionally +indicates which L the tree should be written to. + +=head2 checkout( [\%checkout_opts] ) + +Update files in the working tree to match the contents of the index. +See Ccheckout()> for valid +C<%checkout_opts> values. + +=head2 entries( ) + +Retrieve index entries. Returns a list of L objects. + +=head2 remove_conflict( $file ) + +Remove C<$file> from the index. + +=head2 has_conflicts( ) + +Determine if the index contains entries representing file conflicts. + +=head2 conflict_cleanup( ) + +Remove all conflicts in the index (entries with a stage greater than 0). + +=head2 conflicts( ) + +Retrieve index entries that represent a conflict. Returns a list of +L objects. + +=head2 update_all( \%opts ) + +Update all index entries to match the working directory. Valid fields for the +C<%opts> hash are: + +=over 4 + +=item * "paths" + +List of path patterns to add. + +=item * "notification" + +The callback to be called for each updated item. Receives the C<$path> and +matching C<$pathspec>. This callback should return C<0> if the file should be +added to the index, C0> if it should be skipped or C0> to abort. + +=back + +=head2 capabilities( ) + +Retrieve the index's capabilities. Returns a hash with members C<"ignore_case">, +C<"no_filemode"> and C<"no_symlinks">, each indicating if the L +supports the capability. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Index diff --git a/lib/Git/Raw/Index/Entry.pm b/lib/Git/Raw/Index/Entry.pm new file mode 100644 index 00000000..ad5d9c04 --- /dev/null +++ b/lib/Git/Raw/Index/Entry.pm @@ -0,0 +1,55 @@ +package Git::Raw::Index::Entry; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Index::Entry - Git index entry class + +=head1 DESCRIPTION + +A C represents an index entry in a Git repository index. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 id( ) + +Retrieve the id of the index entry as a string. + +=head2 path( ) + +Retrieve the path of the index entry. + +=head2 size( ) + +Retrieve the size of the index entry. + +=head2 stage( ) + +Retrieve the stage number for the index entry. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Index::Entry diff --git a/lib/Git/Raw/Patch.pm b/lib/Git/Raw/Patch.pm new file mode 100644 index 00000000..bc9035db --- /dev/null +++ b/lib/Git/Raw/Patch.pm @@ -0,0 +1,62 @@ +package Git::Raw::Patch; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Patch - Git patch class + +=head1 DESCRIPTION + +A C represents all the text diffs for a delta. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 buffer( ) + +Get the content of a patch as a single diff text. + +=head2 hunk_count( ) + +Get the number of hunks in the patch. + +=head2 hunks( [$index] ) + +Returns a list of L objects. If C<$index> is specified +only the hunk at the specified index will be returned. + +=head2 line_stats( ) + +Get line counts of each type in the patch. Returns a hash with entries +C<"context">, C<"additions"> and C<"deletions">. + +=head2 delta( ) + +Get the delta associated with the patch. Returns a L +object. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Patch diff --git a/lib/Git/Raw/PathSpec.pm b/lib/Git/Raw/PathSpec.pm new file mode 100644 index 00000000..f8823770 --- /dev/null +++ b/lib/Git/Raw/PathSpec.pm @@ -0,0 +1,87 @@ +package Git::Raw::PathSpec; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::PathSpec - Git pathspec class + +=head1 DESCRIPTION + +A C represents a Git pathspec. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 new( @paths ) + +Compile a new pathspec. C<@match> is the list of paths to match. + +=head2 match( $object [, \%options] ) + +Math the pathspec against C<$object>. C<$object> could be a +L (matches against the working directory), +L (matches against the index), L (matches +against the tree) or a L (matches against the diff). Returns +a L object. Valid fields for C<%options> are: + +=over 4 + +=item * "flags" + +Flags for the matches. Valid values include: + +=over 8 + +=item * "ignore_case" + +Forces match to ignore case, otherwise the match will use native case +sensitivity of the platform's filesystem. + +=item * "use_case" + +Forces case sensitive match, otherwise the match will use native case +sensitivity of the platform's filesystem. + +=item * "no_glob" + +Disables glob patterns and just uses simple string comparison for matching. + +=item * "no_match_error" + +C should return an error code if no matches were found. + +=item * "find_failures" + +Record patterns that did not match. + +=item * "failures_only" + +Only determine if there were patterns that did not match. + +=back + +=back + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::PathSpec diff --git a/lib/Git/Raw/PathSpec/MatchList.pm b/lib/Git/Raw/PathSpec/MatchList.pm new file mode 100644 index 00000000..f71c81fc --- /dev/null +++ b/lib/Git/Raw/PathSpec/MatchList.pm @@ -0,0 +1,53 @@ +package Git::Raw::PathSpec::MatchList; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::PathSpec::MatchList - Git pathspec class + +=head1 DESCRIPTION + +A C represents a Git pathspec list of matches. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 count( ) + +Retrieve the number of succesful match entries. + +=head2 entries( ) + +Retrieve the sucessful match entries. Returns a list of strings. + +=head2 failed_count( ) + +Retrieve the number of failed entries. + +=head2 failed_entries( ) + +Retrieve the failed entries. Returns a list of strings. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::PathSpec::MatchList diff --git a/lib/Git/Raw/Push.pm b/lib/Git/Raw/Push.pm new file mode 100644 index 00000000..b675cd5d --- /dev/null +++ b/lib/Git/Raw/Push.pm @@ -0,0 +1,140 @@ +package Git::Raw::Push; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::Push - Git push class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # add a new remote + my $remote = Git::Raw::Remote -> create($repo, 'origin', $url); + + # set the acquire credentials callback + $remote -> callbacks({ + credentials => sub { Git::Raw::Cred -> userpass($usr, $pwd) } + }); + + # connect the remote + $remote -> connect('push'); + + # create a push object + my $push = Git::Raw::Push -> new($remote); + + # add a refspec + my $spec = "refs/heads/master:refs/heads/master"; + $push -> add_refspec($spec); + $push -> callbacks({ + 'status' => sub { + my ($ref, $msg) = @_; + + if (!defined($msg)) { + print "Updated $ref", "\n"; + } else { + print STDERR "Update failed: $ref: $msg", "\n"; + } + }, + 'pack_progress' => sub { + my ($stage, $current, $total) = @_; + print "Packed $current objects\r"; + } + }); + + # actually perform the push + $push -> finish; + if ($push -> update_ok) { + print "References updated successfully", "\n"; + } else { + print STDERR "Not all references updated", "\n"; + } + + $push -> update_tips; + + # disconnect the remote + $remote -> disconnect; + + # now fetch from the remote + $remote -> connect('fetch'); + $remote -> download; + $remote -> update_tips; + $remote -> disconnect; + +=head1 DESCRIPTION + +Helper class for pushing. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 new( $remote ) + +Create a new push object. + +=head2 add_refspec( $spec ) + +Add the C<$spec> refspec to the push object. Note that C<$spec> is a string. + +=head2 callbacks( \%callbacks ) + +=over 4 + +=item * "transfer_progress" + +During the upload of new data, this will reguarly be called with the transfer +progress. The callback receives the following integers: +C, C and C. + +=item * "pack_progress" + +During the packing of new data, this will reguarly be called with the progress +of the pack operation. Be aware that this is called inline with pack +building operations, so performance may be affected. The callback receives the +following integers: +C, C and C. + +=item * "status" + +For each of the updated references, this will be called with a status report +for the reference. The callback receives C and C as strings. If +C is defined, the reference mentioned in C has not been updated. + +=back + +=head2 finish( ) + +Actually push. + +=head2 unpack_ok( ) + +Check if the remote successfully unpacked. + +=head2 update_tips( ) + +Update the tips to the new status. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Push diff --git a/lib/Git/Raw/RefSpec.pm b/lib/Git/Raw/RefSpec.pm new file mode 100644 index 00000000..7400068b --- /dev/null +++ b/lib/Git/Raw/RefSpec.pm @@ -0,0 +1,76 @@ +package Git::Raw::RefSpec; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::RefSpec - Git refspec class + +=head1 DESCRIPTION + +A C represents a Git refspec. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 dst( ) + +Retrieve the destination specifier of the refspec. + +=head2 dst_matches( $name ) + +Check if the refspec's destination descriptor matches the reference named +by C<$name>. + +=head2 src( ) + +Retrieve the source specifier of the refspec. + +=head2 src_matches( $name ) + +Check if the refspec's source descriptor matches the reference named +by C<$name>. + +=head2 string( ) + +Get the refspec's string. + +=head2 direction( ) + +Get the refspec's direction. It is either C<"fetch"> or C<"push">. + +=head2 transform( $name ) + +Transform C<$name> to its target following the refspec's rules. + +=head2 rtransform( $name ) + +Transform the target reference C<$name> to its source reference name following +the refspec's rules. + +=head2 is_force( ) + +Get the refspec's force update setting. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::RefSpec diff --git a/lib/Git/Raw/Reference.pm b/lib/Git/Raw/Reference.pm new file mode 100644 index 00000000..43d5121a --- /dev/null +++ b/lib/Git/Raw/Reference.pm @@ -0,0 +1,109 @@ +package Git::Raw::Reference; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Reference - Git reference class + +=head1 DESCRIPTION + +A C represents a Git reference. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 lookup( $name, $repo ) + +Retrieve the reference with name C<$name> in C<$repo>. + +=head2 create( $name, $repo, $object [, $force] ) + +Creates and returns a new direct reference named C<$name> in C<$repo> pointing +to C<$object>. C<$object> can be a L, L, +or a L object. If C<$force> is a truthy value, any existing +reference is overwritten. If C<$force> is falsy (the default) and a reference +named C<$name> already exists, an error is thrown. + +=head2 delete( ) + +Delete the reference. The L object must not be accessed +afterwards. + +=head2 name( ) + +Retrieve the name of the reference. + +=head2 shorthand( ) + +Get the reference's short name. This will transform the reference name into a +"human-readable" version. If no shortname is appropriate, it will return the +full name. + +=head2 type( ) + +Retrieve the type of the reference. Can be either C<"direct"> or C<"symbolic">. + +=head2 target( [$new_target] ) + +Retrieve the target of the reference. If the C<$new_target> parameter of type +L is passed, the reference will be changed to point to it. + +Note that updating the target will invalidate all existing handles to the +reference. + +This function returns either an object (L, L, +L or L) for direct references, or another +reference for symbolic references. + +=head2 reflog( ) + +Retrieve the L of the reference. Shortcur for +Copen()>. + +=cut + +sub reflog { return Git::Raw::Reflog -> open (shift); } + +=head2 owner( ) + +Retrieve the L owning the reference. + +=head2 is_branch( ) + +Check if the reference is a branch. + +=head2 is_remote( ) + +Check if the reference is remote. + +=head2 is_tag( ) + +Check if the reference lives in the Ctags> namespace. + +=head2 is_note( ) + +Check if the reference lives in the Cnotes> namespace. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Reference diff --git a/lib/Git/Raw/Reflog.pm b/lib/Git/Raw/Reflog.pm new file mode 100644 index 00000000..35bd5af0 --- /dev/null +++ b/lib/Git/Raw/Reflog.pm @@ -0,0 +1,123 @@ +package Git::Raw::Reflog; + +use strict; +use warnings; + +=head1 NAME + +Git::Raw::Reflog - Git reflog class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # get the master branch + my $master = Git::Raw::Branch -> lookup($repo, 'master', 1); + + # retrieve the reflog for 'master' + my $reflog = $master -> reflog; + + # print out reflog information + my @entries = $reflog -> entries; + foreach my $entry (@entries) { + my $committer = $entry -> committer; + print "Committer:", "\n"; + print "\t", "Name: ", $committer -> name, "\n"; + print "\t", "E-Mail ", $committer -> email, "\n"; + print "\t", "Time: ", $committer -> time, "\n"; + print "\t", "Offset: ", $committer -> offset, "\n"; + print "\n"; + + print "Message: ", $entry -> message, "\n"; + print "Old id: ", $entry -> old_id, "\n"; + print "New id: ", $entry -> new_id, "\n"; + } + + # add a new entry to the reflog + my $signature = Git::Raw::Signature -> default($repo); + $reflog -> append("Hello", $signature); + $reflog -> write; + + # drop an entry from the reflog + $reflog -> drop(0); + $reflog -> write; + + # remove the reflog + $reflog -> delete; + $reflog -> write; + +=head1 DESCRIPTION + +A C represents a Git reflog. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 open( $reference ) + +Open the reflog for the reference C<$reference>. + +=head2 delete( ) + +Delete the reflog for the reference. + +=head2 append( $message [, $signature]) + +Add a new entry to the reflog. If C<$signature> is not provided, +the default signature, Cdefault()> will be used. + +=head2 drop( $index ) + +Remove entry C<$index> from the reflog. + +=head2 write( ) + +Write the reflog back to disk. + +=head2 entries( ) + +Retrieve a list of reflog entries. Each entry is a hash with the +following members: + +=over 4 + +=item * "committer" + +The committer of the entry, a L object. + +=item * "message" + +The message for the entry. + +=item * "new_id" + +The new C for the entry. + +=item * "old_id" + +The old C for the entry. + +=back + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2014 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Reflog diff --git a/lib/Git/Raw/Remote.pm b/lib/Git/Raw/Remote.pm new file mode 100644 index 00000000..9bc5ecb0 --- /dev/null +++ b/lib/Git/Raw/Remote.pm @@ -0,0 +1,214 @@ +package Git::Raw::Remote; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Remote - Git remote class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # add a new remote + my $remote = Git::Raw::Remote -> create($repo, 'origin', $url); + + # set the acquire credentials callback + $remote -> callbacks({ + 'credentials' => sub { Git::Raw::Cred -> userpass($usr, $pwd) } + 'update_tips' => sub { + my ($ref, $a, $b) = @_); + print "Updated $ref: $a -> $b", "\n"; + } + }); + + # connect the remote + $remote -> connect('fetch'); + + # fetch from the remote and update the local tips + $remote -> download; + $remote -> update_tips; + + # disconnect + $remote -> disconnect; + + my $empty_repo = Git::Raw::Repository -> new; + my $anonymous_remote = Git::Raw::Remote -> create_anonymous($repo, $url, undef); + my $list = $anonymous_remote -> ls; + +=head1 DESCRIPTION + +A C represents a Git remote. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo, $name, $url ) + +Create a remote with the default fetch refspec and add it to the repository's +configuration. + +=head2 create_anonymous( $repo, $url, $fetch_refspec ) + +Create a remote in memory (anonymous). + +=head2 load( $repo, $name ) + +Load an existing remote. + +=head2 name( [ $name, \@problems ] ) + +Retrieve the name of the remote. If C<$name> is passed, the remote's name will +be updated and returned. Non-default refspecs cannot be renamed and will be +store in C<@problems> if provided. + +=head2 url( [ $url ] ) + +Retrieve the URL of the remote. If C<$url> is passed, the remote's URL will be +updated and returned. + +=head2 pushurl( [ $url ] ) + +Retrieve the push URL for the remote. If C<$url> is passed, teh rmeote's push +URL will be updated and returned. + +=head2 check_cert( $value ) + +Set whether to check the server's certificate (applies to HTTPS only). + +=head2 add_fetch( $spec ) + +Add a fetch spec to the remote. + +=head2 add_push( $spec ) + +Add a push spec to the remote. + +=head2 clear_refspecs( ) + +Clear the remote's refspecs. + +=head2 refspec_count( ) + +Retrieve the refspec count. + +=head2 refspecs( ) + +Retrieve the remote's refspecs. Returns a list of L objects. + +=head2 ls( ) + +Retrieve the list of refs at the remote. Returns a hash reference where the key +is the name of the reference, and the value is a hash reference containing the +following values: + +=over 4 + +=item * "local" + +Whether the reference exists locally. + +=item * "id" + +The object ID of the reference. + +=item * "lid" + +The local object ID of the reference (optional). + +=back + +=head2 callbacks( \%callbacks ) + +=over 4 + +=item * "credentials" + +The callback to be called any time authentication is required to connect to the +remote repository. The callback receives a string containing the URL of the +remote, and it must return a L object. + +=item * "sideband_progress" + +Textual progress from the remote. Text send over the progress side-band will be +passed to this function (this is the 'counting objects' output). The callback +receives a string containing progress information. + +=item * "transfer_progress" + +During the download of new data, this will be regularly called with the current +count of progress done by the indexer. The callback receives the following integers: +C, C, C, C, +C and C. + +=item * "update_tips" + +Each time a reference is updated locally, this function will be called with +information about it. The callback receives a string containing the name of the +reference that was updated, and the two OID's C before and after C the update. + +=back + +=head2 fetch( ) + +Download new data and update tips. Convenience function to connect to a remote, +download the data, disconnect and update the remote-tracking branches. + +=head2 connect( $direction ) + +Connect to the remote. The C<$direction> should either be C<"fetch"> or C<"push">. + +=head2 disconnect( ) + +Disconnect the remote. + +=head2 download( ) + +Download the remote packfile. + +=head2 save( ) + +Save the remote to its repository's config. + +=head2 update_tips( ) + +Update the tips to the new status. + +=head2 is_connected( ) + +Check if the remote is connected. + +=head2 is_url_valid( $url ) + +Check whether C<$url> is a valid remote URL. + +=head2 is_url_supported( $url ) + +Check whether C<$url> the passed URL is supported by this version of the +library. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Remote diff --git a/lib/Git/Raw/Repository.pm b/lib/Git/Raw/Repository.pm new file mode 100644 index 00000000..eea6434a --- /dev/null +++ b/lib/Git/Raw/Repository.pm @@ -0,0 +1,779 @@ +package Git::Raw::Repository; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Repository - Git repository class + +=head1 SYNOPSIS + + use Git::Raw; + + # clone a Git repository + my $url = 'git://github.com/ghedo/p5-Git-Raw.git'; + my $repo = Git::Raw::Repository -> clone($url, 'p5-Git-Raw', { + 'callbacks' => { + 'transfer_progress' => sub { + my ($total_objects, $received_objects, $local_objects, $total_deltas, + $indexed_deltas, $received_bytes) = @_; + + print "Objects: $received_objects/$total_objects", "\n"; + print "Received: ", int($received_bytes/1024), "KB", "\n"; + } + } + }); + + # print all the tags of the repository + foreach my $tag ($repo -> tags) { + say $tag -> name; + } + +=head1 DESCRIPTION + +A C represents a Git repository. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 init( $path, $is_bare ) + +Initialize a new repository at C<$path>. + +=head2 clone( $url, $path, \%opts ) + +Clone the repository at C<$url> to C<$path>. Valid fields for the C<%opts> hash +are: + +=over 4 + +=item * "bare" + +If true (default is false) create a bare repository. + +=item * "checkout_branch" + +The name of the branch to checkout (default is to use the remote's HEAD). + +=item * "disable_checkout" + +If true (default is false) files will not be checked out after the clone completes. + +=item * "callbacks" + +=over 8 + +=item * "remote_create" + +Remote customization callback. If a non-default remote is required, i.e. a remote +with a remote name other than 'origin', this callback should be used. The callback +receives a L object, a string containing the default name +for the remote, typically 'origin', and a string containing the URL of the remote. +This callbacks should return a L object. The returned object and +the the repository object passed to this callback is ephemeral. Do not take any +references to it as it may be freed internally. + +=item * "credentials" + +The callback to be called any time authentication is required to connect to the +remote repository. The callback receives a string containing the URL of the +remote, and it must return a L object. + +=item * "sideband_progress" + +Textual progress from the remote. Text send over the progress side-band will be +passed to this function (this is the 'counting objects' output). The callback +receives a string containing progress information. + +=item * "transfer_progress" + +During the download of new data, this will be regularly called with the current +count of progress done by the indexer. The callback receives the following +integers: C, C, C, +C, C and C. + +=item * "update_tips" + +Each time a reference is updated locally, this function will be called with +information about it. The callback receives a string containing the name of the +reference that was updated, and the two OID's C<"a"> before and C<"b"> after the +update. + +=back + +=back + +=head2 open( $path ) + +Open the repository at C<$path>. + +=head2 discover( $path ) + +Discover the path to the repository directory given a subdirectory. + +=head2 new( ) + +Create a new repository with neither backends nor config object. + +=head2 config( ) + +Retrieve the default L of the repository. + +=head2 index( ) + +Retrieve the default L of the repository. + +=head2 head( [$new_head] ) + +Retrieve the L pointed by the HEAD of the repository. If +the L C<$new_head> is passed, the HEAD of the repository +will be changed to point to it. + +=head2 lookup( $id ) + +Retrieve the object corresponding to C<$id>. + +=head2 checkout( $object, \%opts ) + +Updates the files in the index and working tree to match the content of +C<$object>. Valid fields for the C<%opts> hash are: + +=over 4 + +=item * "checkout_strategy" + +Hash representing the desired checkout strategy. Valid fields are: + +=over 8 + +=item * "none" + +Dry-run checkout strategy. It doesn't make any changes, but checks for +conflicts. + +=item * "force" + +Take any action to make the working directory match the target (pretty much the +opposite of C<"none">. + +=item * "safe" + +Make only modifications that will not lose changes (to be used in order to +simulate C. + +=item * "safe_create" + +Like C<"safe">, but will also cause a file to be checked out if it is missing +from the working directory even if it is not modified between the target and +baseline (to be used in order to simulate C and C). + +=item * "allow_conflicts" + +Apply safe updates even if there are conflicts. + +=item * "remove_untracked" + +Remove untracked files from the working directory. + +=item * "remove_ignored" + +Remove ignored files from the working directory. + +=item * "update_only" + +Only update files that already exists (files won't be created not deleted). + +=item * "dont_update_index" + +Do not write the updated files' info to the index. + +=item * "no_refresh" + +Do not reload the index and git attrs from disk before operations. + +=item * "skip_unmerged" + +Skip files with unmerged index entries, instead of treating them as conflicts. + +=back + +=item * "notify" + +Notification flags for the notify callback. A list of the following options: + +=over 8 + +=item * "conflict" + +Notifies about conflicting paths. + +=item * "dirty" + +Notifies about file that don't need an update but no longer matches the baseline. +Core git displays these files when checkout runs, but won't stop the checkout. + +=item * "updated" + +Notification on any file changed. + +=item * "untracked" + +Notification about untracked files. + +=item * "ignored" + +Notifies about ignored files. + +=item * "all" + +All of the above. + +=back + +=item * "callbacks" + +Hash containg progress and notification callbacks. Valid fields are: + +=over 8 + +=item * "notify" + +This callback is called for each file matching one of the C options +selected. It runs before modifying any files on disk. This callback should +return a non-zero value should the checkout be cancelled. The callback receives +a string containing the path of the file C and an array reference +containing the reason C. + +=item * "progress" + +The callback to be invoked as a file is checked out. The callback receives a +string containing the path of the file C, an integer C +and an integer C. + +=back + +=item * "paths" + +An optional array representing the list of files thay should be checked out. If +C<"paths"> is not specified, all files will be checked out (default). + +=back + +Example: + + $repo -> checkout($repo -> head -> target, { + 'checkout_strategy' => { 'safe' => 1 }, + 'notify' => [ 'all' ], + 'callbacks' => { + 'notify' => sub { + my ($path, $why) = @_; + + print "File: $path: ", join(' ', @$why), "\n"; + }, + 'progress' => sub { + my ($path, $completed_steps, $total_steps) = @_; + + print "File: $path", "\n" if defined ($path); + print "Progress: $completed_steps/$total_steps", "\n"; + } + }, + 'paths' => [ 'myscript.pl' ] + }); + +=head2 reset( $target, \%opts ) + +Reset the current HEAD to the given commit. Valid fields for the C<%opts> +hash are: + +=over 4 + +=item * "type" + +Set the type of the reset to be performed. Valid values are: C<"soft"> (the head +will be moved to the commit), C<"mixed"> (trigger a soft reset and replace the +index with the content of the commit tree) or C<"hard"> (trigger a C<"mixed"> +reset and the working directory will be replaced with the content of the index). + +=item * "paths" + +List of entries in the index to be updated from the target commit tree. This is +particularly useful to implement C<"git reset HEAD -- file file"> behaviour. +Note, if this parameter is specified, a value of C<"mixed"> will be used for +C<"type"> (setting C<"type"> to C<"soft"> or C<"hard"> has no effect). + +=back + +=head2 status( [$file, $file, ...] ) + +Retrieve the status of files in the index and/or working directory. This functions +returns a hash reference with an entry for each C<$file>, or all files if no file +parameters are provided. Each <$file> entry has a list of C<"flags">, which may +include: C<"index_new">, C<"index_modified">, C<"index_deleted">, C<"index_renamed">, +C<"worktree_new">, C<"worktree_modified">, C<"worktree_deleted">, +C<"worktree_renamed"> and C<"ignored">. + +If C<$file> has been renamed in either the index or worktree or both, C<$file> +will also have a corresponding entry C<"index"> and/or C<"worktree">, containing +the previous filename C<"old_file">. + +Example: + + my $file_statuses = $repo -> status(); + while (my ($file, $status) = each %$file_statuses) { + my $flags = $status -> {'flags'}; + print "File: $file: Status: ", join (' ', @$flags), "\n"; + + if (grep { $_ eq 'index_renamed' } @$flags) { + print "Index previous filename: ", + $status -> {'index'} -> {'old_file'}, "\n"; + } + + if (grep { $_ eq 'worktree_renamed' } @$flags) { + print "Worktree previous filename: ", + $status -> {'worktree'} -> {'old_file'}, "\n"; + } + } + +=head2 merge_base( @objects ) + +Find the merge base between C<@objects>. Each element in C<@objects> should be +peelable to a L object, that is, it should be a +L or L object, or alternatively a commit +id or commit id prefix. + +=head2 merge_analysis( $reference ) + +Analyzes the given C<$reference> and determines the opportunities for merging +them into the HEAD of the repository. This function returns an array reference +with optional members C<"normal">, C<"up_to_date">, C<"fast_forward"> and/or +C<"unborn">. + +=over 4 + +=item * "normal" + +A "normal" merge. Both HEAD and the given merge input have diverged from their +common ancestor. The divergent commits must be merged. + +=item * "up_to_date" + +All given merge inputs are reachable from HEAD, meaning the repository is +up-to-date and no merge needs to be performed. + +=item * "fast_forward" + +The given merge input is a fast-forward from HEAD and no merge needs to be +performed. Instead, the given merge input may be checked out. + +=item * "unborn" + +The HEAD of the current repository is "unborn" and does not point to a valid +commit. No merge can be performed, but the caller may wish to simply set +HEAD to the target commit(s). + +=back + +=head2 merge( $ref, [\%merge_opts, \%checkout_opts]) + +Merge the given C<$ref> into HEAD. This function returns a hash reference +with members C<"up_to_date">, C<"fast_forward"> and C<"id"> if the merge +was fast-forward. See Ccheckout()> for valid +C<%checkout_opts> values. Valid fields for C<%merge_opts> are + +=over 4 + +=item * "flags" + +An array of flags for the tree, including: + +=over 8 + +=item * "find_renames" + +Detect renames. + +=back + +=item * "favor" + +Specify content automerging behaviour. Valid values are C<"ours">, C<"theirs">, +and C<"union">. + +=item * "rename_threshold" + +Similarity metric for considering a file renamed (default is 50). + +=item * "target_limit" + +Maximum similarity sources to examine (overrides the C<"merge.renameLimit"> +configuration entry) (default is 200). + +=back + +Example: + + my $branch = Git::Raw::Branch -> lookup($repo, 'branch', 1); + my $analysis = $repo -> merge_analysis($branch); + $repo -> merge($branch1, + { + 'favor' => 'theirs' + }, + + { + 'checkout_strategy' => { + 'force' => 1 + } + } + ); + +=head2 ignore( $rules ) + +Add an ignore rules to the repository. The format of the rules is the same one +of the C<.gitignore> file (see the C manpage). Example: + + $repo -> ignore("*.o\n"); + +=head2 path_is_ignored( $path ) + +Checks the ignore rules to see if they would apply to the given file. This indicates +if the file would be ignored regardless of whether the file is already in the index +or committed to the repository. + +=head2 diff( [\%opts] ) + +Compute the L between the repo's default index and another tree. +Valid fields for the C<%opts> hash are: + +=over 4 + +=item * "tree" + +If provided, the diff is computed between C<"tree"> and the repo's default index. +The default is the repo's working directory. + +=item * "flags" + +Flags for generating the diff. Valid values include: + +=over 8 + +=item * "reverse" + +Reverse the sides of the diff. + +=item * "include_ignored" + +Include ignored files in the diff. + +=item * "include_typechange" + +Enable the generation of typechange delta records. + +=item * "recurse_ignored_dirs" + +Even if C<"include_ignored"> is specified, an entire ignored directory +will be marked with only a single entry in the diff. This flag adds all files +under the directory as ignored entries, too. + +=item * "include_untracked" + +Include untracked files in the diff. + +=item * "recurse_untracked_dirs" + +Even if C<"include_untracked"> is specified, an entire untracked directory +will be marked with only a single entry in the diff (core git behaviour). +This flag adds all files under untracked directories as untracked entries, too. + +=item * "ignore_filemode" + +Ignore file mode changes. + +=item * "ignore_case" + +Use case insensitive filename comparisons. + +=item * "ignore_submodules" + +Treat all submodules as unmodified. + +=item * "ignore_whitespace" + +Ignore all whitespace. + +=item * "ignore_whitespace_change" + +Ignore changes in amount of whitespace. + +=item * "ignore_whitespace_eol" + +Ignore whitespace at end of line. + +=item * "skip_binary_check" + +Disable updating of the binary flag in delta records. + +=item * "enable_fast_untracked_dirs" + +When diff finds an untracked directory, to match the behavior of core git, it +scans the contents for ignored and untracked files. If all contents are ignore, +then the directory is ignored. If any contents are not ignored, then the +directory is untracked. This is extra work that may not matter in many cases. +This flag turns off that scan and immediately labels an untracked directory +as untracked (changing the behavior to not match core git). + +=item * "show_untracked_content" + +Include the content of untracked files. This implies C<"include_untracked">. + +=item * "show_unmodified" + +Include the names of unmodified files. + +=item * "patience" + +Use the C<"patience diff"> algorithm. + +=item * "minimal" + +Take extra time to find minimal diff. + +=back + +=item * "prefix" + +=over 8 + +=item * "a" + +The virtual C<"directory"> to prefix to old file names in hunk headers. +(Default is C<"a">.) + +=item * "b" + +The virtual C<"directory"> to prefix to new file names in hunk headers. +(Default is C<"b">.) + +=back + +=item * "context_lines" + +The number of unchanged lines that define the boundary of a hunk (and +to display before and after) + +=item * "interhunk_lines" + +The maximum number of unchanged lines between hunk boundaries before +the hunks will be merged into a one. + +=item * "paths" + +A list of paths to constrain diff. + +=back + +=head2 blob( $buffer ) + +Create a new L. Shortcut for Ccreate()>. + +=cut + +sub blob { return Git::Raw::Blob -> create(@_) } + +=head2 branch( $name, $target ) + +Create a new L. Shortcut for Ccreate()>. + +=cut + +sub branch { return Git::Raw::Branch -> create(@_) } + +=head2 branches( [$type] ) + +Retrieve a list of L objects. Possible values for C<$type> +include C<"local">, C<"remote"> or C<"all">. + +=head2 commit( $msg, $author, $committer, \@parents, $tree [, $update_ref ] ) + +Create a new L. Shortcut for Ccreate()>. + +=cut + +sub commit { return Git::Raw::Commit -> create(@_) } + +=head2 tag( $name, $msg, $tagger, $target ) + +Create a new L. Shortcut for Ccreate()>. + +=cut + +sub tag { return Git::Raw::Tag -> create(@_) } + +=head2 tags( ) + +Retrieve the list of L objects representing the +repository's annotated Git tags. Lightweight tags are not returned. + +=cut + +sub tags { + my $self = shift; + + my @tags; + + Git::Raw::Tag -> foreach($self, sub { + push @tags, shift; 0 + }); + + return @tags; +} + +=head2 stash( $stasher, $msg ) + +Save the local modifications to a new stash. Shortcut for Csave()>. + +=cut + +sub stash { return Git::Raw::Stash -> save(@_) } + +=head2 remotes( ) + +Retrieve the list of L objects. + +=head2 refs( ) + +Retrieve the list of L objects. + +=head2 walker( ) + +Create a new L. Shortcut for Ccreate()>. + +=cut + +sub walker { return Git::Raw::Walker -> create(@_) } + +=head2 path( ) + +Retrieve the complete path of the repository. + +=head2 workdir( [$new_dir] ) + +Retrieve the working directory of the repository. If C<$new_dir> is passed, the +working directory of the repository will be set to the directory. + +=head2 blame( $path ) + +Retrieve blame information for C<$path>. Returns a L object. + +=head2 cherry_pick( $commit, [\%merge_opts, \%checkout_opts, $mainline] ) + +Cherry-pick the given C<$commit>, producing changes in the index and working +directory. See Cmerge()> for valid C<%merge_opts> +and C<%checkout_opts> values. For merge commits C<$mainline> specifies the +parent. + +=head2 revert( $commit, [\%merge_opts, \%checkout_opts, $mainline] ) + +Revert the given C<$commit>, producing changes in the index and working +directory. See Cmerge()> for valid C<%merge_opts> +and C<%checkout_opts> values. For merge commits C<$mainline> specifies the +parent. + +=head2 state( ) + +Determine the state of the repository. One of the following values is returned: + +=over 4 + +=item * "none" + +Normal state + +=item * "merge" + +Repository is in a merge. + +=item * "revert" + +Repository is in a revert. + +=item * "cherry_pick" + +Repository is in a cherry-pick. + +=item * "bisect" + +Repository is bisecting. + +=item * "rebase" + +Repository is rebasing. + +=item * "rebase_interactive" + +Repository is in an interactive rebase. + +=item * "rebase_merge" + +Repository is in an rebase merge. + +=item * "apply_mailbox" + +Repository is applying patches. + +=item * "mailbox_or_rebase" + +Repository is applying patches or rebasing. + +=back + +=head2 state_cleanup( ) + +Remove all the metadata associated with an ongoing command like merge, revert, +cherry-pick, etc. + +=head2 message( ) + +Retrieve the content of git's prepared message i.e. C<".git/MERGE_MSG">. + +=head2 is_empty( ) + +Check if the repository is empty. + +=head2 is_bare( ) + +Check if the repository is bare. + +=head2 is_shallow( ) + +Check if the repository is a shallow clone. + +=head2 is_head_detached( ) + +Check if the repository's C is detached, that is, it points directly to +a commit. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Repository diff --git a/lib/Git/Raw/Signature.pm b/lib/Git/Raw/Signature.pm new file mode 100644 index 00000000..0bd2ddd6 --- /dev/null +++ b/lib/Git/Raw/Signature.pm @@ -0,0 +1,66 @@ +package Git::Raw::Signature; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Signature - Git signature class + +=head1 DESCRIPTION + +A C represents the signature of an action. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 new( $name, $email, $time, $offset ) + +Create a new signature. + +=head2 now( $name, $email ) + +Create a new signature with a timestamp of 'now'. + +=head2 default( $repo ) + +Create a new signature with default user and a timestamp of 'now'. +This looks up the C<"user.name"> and C<"user.email"> from the configuration. + +=head2 name( ) + +Retrieve the name associated with the signature. + +=head2 email( ) + +Retrieve the email associated with the signature. + +=head2 time( ) + +Retrieve the time of the signature. + +=head2 offset( ) + +Retrieve the time offset (in minutes) of the signature. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Signature diff --git a/lib/Git/Raw/Stash.pm b/lib/Git/Raw/Stash.pm new file mode 100644 index 00000000..e1d1b05d --- /dev/null +++ b/lib/Git/Raw/Stash.pm @@ -0,0 +1,73 @@ +package Git::Raw::Stash; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Stash - Git stash class + +=head1 DESCRIPTION + +Helper class to manage stashes. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 save( $repo, $stasher, $msg [, \@opts] ) + +Save the local modifications to a new stash. Non-default options may be +specified by providing the optional C<@opts> argument. + +Valid fields for the C<@opts> array are: + +=over 4 + +=item * "keep_index" + +All changes already added to the index are left intact in the working directory. +The default is to also stash changes in the index. + +=item * "include_untracked" + +All untracked files are also stashed and then cleaned up from the working +directory. The default is to leave untracked files in the working directory. + +=item * "include_ignored" + +All ignored files are also stashed and then cleaned up up from the working +directory. The default is to leave ignored files in the working directory. + +=back + +=head2 foreach( $repo, $callback ) + +Run C<$callback> for every stash in the repo. The callback receives three +arguments: the stash index, the stash message and the stash object id. A +non-zero return value stops the loop. + +=head2 drop( $repo, $index ) + +Remove a single stash from the stash list. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Stash diff --git a/lib/Git/Raw/Tag.pm b/lib/Git/Raw/Tag.pm new file mode 100644 index 00000000..a6b885d6 --- /dev/null +++ b/lib/Git/Raw/Tag.pm @@ -0,0 +1,99 @@ +package Git::Raw::Tag; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Tag - Git tag class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # retrieve user's name and email from the Git configuration + my $config = $repo -> config; + my $name = $config -> str('user.name'); + my $email = $config -> str('user.email'); + + # create a new Git signature + my $me = Git::Raw::Signature -> now($name, $email); + + # create a new tag + my $tag = $repo -> tag( + 'v0.1', 'Initial version', $me, $repo -> head -> target + ); + +=head1 DESCRIPTION + +A C represents an annotated Git tag. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo, $name, $msg, $tagger, $target ) + +Create a new annotated tag given a name, a message, a +L representing the tagger and a target object. + +=head2 lookup( $repo, $id ) + +Retrieve the tag corresponding to C<$id>. This function is pretty much the same +as C<$repo-Elookup($id)> except that it only returns tags. + +=head2 foreach( $repo, $callback ) + +Run C<$callback> for every tag in the repo. The callback receives a tag object. +A non-zero return value stops the loop. + +=head2 delete( ) + +Delete the tag. The L object must not be accessed afterwards. + +=head2 id( ) + +Retrieve the id of the tag, as string. + +=head2 name( ) + +Retrieve the name of the tag. + +=head2 message( ) + +Retrieve the message of the tag. + +=head2 tagger( ) + +Retrieve the L representing the tag's tagger. If there +is no tagger, C will be returned. + +=head2 target( ) + +Retrieve the target object of the tag. + +=head1 AUTHOR + +Alessandro Ghedini + +Jacques Germishuys + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Tag diff --git a/lib/Git/Raw/Tree.pm b/lib/Git/Raw/Tree.pm new file mode 100644 index 00000000..8f6e16c6 --- /dev/null +++ b/lib/Git/Raw/Tree.pm @@ -0,0 +1,183 @@ +package Git::Raw::Tree; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Tree - Git tree class + +=head1 DESCRIPTION + +A C represents a Git tree. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 lookup( $repo, $id ) + +Retrieve the tree corresponding to C<$id>. This function is pretty much the same +as C<$repo-Elookup($id)> except that it only returns trees. + +=head2 id( ) + +Retrieve the id of the tree, as string. + +=head2 entries( ) + +Retrieve a list of L objects. + +=head2 entry_byname( $name ) + +Retrieve a L object by name. + +=head2 entry_bypath( $path ) + +Retrieve a L object by path. + +=head2 merge( $ancestor, $theirs, [\%merge_opts] ) + +Merge C<$theirs> into this tree. C<$ancestor> and C<$theirs> should be +L objects. See Cmerge()> for valid +C<%merge_opts> values. Returns a L object containing the +merge result. + +=head2 diff( [\%opts] ) + +Compute the L between two trees. Valid fields for the C<%opts> +hash are: + +=over 4 + +=item * "tree" + +If provided, the diff is computed against C<"tree">. The default is the repo's +working directory. + +=item * "flags" + +Flags for generating the diff. Valid values include: + +=over 8 + +=item * "reverse" + +Reverse the sides of the diff. + +=item * "include_ignored" + +Include ignored files in the diff. + +=item * "recurse_ignored_dirs" + +Even if C<"include_ignored"> is specified, an entire ignored directory +will be marked with only a single entry in the diff. This flag adds all files +under the directory as ignored entries, too. + +=item * "include_untracked" + +Include untracked files in the diff. + +=item * "recurse_untracked_dirs" + +Even if C<"include_untracked"> is specified, an entire untracked directory +will be marked with only a single entry in the diff (core git behaviour). +This flag adds all files under untracked directories as untracked entries, too. + +=item * "ignore_filemode" + +Ignore file mode changes. + +=item * "ignore_submodules" + +Treat all submodules as unmodified. + +=item * "ignore_whitespace" + +Ignore all whitespace. + +=item * "ignore_whitespace_change" + +Ignore changes in amount of whitespace. + +=item * "ignore_whitespace_eol" + +Ignore whitespace at end of line. + +=item * "patience" + +Use the C<"patience diff"> algorithm. + +=item * "minimal" + +Take extra time to find minimal diff. + +=back + +=item * "prefix" + +=over 8 + +=item * "a" + +The virtual C<"directory"> to prefix to old file names in hunk headers. +(Default is C<"a">.) + +=item * "b" + +The virtual C<"directory"> to prefix to new file names in hunk headers. +(Default is C<"b">.) + +=back + +=item * "context_lines" + +The number of unchanged lines that define the boundary of a hunk (and +to display before and after) + +=item * "interhunk_lines" + +The maximum number of unchanged lines between hunk boundaries before +the hunks will be merged into a one. + +=item * "paths" + +A list of paths to constrain diff. + +=back + +=cut + +=head2 is_tree( ) + +Returns true. + +=cut + +=head2 is_blob( ) + +Returns false. + +=cut + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Tree diff --git a/lib/Git/Raw/Tree/Builder.pm b/lib/Git/Raw/Tree/Builder.pm new file mode 100644 index 00000000..f3a8f67b --- /dev/null +++ b/lib/Git/Raw/Tree/Builder.pm @@ -0,0 +1,70 @@ +package Git::Raw::Tree::Builder; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Tree::Builder - Git tree builder class + +=head1 DESCRIPTION + +A C allows you to build Git tree objects. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 new( $repo, [$tree] ) + +Creates a new tree builder that will build trees in C<$repo>. If C<$tree> is +passed, the contents of the tree builder are initialized from the contents of +C<$tree>. + +=head2 clear( ) + +Clears the tree builder of all entries. + +=head2 entry_count( ) + +Returns the number of entries contained in this tree builder. + +=head2 get( $filename ) + +Return a L corresponding to C<$filename>. +Returns C if no such entry exists. + +=head2 insert( $filename, $object, $mode ) + +Adds (or updates) an entry in this tree builder. C<$object> +can be either a L or L object. + +=head2 remove( $filename ) + +Removes the entry associated with the filename C<$filename> from this tree +builder. + +=head2 write( ) + +Writes the tree object we've been building into the repository. + +=head1 AUTHOR + +Rob Hoelz + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Tree::Builder diff --git a/lib/Git/Raw/Tree/Entry.pm b/lib/Git/Raw/Tree/Entry.pm new file mode 100644 index 00000000..b1b5476f --- /dev/null +++ b/lib/Git/Raw/Tree/Entry.pm @@ -0,0 +1,54 @@ +package Git::Raw::Tree::Entry; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Tree::Entry - Git tree entry class + +=head1 DESCRIPTION + +A C represents an entry in a L. + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 id( ) + +Retrieve the id of the tree entry, as string. + +=head2 name( ) + +Retrieve the filename of the tree entry. + +=head2 file_mode( ) + +Retrieve the file mode of the tree entry, as an integer. For example, +a normal file has mode 0100644 = 33188. + +=head2 object( $repo ) + +Retrieve the object pointed by the tree entry. + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Tree::Entry diff --git a/lib/Git/Raw/Walker.pm b/lib/Git/Raw/Walker.pm new file mode 100644 index 00000000..8ab6f5f8 --- /dev/null +++ b/lib/Git/Raw/Walker.pm @@ -0,0 +1,115 @@ +package Git::Raw::Walker; + +use strict; +use warnings; + +use Git::Raw; + +=head1 NAME + +Git::Raw::Walker - Git revwalker class + +=head1 SYNOPSIS + + use Git::Raw; + + # open the Git repository at $path + my $repo = Git::Raw::Repository -> open($path); + + # create a new walker + my $log = $repo -> walker; + + # push the head of the repository + $log -> push_head; + + # print all commit messages + while (my $commit = $log -> next) { + say $commit -> message; + } + +=head1 DESCRIPTION + +A C represents a graph walker used to walk through the +repository's revisions (sort of like C). + +B: The API of this module is unstable and may change without warning +(any change will be appropriately documented in the changelog). + +=head1 METHODS + +=head2 create( $repo ) + +Create a new revision walker. + +=head2 push( $commit ) + +Push a L to the list of commits to be used as roots when +starting a revision walk. + +=head2 push_glob( $glob ) + +Push references by C<$glob> to the list of commits to be used as roots when +starting a revision walk. + +=head2 push_ref( $name ) + +Push a reference by C<$name> to the list of commits to be used as roots when +starting a revision walk. + +=head2 push_head( ) + +Push HEAD of the repository to the list of commits to be used as roots when +starting a revision walk. + +=head2 push_range( $start, $end ) + +Push and hide the respective endpoints of the given range. C<$start> and C<$end> +should be C<"commitish">, that is, it should be a L or +L object, or alternatively a commit id or commit id prefix. + +=head2 push_range( $range ) + +Push and hide the respective endpoints of the given range. C<$range> should be +of the form C<"start_commit_id..end_commit_id">. + +=head2 hide( $commit ) + +Hide a L and its ancestors from the walker. + +=head2 hide_glob( $glob ) + +Hide references by C<$glob> and all ancestors from the walker. + +=head2 hide_ref( $name ) + +Hide a reference by C<$name> and its ancestors from the walker. + +=head2 hide_head( ) + +Hide HEAD of the repository and its ancestors from the walker. + +=head2 next( ) + +Retrieve the next commit from the revision walk. + +=head2 reset( ) + +Reset the revision walker (this is done automatically at the end of a walk). + +=head1 AUTHOR + +Alessandro Ghedini + +=head1 LICENSE AND COPYRIGHT + +Copyright 2012 Alessandro Ghedini. + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See http://dev.perl.org/licenses/ for more information. + +=cut + +1; # End of Git::Raw::Walker diff --git a/ppport.h b/ppport.h new file mode 100644 index 00000000..f76eb805 --- /dev/null +++ b/ppport.h @@ -0,0 +1,7266 @@ +#if 0 +<<'SKIP'; +#endif +/* +---------------------------------------------------------------------- + + ppport.h -- Perl/Pollution/Portability Version 3.20 + + Automatically created by Devel::PPPort running under perl 5.018002. + + Do NOT edit this file directly! -- Edit PPPort_pm.PL and the + includes in parts/inc/ instead. + + Use 'perldoc ppport.h' to view the documentation below. + +---------------------------------------------------------------------- + +SKIP + +=pod + +=head1 NAME + +ppport.h - Perl/Pollution/Portability version 3.20 + +=head1 SYNOPSIS + + perl ppport.h [options] [source files] + + Searches current directory for files if no [source files] are given + + --help show short help + + --version show version + + --patch=file write one patch file with changes + --copy=suffix write changed copies with suffix + --diff=program use diff program and options + + --compat-version=version provide compatibility with Perl version + --cplusplus accept C++ comments + + --quiet don't output anything except fatal errors + --nodiag don't show diagnostics + --nohints don't show hints + --nochanges don't suggest changes + --nofilter don't filter input files + + --strip strip all script and doc functionality from + ppport.h + + --list-provided list provided API + --list-unsupported list unsupported API + --api-info=name show Perl API portability information + +=head1 COMPATIBILITY + +This version of F is designed to support operation with Perl +installations back to 5.003, and has been tested up to 5.11.5. + +=head1 OPTIONS + +=head2 --help + +Display a brief usage summary. + +=head2 --version + +Display the version of F. + +=head2 --patch=I + +If this option is given, a single patch file will be created if +any changes are suggested. This requires a working diff program +to be installed on your system. + +=head2 --copy=I + +If this option is given, a copy of each file will be saved with +the given suffix that contains the suggested changes. This does +not require any external programs. Note that this does not +automagially add a dot between the original filename and the +suffix. If you want the dot, you have to include it in the option +argument. + +If neither C<--patch> or C<--copy> are given, the default is to +simply print the diffs for each file. This requires either +C or a C program to be installed. + +=head2 --diff=I + +Manually set the diff program and options to use. The default +is to use C, when installed, and output unified +context diffs. + +=head2 --compat-version=I + +Tell F to check for compatibility with the given +Perl version. The default is to check for compatibility with Perl +version 5.003. You can use this option to reduce the output +of F if you intend to be backward compatible only +down to a certain Perl version. + +=head2 --cplusplus + +Usually, F will detect C++ style comments and +replace them with C style comments for portability reasons. +Using this option instructs F to leave C++ +comments untouched. + +=head2 --quiet + +Be quiet. Don't print anything except fatal errors. + +=head2 --nodiag + +Don't output any diagnostic messages. Only portability +alerts will be printed. + +=head2 --nohints + +Don't output any hints. Hints often contain useful portability +notes. Warnings will still be displayed. + +=head2 --nochanges + +Don't suggest any changes. Only give diagnostic output and hints +unless these are also deactivated. + +=head2 --nofilter + +Don't filter the list of input files. By default, files not looking +like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. + +=head2 --strip + +Strip all script and documentation functionality from F. +This reduces the size of F dramatically and may be useful +if you want to include F in smaller modules without +increasing their distribution size too much. + +The stripped F will have a C<--unstrip> option that allows +you to undo the stripping, but only if an appropriate C +module is installed. + +=head2 --list-provided + +Lists the API elements for which compatibility is provided by +F. Also lists if it must be explicitly requested, +if it has dependencies, and if there are hints or warnings for it. + +=head2 --list-unsupported + +Lists the API elements that are known not to be supported by +F and below which version of Perl they probably +won't be available or work. + +=head2 --api-info=I + +Show portability information for API elements matching I. +If I is surrounded by slashes, it is interpreted as a regular +expression. + +=head1 DESCRIPTION + +In order for a Perl extension (XS) module to be as portable as possible +across differing versions of Perl itself, certain steps need to be taken. + +=over 4 + +=item * + +Including this header is the first major one. This alone will give you +access to a large part of the Perl API that hasn't been available in +earlier Perl releases. Use + + perl ppport.h --list-provided + +to see which API elements are provided by ppport.h. + +=item * + +You should avoid using deprecated parts of the API. For example, using +global Perl variables without the C prefix is deprecated. Also, +some API functions used to have a C prefix. Using this form is +also deprecated. You can safely use the supported API, as F +will provide wrappers for older Perl versions. + +=item * + +If you use one of a few functions or variables that were not present in +earlier versions of Perl, and that can't be provided using a macro, you +have to explicitly request support for these functions by adding one or +more C<#define>s in your source code before the inclusion of F. + +These functions or variables will be marked C in the list shown +by C<--list-provided>. + +Depending on whether you module has a single or multiple files that +use such functions or variables, you want either C or global +variants. + +For a C function or variable (used only in a single source +file), use: + + #define NEED_function + #define NEED_variable + +For a global function or variable (used in multiple source files), +use: + + #define NEED_function_GLOBAL + #define NEED_variable_GLOBAL + +Note that you mustn't have more than one global request for the +same function or variable in your project. + + Function / Variable Static Request Global Request + ----------------------------------------------------------------------------------------- + PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL + PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL + eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL + grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL + grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL + grok_number() NEED_grok_number NEED_grok_number_GLOBAL + grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL + grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL + load_module() NEED_load_module NEED_load_module_GLOBAL + my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL + my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL + my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL + my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL + newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL + newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL + newSV_type() NEED_newSV_type NEED_newSV_type_GLOBAL + newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL + newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL + pv_display() NEED_pv_display NEED_pv_display_GLOBAL + pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL + pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL + sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL + sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL + sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL + sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL + sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL + sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL + sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL + vload_module() NEED_vload_module NEED_vload_module_GLOBAL + vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL + warner() NEED_warner NEED_warner_GLOBAL + +To avoid namespace conflicts, you can change the namespace of the +explicitly exported functions / variables using the C +macro. Just C<#define> the macro before including C: + + #define DPPP_NAMESPACE MyOwnNamespace_ + #include "ppport.h" + +The default namespace is C. + +=back + +The good thing is that most of the above can be checked by running +F on your source code. See the next section for +details. + +=head1 EXAMPLES + +To verify whether F is needed for your module, whether you +should make any changes to your code, and whether any special defines +should be used, F can be run as a Perl script to check your +source code. Simply say: + + perl ppport.h + +The result will usually be a list of patches suggesting changes +that should at least be acceptable, if not necessarily the most +efficient solution, or a fix for all possible problems. + +If you know that your XS module uses features only available in +newer Perl releases, if you're aware that it uses C++ comments, +and if you want all suggestions as a single patch file, you could +use something like this: + + perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff + +If you only want your code to be scanned without any suggestions +for changes, use: + + perl ppport.h --nochanges + +You can specify a different C program or options, using +the C<--diff> option: + + perl ppport.h --diff='diff -C 10' + +This would output context diffs with 10 lines of context. + +If you want to create patched copies of your files instead, use: + + perl ppport.h --copy=.new + +To display portability information for the C function, +use: + + perl ppport.h --api-info=newSVpvn + +Since the argument to C<--api-info> can be a regular expression, +you can use + + perl ppport.h --api-info=/_nomg$/ + +to display portability information for all C<_nomg> functions or + + perl ppport.h --api-info=/./ + +to display information for all known API elements. + +=head1 BUGS + +If this version of F is causing failure during +the compilation of this module, please check if newer versions +of either this module or C are available on CPAN +before sending a bug report. + +If F was generated using the latest version of +C and is causing failure of this module, please +file a bug report using the CPAN Request Tracker at L. + +Please include the following information: + +=over 4 + +=item 1. + +The complete output from running "perl -V" + +=item 2. + +This file. + +=item 3. + +The name and version of the module you were trying to build. + +=item 4. + +A full log of the build that failed. + +=item 5. + +Any other information that you think could be relevant. + +=back + +For the latest version of this code, please get the C +module from CPAN. + +=head1 COPYRIGHT + +Version 3.x, Copyright (c) 2004-2010, Marcus Holland-Moritz. + +Version 2.x, Copyright (C) 2001, Paul Marquess. + +Version 1.x, Copyright (C) 1999, Kenneth Albanowski. + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=head1 SEE ALSO + +See L. + +=cut + +use strict; + +# Disable broken TRIE-optimization +BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } + +my $VERSION = 3.20; + +my %opt = ( + quiet => 0, + diag => 1, + hints => 1, + changes => 1, + cplusplus => 0, + filter => 1, + strip => 0, + version => 0, +); + +my($ppport) = $0 =~ /([\w.]+)$/; +my $LF = '(?:\r\n|[\r\n])'; # line feed +my $HS = "[ \t]"; # horizontal whitespace + +# Never use C comments in this file! +my $ccs = '/'.'*'; +my $cce = '*'.'/'; +my $rccs = quotemeta $ccs; +my $rcce = quotemeta $cce; + +eval { + require Getopt::Long; + Getopt::Long::GetOptions(\%opt, qw( + help quiet diag! filter! hints! changes! cplusplus strip version + patch=s copy=s diff=s compat-version=s + list-provided list-unsupported api-info=s + )) or usage(); +}; + +if ($@ and grep /^-/, @ARGV) { + usage() if "@ARGV" =~ /^--?h(?:elp)?$/; + die "Getopt::Long not found. Please don't use any options.\n"; +} + +if ($opt{version}) { + print "This is $0 $VERSION.\n"; + exit 0; +} + +usage() if $opt{help}; +strip() if $opt{strip}; + +if (exists $opt{'compat-version'}) { + my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; + if ($@) { + die "Invalid version number format: '$opt{'compat-version'}'\n"; + } + die "Only Perl 5 is supported\n" if $r != 5; + die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; + $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; +} +else { + $opt{'compat-version'} = 5; +} + +my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ + ? ( $1 => { + ($2 ? ( base => $2 ) : ()), + ($3 ? ( todo => $3 ) : ()), + (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), + (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), + (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), + } ) + : die "invalid spec: $_" } qw( +AvFILLp|5.004050||p +AvFILL||| +BhkDISABLE||5.014000| +BhkENABLE||5.014000| +BhkENTRY_set||5.014000| +BhkENTRY||| +BhkFLAGS||| +CALL_BLOCK_HOOKS||| +CLASS|||n +CPERLscope|5.005000||p +CX_CURPAD_SAVE||| +CX_CURPAD_SV||| +CopFILEAV|5.006000||p +CopFILEGV_set|5.006000||p +CopFILEGV|5.006000||p +CopFILESV|5.006000||p +CopFILE_set|5.006000||p +CopFILE|5.006000||p +CopSTASHPV_set|5.006000||p +CopSTASHPV|5.006000||p +CopSTASH_eq|5.006000||p +CopSTASH_set|5.006000||p +CopSTASH|5.006000||p +CopyD|5.009002||p +Copy||| +CvPADLIST||| +CvSTASH||| +CvWEAKOUTSIDE||| +DEFSV_set|5.010001||p +DEFSV|5.004050||p +END_EXTERN_C|5.005000||p +ENTER||| +ERRSV|5.004050||p +EXTEND||| +EXTERN_C|5.005000||p +F0convert|||n +FREETMPS||| +GIMME_V||5.004000|n +GIMME|||n +GROK_NUMERIC_RADIX|5.007002||p +G_ARRAY||| +G_DISCARD||| +G_EVAL||| +G_METHOD|5.006001||p +G_NOARGS||| +G_SCALAR||| +G_VOID||5.004000| +GetVars||| +GvSVn|5.009003||p +GvSV||| +Gv_AMupdate||5.011000| +HEf_SVKEY||5.004000| +HeHASH||5.004000| +HeKEY||5.004000| +HeKLEN||5.004000| +HePV||5.004000| +HeSVKEY_force||5.004000| +HeSVKEY_set||5.004000| +HeSVKEY||5.004000| +HeUTF8||5.010001| +HeVAL||5.004000| +HvENAME||5.013007| +HvNAMELEN_get|5.009003||p +HvNAME_get|5.009003||p +HvNAME||| +INT2PTR|5.006000||p +IN_LOCALE_COMPILETIME|5.007002||p +IN_LOCALE_RUNTIME|5.007002||p +IN_LOCALE|5.007002||p +IN_PERL_COMPILETIME|5.008001||p +IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p +IS_NUMBER_INFINITY|5.007002||p +IS_NUMBER_IN_UV|5.007002||p +IS_NUMBER_NAN|5.007003||p +IS_NUMBER_NEG|5.007002||p +IS_NUMBER_NOT_INT|5.007002||p +IVSIZE|5.006000||p +IVTYPE|5.006000||p +IVdf|5.006000||p +LEAVE||| +LINKLIST||5.013006| +LVRET||| +MARK||| +MULTICALL||5.014000| +MY_CXT_CLONE|5.009002||p +MY_CXT_INIT|5.007003||p +MY_CXT|5.007003||p +MoveD|5.009002||p +Move||| +NOOP|5.005000||p +NUM2PTR|5.006000||p +NVTYPE|5.006000||p +NVef|5.006001||p +NVff|5.006001||p +NVgf|5.006001||p +Newxc|5.009003||p +Newxz|5.009003||p +Newx|5.009003||p +Nullav||| +Nullch||| +Nullcv||| +Nullhv||| +Nullsv||| +OP_CLASS||5.013007| +OP_DESC||5.007003| +OP_NAME||5.007003| +ORIGMARK||| +PAD_BASE_SV||| +PAD_CLONE_VARS||| +PAD_COMPNAME_FLAGS||| +PAD_COMPNAME_GEN_set||| +PAD_COMPNAME_GEN||| +PAD_COMPNAME_OURSTASH||| +PAD_COMPNAME_PV||| +PAD_COMPNAME_TYPE||| +PAD_DUP||| +PAD_RESTORE_LOCAL||| +PAD_SAVE_LOCAL||| +PAD_SAVE_SETNULLPAD||| +PAD_SETSV||| +PAD_SET_CUR_NOSAVE||| +PAD_SET_CUR||| +PAD_SVl||| +PAD_SV||| +PERLIO_FUNCS_CAST|5.009003||p +PERLIO_FUNCS_DECL|5.009003||p +PERL_ABS|5.008001||p +PERL_BCDVERSION|5.014000||p +PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p +PERL_HASH|5.004000||p +PERL_INT_MAX|5.004000||p +PERL_INT_MIN|5.004000||p +PERL_LONG_MAX|5.004000||p +PERL_LONG_MIN|5.004000||p +PERL_MAGIC_arylen|5.007002||p +PERL_MAGIC_backref|5.007002||p +PERL_MAGIC_bm|5.007002||p +PERL_MAGIC_collxfrm|5.007002||p +PERL_MAGIC_dbfile|5.007002||p +PERL_MAGIC_dbline|5.007002||p +PERL_MAGIC_defelem|5.007002||p +PERL_MAGIC_envelem|5.007002||p +PERL_MAGIC_env|5.007002||p +PERL_MAGIC_ext|5.007002||p +PERL_MAGIC_fm|5.007002||p +PERL_MAGIC_glob|5.014000||p +PERL_MAGIC_isaelem|5.007002||p +PERL_MAGIC_isa|5.007002||p +PERL_MAGIC_mutex|5.014000||p +PERL_MAGIC_nkeys|5.007002||p +PERL_MAGIC_overload_elem|5.007002||p +PERL_MAGIC_overload_table|5.007002||p +PERL_MAGIC_overload|5.007002||p +PERL_MAGIC_pos|5.007002||p +PERL_MAGIC_qr|5.007002||p +PERL_MAGIC_regdata|5.007002||p +PERL_MAGIC_regdatum|5.007002||p +PERL_MAGIC_regex_global|5.007002||p +PERL_MAGIC_shared_scalar|5.007003||p +PERL_MAGIC_shared|5.007003||p +PERL_MAGIC_sigelem|5.007002||p +PERL_MAGIC_sig|5.007002||p +PERL_MAGIC_substr|5.007002||p +PERL_MAGIC_sv|5.007002||p +PERL_MAGIC_taint|5.007002||p +PERL_MAGIC_tiedelem|5.007002||p +PERL_MAGIC_tiedscalar|5.007002||p +PERL_MAGIC_tied|5.007002||p +PERL_MAGIC_utf8|5.008001||p +PERL_MAGIC_uvar_elem|5.007003||p +PERL_MAGIC_uvar|5.007002||p +PERL_MAGIC_vec|5.007002||p +PERL_MAGIC_vstring|5.008001||p +PERL_PV_ESCAPE_ALL|5.009004||p +PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p +PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p +PERL_PV_ESCAPE_NOCLEAR|5.009004||p +PERL_PV_ESCAPE_QUOTE|5.009004||p +PERL_PV_ESCAPE_RE|5.009005||p +PERL_PV_ESCAPE_UNI_DETECT|5.009004||p +PERL_PV_ESCAPE_UNI|5.009004||p +PERL_PV_PRETTY_DUMP|5.009004||p +PERL_PV_PRETTY_ELLIPSES|5.010000||p +PERL_PV_PRETTY_LTGT|5.009004||p +PERL_PV_PRETTY_NOCLEAR|5.010000||p +PERL_PV_PRETTY_QUOTE|5.009004||p +PERL_PV_PRETTY_REGPROP|5.009004||p +PERL_QUAD_MAX|5.004000||p +PERL_QUAD_MIN|5.004000||p +PERL_REVISION|5.006000||p +PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p +PERL_SCAN_DISALLOW_PREFIX|5.007003||p +PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p +PERL_SCAN_SILENT_ILLDIGIT|5.008001||p +PERL_SHORT_MAX|5.004000||p +PERL_SHORT_MIN|5.004000||p +PERL_SIGNALS_UNSAFE_FLAG|5.008001||p +PERL_SUBVERSION|5.006000||p +PERL_SYS_INIT3||5.006000| +PERL_SYS_INIT||| +PERL_SYS_TERM||5.014000| +PERL_UCHAR_MAX|5.004000||p +PERL_UCHAR_MIN|5.004000||p +PERL_UINT_MAX|5.004000||p +PERL_UINT_MIN|5.004000||p +PERL_ULONG_MAX|5.004000||p +PERL_ULONG_MIN|5.004000||p +PERL_UNUSED_ARG|5.009003||p +PERL_UNUSED_CONTEXT|5.009004||p +PERL_UNUSED_DECL|5.007002||p +PERL_UNUSED_VAR|5.007002||p +PERL_UQUAD_MAX|5.004000||p +PERL_UQUAD_MIN|5.004000||p +PERL_USE_GCC_BRACE_GROUPS|5.009004||p +PERL_USHORT_MAX|5.004000||p +PERL_USHORT_MIN|5.004000||p +PERL_VERSION|5.006000||p +PL_DBsignal|5.005000||p +PL_DBsingle|||pn +PL_DBsub|||pn +PL_DBtrace|||pn +PL_Sv|5.005000||p +PL_bufend|5.014000||p +PL_bufptr|5.014000||p +PL_compiling|5.004050||p +PL_copline|5.014000||p +PL_curcop|5.004050||p +PL_curstash|5.004050||p +PL_debstash|5.004050||p +PL_defgv|5.004050||p +PL_diehook|5.004050||p +PL_dirty|5.004050||p +PL_dowarn|||pn +PL_errgv|5.004050||p +PL_error_count|5.014000||p +PL_expect|5.014000||p +PL_hexdigit|5.005000||p +PL_hints|5.005000||p +PL_in_my_stash|5.014000||p +PL_in_my|5.014000||p +PL_keyword_plugin||5.011002| +PL_last_in_gv|||n +PL_laststatval|5.005000||p +PL_lex_state|5.014000||p +PL_lex_stuff|5.014000||p +PL_linestr|5.014000||p +PL_modglobal||5.005000|n +PL_na|5.004050||pn +PL_no_modify|5.006000||p +PL_ofsgv|||n +PL_opfreehook||5.011000|n +PL_parser|5.009005|5.009005|p +PL_peepp||5.007003|n +PL_perl_destruct_level|5.004050||p +PL_perldb|5.004050||p +PL_ppaddr|5.006000||p +PL_rpeepp||5.013005|n +PL_rsfp_filters|5.014000||p +PL_rsfp|5.014000||p +PL_rs|||n +PL_signals|5.008001||p +PL_stack_base|5.004050||p +PL_stack_sp|5.004050||p +PL_statcache|5.005000||p +PL_stdingv|5.004050||p +PL_sv_arenaroot|5.004050||p +PL_sv_no|5.004050||pn +PL_sv_undef|5.004050||pn +PL_sv_yes|5.004050||pn +PL_tainted|5.004050||p +PL_tainting|5.004050||p +PL_tokenbuf|5.014000||p +POP_MULTICALL||5.014000| +POPi|||n +POPl|||n +POPn|||n +POPpbytex||5.007001|n +POPpx||5.005030|n +POPp|||n +POPs|||n +PTR2IV|5.006000||p +PTR2NV|5.006000||p +PTR2UV|5.006000||p +PTR2nat|5.009003||p +PTR2ul|5.007001||p +PTRV|5.006000||p +PUSHMARK||| +PUSH_MULTICALL||5.014000| +PUSHi||| +PUSHmortal|5.009002||p +PUSHn||| +PUSHp||| +PUSHs||| +PUSHu|5.004000||p +PUTBACK||| +PerlIO_clearerr||5.007003| +PerlIO_close||5.007003| +PerlIO_context_layers||5.009004| +PerlIO_eof||5.007003| +PerlIO_error||5.007003| +PerlIO_fileno||5.007003| +PerlIO_fill||5.007003| +PerlIO_flush||5.007003| +PerlIO_get_base||5.007003| +PerlIO_get_bufsiz||5.007003| +PerlIO_get_cnt||5.007003| +PerlIO_get_ptr||5.007003| +PerlIO_read||5.007003| +PerlIO_seek||5.007003| +PerlIO_set_cnt||5.007003| +PerlIO_set_ptrcnt||5.007003| +PerlIO_setlinebuf||5.007003| +PerlIO_stderr||5.007003| +PerlIO_stdin||5.007003| +PerlIO_stdout||5.007003| +PerlIO_tell||5.007003| +PerlIO_unread||5.007003| +PerlIO_write||5.007003| +Perl_signbit||5.009005|n +PoisonFree|5.009004||p +PoisonNew|5.009004||p +PoisonWith|5.009004||p +Poison|5.008000||p +RETVAL|||n +Renewc||| +Renew||| +SAVECLEARSV||| +SAVECOMPPAD||| +SAVEPADSV||| +SAVETMPS||| +SAVE_DEFSV|5.004050||p +SPAGAIN||| +SP||| +START_EXTERN_C|5.005000||p +START_MY_CXT|5.007003||p +STMT_END|||p +STMT_START|||p +STR_WITH_LEN|5.009003||p +ST||| +SV_CONST_RETURN|5.009003||p +SV_COW_DROP_PV|5.008001||p +SV_COW_SHARED_HASH_KEYS|5.009005||p +SV_GMAGIC|5.007002||p +SV_HAS_TRAILING_NUL|5.009004||p +SV_IMMEDIATE_UNREF|5.007001||p +SV_MUTABLE_RETURN|5.009003||p +SV_NOSTEAL|5.009002||p +SV_SMAGIC|5.009003||p +SV_UTF8_NO_ENCODING|5.008001||p +SVfARG|5.009005||p +SVf_UTF8|5.006000||p +SVf|5.006000||p +SVt_IV||| +SVt_NV||| +SVt_PVAV||| +SVt_PVCV||| +SVt_PVHV||| +SVt_PVMG||| +SVt_PV||| +Safefree||| +Slab_Alloc||| +Slab_Free||| +Slab_to_rw||| +StructCopy||| +SvCUR_set||| +SvCUR||| +SvEND||| +SvGAMAGIC||5.006001| +SvGETMAGIC|5.004050||p +SvGROW||| +SvIOK_UV||5.006000| +SvIOK_notUV||5.006000| +SvIOK_off||| +SvIOK_only_UV||5.006000| +SvIOK_only||| +SvIOK_on||| +SvIOKp||| +SvIOK||| +SvIVX||| +SvIV_nomg|5.009001||p +SvIV_set||| +SvIVx||| +SvIV||| +SvIsCOW_shared_hash||5.008003| +SvIsCOW||5.008003| +SvLEN_set||| +SvLEN||| +SvLOCK||5.007003| +SvMAGIC_set|5.009003||p +SvNIOK_off||| +SvNIOKp||| +SvNIOK||| +SvNOK_off||| +SvNOK_only||| +SvNOK_on||| +SvNOKp||| +SvNOK||| +SvNVX||| +SvNV_nomg||5.013002| +SvNV_set||| +SvNVx||| +SvNV||| +SvOK||| +SvOOK_offset||5.011000| +SvOOK||| +SvPOK_off||| +SvPOK_only_UTF8||5.006000| +SvPOK_only||| +SvPOK_on||| +SvPOKp||| +SvPOK||| +SvPVX_const|5.009003||p +SvPVX_mutable|5.009003||p +SvPVX||| +SvPV_const|5.009003||p +SvPV_flags_const_nolen|5.009003||p +SvPV_flags_const|5.009003||p +SvPV_flags_mutable|5.009003||p +SvPV_flags|5.007002||p +SvPV_force_flags_mutable|5.009003||p +SvPV_force_flags_nolen|5.009003||p +SvPV_force_flags|5.007002||p +SvPV_force_mutable|5.009003||p +SvPV_force_nolen|5.009003||p +SvPV_force_nomg_nolen|5.009003||p +SvPV_force_nomg|5.007002||p +SvPV_force|||p +SvPV_mutable|5.009003||p +SvPV_nolen_const|5.009003||p +SvPV_nolen|5.006000||p +SvPV_nomg_const_nolen|5.009003||p +SvPV_nomg_const|5.009003||p +SvPV_nomg_nolen||5.013007| +SvPV_nomg|5.007002||p +SvPV_renew|5.009003||p +SvPV_set||| +SvPVbyte_force||5.009002| +SvPVbyte_nolen||5.006000| +SvPVbytex_force||5.006000| +SvPVbytex||5.006000| +SvPVbyte|5.006000||p +SvPVutf8_force||5.006000| +SvPVutf8_nolen||5.006000| +SvPVutf8x_force||5.006000| +SvPVutf8x||5.006000| +SvPVutf8||5.006000| +SvPVx||| +SvPV||| +SvREFCNT_dec||| +SvREFCNT_inc_NN|5.009004||p +SvREFCNT_inc_simple_NN|5.009004||p +SvREFCNT_inc_simple_void_NN|5.009004||p +SvREFCNT_inc_simple_void|5.009004||p +SvREFCNT_inc_simple|5.009004||p +SvREFCNT_inc_void_NN|5.009004||p +SvREFCNT_inc_void|5.009004||p +SvREFCNT_inc|||p +SvREFCNT||| +SvROK_off||| +SvROK_on||| +SvROK||| +SvRV_set|5.009003||p +SvRV||| +SvRXOK||5.009005| +SvRX||5.009005| +SvSETMAGIC||| +SvSHARED_HASH|5.009003||p +SvSHARE||5.007003| +SvSTASH_set|5.009003||p +SvSTASH||| +SvSetMagicSV_nosteal||5.004000| +SvSetMagicSV||5.004000| +SvSetSV_nosteal||5.004000| +SvSetSV||| +SvTAINTED_off||5.004000| +SvTAINTED_on||5.004000| +SvTAINTED||5.004000| +SvTAINT||| +SvTRUE_nomg||5.013006| +SvTRUE||| +SvTYPE||| +SvUNLOCK||5.007003| +SvUOK|5.007001|5.006000|p +SvUPGRADE||| +SvUTF8_off||5.006000| +SvUTF8_on||5.006000| +SvUTF8||5.006000| +SvUVXx|5.004000||p +SvUVX|5.004000||p +SvUV_nomg|5.009001||p +SvUV_set|5.009003||p +SvUVx|5.004000||p +SvUV|5.004000||p +SvVOK||5.008001| +SvVSTRING_mg|5.009004||p +THIS|||n +UNDERBAR|5.009002||p +UTF8_MAXBYTES|5.009002||p +UVSIZE|5.006000||p +UVTYPE|5.006000||p +UVXf|5.007001||p +UVof|5.006000||p +UVuf|5.006000||p +UVxf|5.006000||p +WARN_ALL|5.006000||p +WARN_AMBIGUOUS|5.006000||p +WARN_ASSERTIONS|5.014000||p +WARN_BAREWORD|5.006000||p +WARN_CLOSED|5.006000||p +WARN_CLOSURE|5.006000||p +WARN_DEBUGGING|5.006000||p +WARN_DEPRECATED|5.006000||p +WARN_DIGIT|5.006000||p +WARN_EXEC|5.006000||p +WARN_EXITING|5.006000||p +WARN_GLOB|5.006000||p +WARN_INPLACE|5.006000||p +WARN_INTERNAL|5.006000||p +WARN_IO|5.006000||p +WARN_LAYER|5.008000||p +WARN_MALLOC|5.006000||p +WARN_MISC|5.006000||p +WARN_NEWLINE|5.006000||p +WARN_NUMERIC|5.006000||p +WARN_ONCE|5.006000||p +WARN_OVERFLOW|5.006000||p +WARN_PACK|5.006000||p +WARN_PARENTHESIS|5.006000||p +WARN_PIPE|5.006000||p +WARN_PORTABLE|5.006000||p +WARN_PRECEDENCE|5.006000||p +WARN_PRINTF|5.006000||p +WARN_PROTOTYPE|5.006000||p +WARN_QW|5.006000||p +WARN_RECURSION|5.006000||p +WARN_REDEFINE|5.006000||p +WARN_REGEXP|5.006000||p +WARN_RESERVED|5.006000||p +WARN_SEMICOLON|5.006000||p +WARN_SEVERE|5.006000||p +WARN_SIGNAL|5.006000||p +WARN_SUBSTR|5.006000||p +WARN_SYNTAX|5.006000||p +WARN_TAINT|5.006000||p +WARN_THREADS|5.008000||p +WARN_UNINITIALIZED|5.006000||p +WARN_UNOPENED|5.006000||p +WARN_UNPACK|5.006000||p +WARN_UNTIE|5.006000||p +WARN_UTF8|5.006000||p +WARN_VOID|5.006000||p +XCPT_CATCH|5.009002||p +XCPT_RETHROW|5.009002||p +XCPT_TRY_END|5.009002||p +XCPT_TRY_START|5.009002||p +XPUSHi||| +XPUSHmortal|5.009002||p +XPUSHn||| +XPUSHp||| +XPUSHs||| +XPUSHu|5.004000||p +XSPROTO|5.010000||p +XSRETURN_EMPTY||| +XSRETURN_IV||| +XSRETURN_NO||| +XSRETURN_NV||| +XSRETURN_PV||| +XSRETURN_UNDEF||| +XSRETURN_UV|5.008001||p +XSRETURN_YES||| +XSRETURN|||p +XST_mIV||| +XST_mNO||| +XST_mNV||| +XST_mPV||| +XST_mUNDEF||| +XST_mUV|5.008001||p +XST_mYES||| +XS_APIVERSION_BOOTCHECK||5.013004| +XS_VERSION_BOOTCHECK||| +XS_VERSION||| +XSprePUSH|5.006000||p +XS||| +XopDISABLE||5.014000| +XopENABLE||5.014000| +XopENTRY_set||5.014000| +XopENTRY||5.014000| +XopFLAGS||5.013007| +ZeroD|5.009002||p +Zero||| +_aMY_CXT|5.007003||p +_append_range_to_invlist||| +_new_invlist||| +_pMY_CXT|5.007003||p +_swash_inversion_hash||| +_swash_to_invlist||| +aMY_CXT_|5.007003||p +aMY_CXT|5.007003||p +aTHXR_|5.014000||p +aTHXR|5.014000||p +aTHX_|5.006000||p +aTHX|5.006000||p +add_alternate||| +add_cp_to_invlist||| +add_data|||n +add_range_to_invlist||| +add_utf16_textfilter||| +addmad||| +allocmy||| +amagic_call||| +amagic_cmp_locale||| +amagic_cmp||| +amagic_deref_call||5.013007| +amagic_i_ncmp||| +amagic_ncmp||| +anonymise_cv_maybe||| +any_dup||| +ao||| +append_madprops||| +apply_attrs_my||| +apply_attrs_string||5.006001| +apply_attrs||| +apply||| +assert_uft8_cache_coherent||| +atfork_lock||5.007003|n +atfork_unlock||5.007003|n +av_arylen_p||5.009003| +av_clear||| +av_create_and_push||5.009005| +av_create_and_unshift_one||5.009005| +av_delete||5.006000| +av_exists||5.006000| +av_extend||| +av_fetch||| +av_fill||| +av_iter_p||5.011000| +av_len||| +av_make||| +av_pop||| +av_push||| +av_reify||| +av_shift||| +av_store||| +av_undef||| +av_unshift||| +ax|||n +bad_type||| +bind_match||| +block_end||| +block_gimme||5.004000| +block_start||| +blockhook_register||5.013003| +boolSV|5.004000||p +boot_core_PerlIO||| +boot_core_UNIVERSAL||| +boot_core_mro||| +bytes_cmp_utf8||5.013007| +bytes_from_utf8||5.007001| +bytes_to_uni|||n +bytes_to_utf8||5.006001| +call_argv|5.006000||p +call_atexit||5.006000| +call_list||5.004000| +call_method|5.006000||p +call_pv|5.006000||p +call_sv|5.006000||p +caller_cx||5.013005| +calloc||5.007002|n +cando||| +cast_i32||5.006000| +cast_iv||5.006000| +cast_ulong||5.006000| +cast_uv||5.006000| +check_type_and_open||| +check_uni||| +check_utf8_print||| +checkcomma||| +checkposixcc||| +ckWARN|5.006000||p +ck_entersub_args_list||5.013006| +ck_entersub_args_proto_or_list||5.013006| +ck_entersub_args_proto||5.013006| +ck_warner_d||5.011001|v +ck_warner||5.011001|v +ckwarn_common||| +ckwarn_d||5.009003| +ckwarn||5.009003| +cl_and|||n +cl_anything|||n +cl_init|||n +cl_is_anything|||n +cl_or|||n +clear_placeholders||| +clone_params_del|||n +clone_params_new|||n +closest_cop||| +convert||| +cop_free||| +cop_hints_2hv||5.013007| +cop_hints_fetch_pvn||5.013007| +cop_hints_fetch_pvs||5.013007| +cop_hints_fetch_pv||5.013007| +cop_hints_fetch_sv||5.013007| +cophh_2hv||5.013007| +cophh_copy||5.013007| +cophh_delete_pvn||5.013007| +cophh_delete_pvs||5.013007| +cophh_delete_pv||5.013007| +cophh_delete_sv||5.013007| +cophh_fetch_pvn||5.013007| +cophh_fetch_pvs||5.013007| +cophh_fetch_pv||5.013007| +cophh_fetch_sv||5.013007| +cophh_free||5.013007| +cophh_new_empty||5.014000| +cophh_store_pvn||5.013007| +cophh_store_pvs||5.013007| +cophh_store_pv||5.013007| +cophh_store_sv||5.013007| +cr_textfilter||| +create_eval_scope||| +croak_no_modify||5.013003| +croak_nocontext|||vn +croak_sv||5.013001| +croak_xs_usage||5.010001| +croak|||v +csighandler||5.009003|n +curmad||| +curse||| +custom_op_desc||5.007003| +custom_op_name||5.007003| +custom_op_register||5.013007| +custom_op_xop||5.013007| +cv_ckproto_len||| +cv_clone||| +cv_const_sv||5.004000| +cv_dump||| +cv_get_call_checker||5.013006| +cv_set_call_checker||5.013006| +cv_undef||| +cvgv_set||| +cvstash_set||| +cx_dump||5.005000| +cx_dup||| +cxinc||| +dAXMARK|5.009003||p +dAX|5.007002||p +dITEMS|5.007002||p +dMARK||| +dMULTICALL||5.009003| +dMY_CXT_SV|5.007003||p +dMY_CXT|5.007003||p +dNOOP|5.006000||p +dORIGMARK||| +dSP||| +dTHR|5.004050||p +dTHXR|5.014000||p +dTHXa|5.006000||p +dTHXoa|5.006000||p +dTHX|5.006000||p +dUNDERBAR|5.009002||p +dVAR|5.009003||p +dXCPT|5.009002||p +dXSARGS||| +dXSI32||| +dXSTARG|5.006000||p +deb_curcv||| +deb_nocontext|||vn +deb_stack_all||| +deb_stack_n||| +debop||5.005000| +debprofdump||5.005000| +debprof||| +debstackptrs||5.007003| +debstack||5.007003| +debug_start_match||| +deb||5.007003|v +del_sv||| +delete_eval_scope||| +delimcpy||5.004000|n +deprecate_commaless_var_list||| +despatch_signals||5.007001| +destroy_matcher||| +die_nocontext|||vn +die_sv||5.013001| +die_unwind||| +die|||v +dirp_dup||| +div128||| +djSP||| +do_aexec5||| +do_aexec||| +do_aspawn||| +do_binmode||5.004050| +do_chomp||| +do_close||| +do_delete_local||| +do_dump_pad||| +do_eof||| +do_exec3||| +do_execfree||| +do_exec||| +do_gv_dump||5.006000| +do_gvgv_dump||5.006000| +do_hv_dump||5.006000| +do_ipcctl||| +do_ipcget||| +do_join||| +do_magic_dump||5.006000| +do_msgrcv||| +do_msgsnd||| +do_oddball||| +do_op_dump||5.006000| +do_op_xmldump||| +do_open9||5.006000| +do_openn||5.007001| +do_open||5.004000| +do_pmop_dump||5.006000| +do_pmop_xmldump||| +do_print||| +do_readline||| +do_seek||| +do_semop||| +do_shmio||| +do_smartmatch||| +do_spawn_nowait||| +do_spawn||| +do_sprintf||| +do_sv_dump||5.006000| +do_sysseek||| +do_tell||| +do_trans_complex_utf8||| +do_trans_complex||| +do_trans_count_utf8||| +do_trans_count||| +do_trans_simple_utf8||| +do_trans_simple||| +do_trans||| +do_vecget||| +do_vecset||| +do_vop||| +docatch||| +doeval||| +dofile||| +dofindlabel||| +doform||| +doing_taint||5.008001|n +dooneliner||| +doopen_pm||| +doparseform||| +dopoptoeval||| +dopoptogiven||| +dopoptolabel||| +dopoptoloop||| +dopoptosub_at||| +dopoptowhen||| +doref||5.009003| +dounwind||| +dowantarray||| +dump_all_perl||| +dump_all||5.006000| +dump_eval||5.006000| +dump_exec_pos||| +dump_fds||| +dump_form||5.006000| +dump_indent||5.006000|v +dump_mstats||| +dump_packsubs_perl||| +dump_packsubs||5.006000| +dump_sub_perl||| +dump_sub||5.006000| +dump_sv_child||| +dump_trie_interim_list||| +dump_trie_interim_table||| +dump_trie||| +dump_vindent||5.006000| +dumpuntil||| +dup_attrlist||| +emulate_cop_io||| +eval_pv|5.006000||p +eval_sv|5.006000||p +exec_failed||| +expect_number||| +fbm_compile||5.005000| +fbm_instr||5.005000| +feature_is_enabled||| +fetch_cop_label||5.011000| +filter_add||| +filter_del||| +filter_gets||| +filter_read||| +find_and_forget_pmops||| +find_array_subscript||| +find_beginning||| +find_byclass||| +find_hash_subscript||| +find_in_my_stash||| +find_runcv||5.008001| +find_rundefsvoffset||5.009002| +find_rundefsv||5.013002| +find_script||| +find_uninit_var||| +first_symbol|||n +foldEQ_latin1||5.013008|n +foldEQ_locale||5.013002|n +foldEQ_utf8_flags||5.013010| +foldEQ_utf8||5.013002| +foldEQ||5.013002|n +fold_constants||| +forbid_setid||| +force_ident||| +force_list||| +force_next||| +force_strict_version||| +force_version||| +force_word||| +forget_pmop||| +form_nocontext|||vn +form||5.004000|v +fp_dup||| +fprintf_nocontext|||vn +free_global_struct||| +free_tied_hv_pool||| +free_tmps||| +gen_constant_list||| +get_aux_mg||| +get_av|5.006000||p +get_context||5.006000|n +get_cvn_flags|5.009005||p +get_cvs|5.011000||p +get_cv|5.006000||p +get_db_sub||| +get_debug_opts||| +get_hash_seed||| +get_hv|5.006000||p +get_mstats||| +get_no_modify||| +get_num||| +get_op_descs||5.005000| +get_op_names||5.005000| +get_opargs||| +get_ppaddr||5.006000| +get_re_arg||| +get_sv|5.006000||p +get_vtbl||5.005030| +getcwd_sv||5.007002| +getenv_len||| +glob_2number||| +glob_assign_glob||| +glob_assign_ref||| +gp_dup||| +gp_free||| +gp_ref||| +grok_bin|5.007003||p +grok_bslash_c||| +grok_bslash_o||| +grok_hex|5.007003||p +grok_number|5.007002||p +grok_numeric_radix|5.007002||p +grok_oct|5.007003||p +group_end||| +gv_AVadd||| +gv_HVadd||| +gv_IOadd||| +gv_SVadd||| +gv_add_by_type||5.011000| +gv_autoload4||5.004000| +gv_check||| +gv_const_sv||5.009003| +gv_dump||5.006000| +gv_efullname3||5.004000| +gv_efullname4||5.006001| +gv_efullname||| +gv_ename||| +gv_fetchfile_flags||5.009005| +gv_fetchfile||| +gv_fetchmeth_autoload||5.007003| +gv_fetchmethod_autoload||5.004000| +gv_fetchmethod_flags||5.011000| +gv_fetchmethod||| +gv_fetchmeth||| +gv_fetchpvn_flags|5.009002||p +gv_fetchpvs|5.009004||p +gv_fetchpv||| +gv_fetchsv|5.009002||p +gv_fullname3||5.004000| +gv_fullname4||5.006001| +gv_fullname||| +gv_get_super_pkg||| +gv_handler||5.007001| +gv_init_sv||| +gv_init||| +gv_magicalize_isa||| +gv_magicalize_overload||| +gv_name_set||5.009004| +gv_stashpvn|5.004000||p +gv_stashpvs|5.009003||p +gv_stashpv||| +gv_stashsv||| +gv_try_downgrade||| +he_dup||| +hek_dup||| +hfreeentries||| +hsplit||| +hv_assert||| +hv_auxinit|||n +hv_backreferences_p||| +hv_clear_placeholders||5.009001| +hv_clear||| +hv_common_key_len||5.010000| +hv_common||5.010000| +hv_copy_hints_hv||5.009004| +hv_delayfree_ent||5.004000| +hv_delete_common||| +hv_delete_ent||5.004000| +hv_delete||| +hv_eiter_p||5.009003| +hv_eiter_set||5.009003| +hv_ename_add||| +hv_ename_delete||| +hv_exists_ent||5.004000| +hv_exists||| +hv_fetch_ent||5.004000| +hv_fetchs|5.009003||p +hv_fetch||| +hv_fill||5.013002| +hv_free_ent||5.004000| +hv_iterinit||| +hv_iterkeysv||5.004000| +hv_iterkey||| +hv_iternext_flags||5.008000| +hv_iternextsv||| +hv_iternext||| +hv_iterval||| +hv_kill_backrefs||| +hv_ksplit||5.004000| +hv_magic_check|||n +hv_magic||| +hv_name_set||5.009003| +hv_notallowed||| +hv_placeholders_get||5.009003| +hv_placeholders_p||5.009003| +hv_placeholders_set||5.009003| +hv_riter_p||5.009003| +hv_riter_set||5.009003| +hv_scalar||5.009001| +hv_store_ent||5.004000| +hv_store_flags||5.008000| +hv_stores|5.009004||p +hv_store||| +hv_undef_flags||| +hv_undef||| +ibcmp_locale||5.004000| +ibcmp_utf8||5.007003| +ibcmp||| +incline||| +incpush_if_exists||| +incpush_use_sep||| +incpush||| +ingroup||| +init_argv_symbols||| +init_dbargs||| +init_debugger||| +init_global_struct||| +init_i18nl10n||5.006000| +init_i18nl14n||5.006000| +init_ids||| +init_interp||| +init_main_stash||| +init_perllib||| +init_postdump_symbols||| +init_predump_symbols||| +init_stacks||5.005000| +init_tm||5.007002| +instr|||n +intro_my||| +intuit_method||| +intuit_more||| +invert||| +invlist_array||| +invlist_destroy||| +invlist_extend||| +invlist_intersection||| +invlist_len||| +invlist_max||| +invlist_set_array||| +invlist_set_len||| +invlist_set_max||| +invlist_trim||| +invlist_union||| +invoke_exception_hook||| +io_close||| +isALNUMC|5.006000||p +isALPHA||| +isASCII|5.006000||p +isBLANK|5.006001||p +isCNTRL|5.006000||p +isDIGIT||| +isGRAPH|5.006000||p +isGV_with_GP|5.009004||p +isLOWER||| +isOCTAL||5.013005| +isPRINT|5.004000||p +isPSXSPC|5.006001||p +isPUNCT|5.006000||p +isSPACE||| +isUPPER||| +isWORDCHAR||5.013006| +isXDIGIT|5.006000||p +is_an_int||| +is_ascii_string||5.011000|n +is_gv_magical_sv||| +is_handle_constructor|||n +is_inplace_av||| +is_list_assignment||| +is_lvalue_sub||5.007001| +is_uni_alnum_lc||5.006000| +is_uni_alnum||5.006000| +is_uni_alpha_lc||5.006000| +is_uni_alpha||5.006000| +is_uni_ascii_lc||5.006000| +is_uni_ascii||5.006000| +is_uni_cntrl_lc||5.006000| +is_uni_cntrl||5.006000| +is_uni_digit_lc||5.006000| +is_uni_digit||5.006000| +is_uni_graph_lc||5.006000| +is_uni_graph||5.006000| +is_uni_idfirst_lc||5.006000| +is_uni_idfirst||5.006000| +is_uni_lower_lc||5.006000| +is_uni_lower||5.006000| +is_uni_print_lc||5.006000| +is_uni_print||5.006000| +is_uni_punct_lc||5.006000| +is_uni_punct||5.006000| +is_uni_space_lc||5.006000| +is_uni_space||5.006000| +is_uni_upper_lc||5.006000| +is_uni_upper||5.006000| +is_uni_xdigit_lc||5.006000| +is_uni_xdigit||5.006000| +is_utf8_X_LVT||| +is_utf8_X_LV_LVT_V||| +is_utf8_X_LV||| +is_utf8_X_L||| +is_utf8_X_T||| +is_utf8_X_V||| +is_utf8_X_begin||| +is_utf8_X_extend||| +is_utf8_X_non_hangul||| +is_utf8_X_prepend||| +is_utf8_alnum||5.006000| +is_utf8_alpha||5.006000| +is_utf8_ascii||5.006000| +is_utf8_char_slow|||n +is_utf8_char||5.006000|n +is_utf8_cntrl||5.006000| +is_utf8_common||| +is_utf8_digit||5.006000| +is_utf8_graph||5.006000| +is_utf8_idcont||5.008000| +is_utf8_idfirst||5.006000| +is_utf8_lower||5.006000| +is_utf8_mark||5.006000| +is_utf8_perl_space||5.011001| +is_utf8_perl_word||5.011001| +is_utf8_posix_digit||5.011001| +is_utf8_print||5.006000| +is_utf8_punct||5.006000| +is_utf8_space||5.006000| +is_utf8_string_loclen||5.009003|n +is_utf8_string_loc||5.008001|n +is_utf8_string||5.006001|n +is_utf8_upper||5.006000| +is_utf8_xdigit||5.006000| +is_utf8_xidcont||5.013010| +is_utf8_xidfirst||5.013010| +isa_lookup||| +items|||n +ix|||n +jmaybe||| +join_exact||| +keyword_plugin_standard||| +keyword||| +leave_scope||| +lex_bufutf8||5.011002| +lex_discard_to||5.011002| +lex_grow_linestr||5.011002| +lex_next_chunk||5.011002| +lex_peek_unichar||5.011002| +lex_read_space||5.011002| +lex_read_to||5.011002| +lex_read_unichar||5.011002| +lex_start||5.009005| +lex_stuff_pvn||5.011002| +lex_stuff_pvs||5.013005| +lex_stuff_pv||5.013006| +lex_stuff_sv||5.011002| +lex_unstuff||5.011002| +listkids||| +list||| +load_module_nocontext|||vn +load_module|5.006000||pv +localize||| +looks_like_bool||| +looks_like_number||| +lop||| +mPUSHi|5.009002||p +mPUSHn|5.009002||p +mPUSHp|5.009002||p +mPUSHs|5.010001||p +mPUSHu|5.009002||p +mXPUSHi|5.009002||p +mXPUSHn|5.009002||p +mXPUSHp|5.009002||p +mXPUSHs|5.010001||p +mXPUSHu|5.009002||p +mad_free||| +madlex||| +madparse||| +magic_clear_all_env||| +magic_clearenv||| +magic_clearhints||| +magic_clearhint||| +magic_clearisa||| +magic_clearpack||| +magic_clearsig||| +magic_dump||5.006000| +magic_existspack||| +magic_freearylen_p||| +magic_freeovrld||| +magic_getarylen||| +magic_getdefelem||| +magic_getnkeys||| +magic_getpack||| +magic_getpos||| +magic_getsig||| +magic_getsubstr||| +magic_gettaint||| +magic_getuvar||| +magic_getvec||| +magic_get||| +magic_killbackrefs||| +magic_len||| +magic_methcall1||| +magic_methcall|||v +magic_methpack||| +magic_nextpack||| +magic_regdata_cnt||| +magic_regdatum_get||| +magic_regdatum_set||| +magic_scalarpack||| +magic_set_all_env||| +magic_setamagic||| +magic_setarylen||| +magic_setcollxfrm||| +magic_setdbline||| +magic_setdefelem||| +magic_setenv||| +magic_sethint||| +magic_setisa||| +magic_setmglob||| +magic_setnkeys||| +magic_setpack||| +magic_setpos||| +magic_setregexp||| +magic_setsig||| +magic_setsubstr||| +magic_settaint||| +magic_setutf8||| +magic_setuvar||| +magic_setvec||| +magic_set||| +magic_sizepack||| +magic_wipepack||| +make_matcher||| +make_trie_failtable||| +make_trie||| +malloc_good_size|||n +malloced_size|||n +malloc||5.007002|n +markstack_grow||| +matcher_matches_sv||| +measure_struct||| +memEQs|5.009005||p +memEQ|5.004000||p +memNEs|5.009005||p +memNE|5.004000||p +mem_collxfrm||| +mem_log_common|||n +mess_alloc||| +mess_nocontext|||vn +mess_sv||5.013001| +mess||5.006000|v +method_common||| +mfree||5.007002|n +mg_clear||| +mg_copy||| +mg_dup||| +mg_findext||5.013008| +mg_find||| +mg_free_type||5.013006| +mg_free||| +mg_get||| +mg_length||5.005000| +mg_localize||| +mg_magical||| +mg_set||| +mg_size||5.005000| +mini_mktime||5.007002| +missingterm||| +mode_from_discipline||| +modkids||| +mod||| +more_bodies||| +more_sv||| +moreswitches||| +mro_clean_isarev||| +mro_gather_and_rename||| +mro_get_from_name||5.010001| +mro_get_linear_isa_dfs||| +mro_get_linear_isa||5.009005| +mro_get_private_data||5.010001| +mro_isa_changed_in||| +mro_meta_dup||| +mro_meta_init||| +mro_method_changed_in||5.009005| +mro_package_moved||| +mro_register||5.010001| +mro_set_mro||5.010001| +mro_set_private_data||5.010001| +mul128||| +mulexp10|||n +munge_qwlist_to_paren_list||| +my_atof2||5.007002| +my_atof||5.006000| +my_attrs||| +my_bcopy|||n +my_betoh16|||n +my_betoh32|||n +my_betoh64|||n +my_betohi|||n +my_betohl|||n +my_betohs|||n +my_bzero|||n +my_chsize||| +my_clearenv||| +my_cxt_index||| +my_cxt_init||| +my_dirfd||5.009005| +my_exit_jump||| +my_exit||| +my_failure_exit||5.004000| +my_fflush_all||5.006000| +my_fork||5.007003|n +my_htobe16|||n +my_htobe32|||n +my_htobe64|||n +my_htobei|||n +my_htobel|||n +my_htobes|||n +my_htole16|||n +my_htole32|||n +my_htole64|||n +my_htolei|||n +my_htolel|||n +my_htoles|||n +my_htonl||| +my_kid||| +my_letoh16|||n +my_letoh32|||n +my_letoh64|||n +my_letohi|||n +my_letohl|||n +my_letohs|||n +my_lstat_flags||| +my_lstat||5.014000| +my_memcmp||5.004000|n +my_memset|||n +my_ntohl||| +my_pclose||5.004000| +my_popen_list||5.007001| +my_popen||5.004000| +my_setenv||| +my_snprintf|5.009004||pvn +my_socketpair||5.007003|n +my_sprintf|5.009003||pvn +my_stat_flags||| +my_stat||5.014000| +my_strftime||5.007002| +my_strlcat|5.009004||pn +my_strlcpy|5.009004||pn +my_swabn|||n +my_swap||| +my_unexec||| +my_vsnprintf||5.009004|n +need_utf8|||n +newANONATTRSUB||5.006000| +newANONHASH||| +newANONLIST||| +newANONSUB||| +newASSIGNOP||| +newATTRSUB||5.006000| +newAVREF||| +newAV||| +newBINOP||| +newCONDOP||| +newCONSTSUB|5.004050||p +newCVREF||| +newDEFSVOP||| +newFORM||| +newFOROP||5.013007| +newGIVENOP||5.009003| +newGIVWHENOP||| +newGP||| +newGVOP||| +newGVREF||| +newGVgen||| +newHVREF||| +newHVhv||5.005000| +newHV||| +newIO||| +newLISTOP||| +newLOGOP||| +newLOOPEX||| +newLOOPOP||| +newMADPROP||| +newMADsv||| +newMYSUB||| +newNULLLIST||| +newOP||| +newPADOP||| +newPMOP||| +newPROG||| +newPVOP||| +newRANGE||| +newRV_inc|5.004000||p +newRV_noinc|5.004000||p +newRV||| +newSLICEOP||| +newSTATEOP||| +newSUB||| +newSVOP||| +newSVREF||| +newSV_type|5.009005||p +newSVhek||5.009003| +newSViv||| +newSVnv||| +newSVpv_share||5.013006| +newSVpvf_nocontext|||vn +newSVpvf||5.004000|v +newSVpvn_flags|5.010001||p +newSVpvn_share|5.007001||p +newSVpvn_utf8|5.010001||p +newSVpvn|5.004050||p +newSVpvs_flags|5.010001||p +newSVpvs_share|5.009003||p +newSVpvs|5.009003||p +newSVpv||| +newSVrv||| +newSVsv||| +newSVuv|5.006000||p +newSV||| +newTOKEN||| +newUNOP||| +newWHENOP||5.009003| +newWHILEOP||5.013007| +newXS_flags||5.009004| +newXSproto||5.006000| +newXS||5.006000| +new_collate||5.006000| +new_constant||| +new_ctype||5.006000| +new_he||| +new_logop||| +new_numeric||5.006000| +new_stackinfo||5.005000| +new_version||5.009000| +new_warnings_bitfield||| +next_symbol||| +nextargv||| +nextchar||| +ninstr|||n +no_bareword_allowed||| +no_fh_allowed||| +no_op||| +not_a_number||| +nothreadhook||5.008000| +nuke_stacks||| +num_overflow|||n +oopsAV||| +oopsHV||| +op_append_elem||5.013006| +op_append_list||5.013006| +op_clear||| +op_const_sv||| +op_contextualize||5.013006| +op_dump||5.006000| +op_free||| +op_getmad_weak||| +op_getmad||| +op_linklist||5.013006| +op_lvalue||5.013007| +op_null||5.007002| +op_prepend_elem||5.013006| +op_refcnt_dec||| +op_refcnt_inc||| +op_refcnt_lock||5.009002| +op_refcnt_unlock||5.009002| +op_scope||5.013007| +op_xmldump||| +open_script||| +opt_scalarhv||| +pMY_CXT_|5.007003||p +pMY_CXT|5.007003||p +pTHX_|5.006000||p +pTHX|5.006000||p +packWARN|5.007003||p +pack_cat||5.007003| +pack_rec||| +package_version||| +package||| +packlist||5.008001| +pad_add_anon||| +pad_add_name_sv||| +pad_add_name||| +pad_alloc||| +pad_block_start||| +pad_check_dup||| +pad_compname_type||| +pad_findlex||| +pad_findmy||5.011002| +pad_fixup_inner_anons||| +pad_free||| +pad_leavemy||| +pad_new||| +pad_peg|||n +pad_push||| +pad_reset||| +pad_setsv||| +pad_sv||| +pad_swipe||| +pad_tidy||| +padlist_dup||| +parse_arithexpr||5.013008| +parse_barestmt||5.013007| +parse_block||5.013007| +parse_body||| +parse_fullexpr||5.013008| +parse_fullstmt||5.013005| +parse_label||5.013007| +parse_listexpr||5.013008| +parse_stmtseq||5.013006| +parse_termexpr||5.013008| +parse_unicode_opts||| +parser_dup||| +parser_free||| +path_is_absolute|||n +peep||| +pending_Slabs_to_ro||| +perl_alloc_using|||n +perl_alloc|||n +perl_clone_using|||n +perl_clone|||n +perl_construct|||n +perl_destruct||5.007003|n +perl_free|||n +perl_parse||5.006000|n +perl_run|||n +pidgone||| +pm_description||| +pmop_dump||5.006000| +pmop_xmldump||| +pmruntime||| +pmtrans||| +pop_scope||| +populate_isa|||v +pregcomp||5.009005| +pregexec||| +pregfree2||5.011000| +pregfree||| +prepend_madprops||| +prescan_version||5.011004| +printbuf||| +printf_nocontext|||vn +process_special_blocks||| +ptr_table_clear||5.009005| +ptr_table_fetch||5.009005| +ptr_table_find|||n +ptr_table_free||5.009005| +ptr_table_new||5.009005| +ptr_table_split||5.009005| +ptr_table_store||5.009005| +push_scope||| +put_byte||| +pv_display|5.006000||p +pv_escape|5.009004||p +pv_pretty|5.009004||p +pv_uni_display||5.007003| +qerror||| +qsortsvu||| +re_compile||5.009005| +re_croak2||| +re_dup_guts||| +re_intuit_start||5.009005| +re_intuit_string||5.006000| +readpipe_override||| +realloc||5.007002|n +reentrant_free||| +reentrant_init||| +reentrant_retry|||vn +reentrant_size||| +ref_array_or_hash||| +refcounted_he_chain_2hv||| +refcounted_he_fetch_pvn||| +refcounted_he_fetch_pvs||| +refcounted_he_fetch_pv||| +refcounted_he_fetch_sv||| +refcounted_he_free||| +refcounted_he_inc||| +refcounted_he_new_pvn||| +refcounted_he_new_pvs||| +refcounted_he_new_pv||| +refcounted_he_new_sv||| +refcounted_he_value||| +refkids||| +refto||| +ref||5.014000| +reg_check_named_buff_matched||| +reg_named_buff_all||5.009005| +reg_named_buff_exists||5.009005| +reg_named_buff_fetch||5.009005| +reg_named_buff_firstkey||5.009005| +reg_named_buff_iter||| +reg_named_buff_nextkey||5.009005| +reg_named_buff_scalar||5.009005| +reg_named_buff||| +reg_namedseq||| +reg_node||| +reg_numbered_buff_fetch||| +reg_numbered_buff_length||| +reg_numbered_buff_store||| +reg_qr_package||| +reg_recode||| +reg_scan_name||| +reg_skipcomment||| +reg_temp_copy||| +reganode||| +regatom||| +regbranch||| +regclass_swash||5.009004| +regclass||| +regcppop||| +regcppush||| +regcurly||| +regdump_extflags||| +regdump||5.005000| +regdupe_internal||| +regexec_flags||5.005000| +regfree_internal||5.009005| +reghop3|||n +reghop4|||n +reghopmaybe3|||n +reginclass||| +reginitcolors||5.006000| +reginsert||| +regmatch||| +regnext||5.005000| +regpiece||| +regpposixcc||| +regprop||| +regrepeat||| +regtail_study||| +regtail||| +regtry||| +reguni||| +regwhite|||n +reg||| +repeatcpy|||n +report_evil_fh||| +report_uninit||| +report_wrongway_fh||| +require_pv||5.006000| +require_tie_mod||| +restore_magic||| +rninstr|||n +rpeep||| +rsignal_restore||| +rsignal_save||| +rsignal_state||5.004000| +rsignal||5.004000| +run_body||| +run_user_filter||| +runops_debug||5.005000| +runops_standard||5.005000| +rv2cv_op_cv||5.013006| +rvpv_dup||| +rxres_free||| +rxres_restore||| +rxres_save||| +safesyscalloc||5.006000|n +safesysfree||5.006000|n +safesysmalloc||5.006000|n +safesysrealloc||5.006000|n +same_dirent||| +save_I16||5.004000| +save_I32||| +save_I8||5.006000| +save_adelete||5.011000| +save_aelem_flags||5.011000| +save_aelem||5.004050| +save_alloc||5.006000| +save_aptr||| +save_ary||| +save_bool||5.008001| +save_clearsv||| +save_delete||| +save_destructor_x||5.006000| +save_destructor||5.006000| +save_freeop||| +save_freepv||| +save_freesv||| +save_generic_pvref||5.006001| +save_generic_svref||5.005030| +save_gp||5.004000| +save_hash||| +save_hdelete||5.011000| +save_hek_flags|||n +save_helem_flags||5.011000| +save_helem||5.004050| +save_hints||5.010001| +save_hptr||| +save_int||| +save_item||| +save_iv||5.005000| +save_lines||| +save_list||| +save_long||| +save_magic||| +save_mortalizesv||5.007001| +save_nogv||| +save_op||5.005000| +save_padsv_and_mortalize||5.010001| +save_pptr||| +save_pushi32ptr||5.010001| +save_pushptri32ptr||| +save_pushptrptr||5.010001| +save_pushptr||5.010001| +save_re_context||5.006000| +save_scalar_at||| +save_scalar||| +save_set_svflags||5.009000| +save_shared_pvref||5.007003| +save_sptr||| +save_svref||| +save_vptr||5.006000| +savepvn||| +savepvs||5.009003| +savepv||| +savesharedpvn||5.009005| +savesharedpvs||5.013006| +savesharedpv||5.007003| +savesharedsvpv||5.013006| +savestack_grow_cnt||5.008001| +savestack_grow||| +savesvpv||5.009002| +sawparens||| +scalar_mod_type|||n +scalarboolean||| +scalarkids||| +scalarseq||| +scalarvoid||| +scalar||| +scan_bin||5.006000| +scan_commit||| +scan_const||| +scan_formline||| +scan_heredoc||| +scan_hex||| +scan_ident||| +scan_inputsymbol||| +scan_num||5.007001| +scan_oct||| +scan_pat||| +scan_str||| +scan_subst||| +scan_trans||| +scan_version||5.009001| +scan_vstring||5.009005| +scan_word||| +screaminstr||5.005000| +search_const||| +seed||5.008001| +sequence_num||| +sequence_tail||| +sequence||| +set_context||5.006000|n +set_numeric_local||5.006000| +set_numeric_radix||5.006000| +set_numeric_standard||5.006000| +set_regclass_bit_fold||| +set_regclass_bit||| +setdefout||| +share_hek_flags||| +share_hek||5.004000| +si_dup||| +sighandler|||n +simplify_sort||| +skipspace0||| +skipspace1||| +skipspace2||| +skipspace||| +softref2xv||| +sortcv_stacked||| +sortcv_xsub||| +sortcv||| +sortsv_flags||5.009003| +sortsv||5.007003| +space_join_names_mortal||| +ss_dup||| +stack_grow||| +start_force||| +start_glob||| +start_subparse||5.004000| +stashpv_hvname_match||5.014000| +stdize_locale||| +store_cop_label||| +strEQ||| +strGE||| +strGT||| +strLE||| +strLT||| +strNE||| +str_to_version||5.006000| +strip_return||| +strnEQ||| +strnNE||| +study_chunk||| +sub_crush_depth||| +sublex_done||| +sublex_push||| +sublex_start||| +sv_2bool_flags||5.013006| +sv_2bool||| +sv_2cv||| +sv_2io||| +sv_2iuv_common||| +sv_2iuv_non_preserve||| +sv_2iv_flags||5.009001| +sv_2iv||| +sv_2mortal||| +sv_2num||| +sv_2nv_flags||5.013001| +sv_2pv_flags|5.007002||p +sv_2pv_nolen|5.006000||p +sv_2pvbyte_nolen|5.006000||p +sv_2pvbyte|5.006000||p +sv_2pvutf8_nolen||5.006000| +sv_2pvutf8||5.006000| +sv_2pv||| +sv_2uv_flags||5.009001| +sv_2uv|5.004000||p +sv_add_arena||| +sv_add_backref||| +sv_backoff||| +sv_bless||| +sv_cat_decode||5.008001| +sv_catpv_flags||5.013006| +sv_catpv_mg|5.004050||p +sv_catpv_nomg||5.013006| +sv_catpvf_mg_nocontext|||pvn +sv_catpvf_mg|5.006000|5.004000|pv +sv_catpvf_nocontext|||vn +sv_catpvf||5.004000|v +sv_catpvn_flags||5.007002| +sv_catpvn_mg|5.004050||p +sv_catpvn_nomg|5.007002||p +sv_catpvn||| +sv_catpvs_flags||5.013006| +sv_catpvs_mg||5.013006| +sv_catpvs_nomg||5.013006| +sv_catpvs|5.009003||p +sv_catpv||| +sv_catsv_flags||5.007002| +sv_catsv_mg|5.004050||p +sv_catsv_nomg|5.007002||p +sv_catsv||| +sv_catxmlpvn||| +sv_catxmlpv||| +sv_catxmlsv||| +sv_chop||| +sv_clean_all||| +sv_clean_objs||| +sv_clear||| +sv_cmp_flags||5.013006| +sv_cmp_locale_flags||5.013006| +sv_cmp_locale||5.004000| +sv_cmp||| +sv_collxfrm_flags||5.013006| +sv_collxfrm||| +sv_compile_2op_is_broken||| +sv_compile_2op||5.008001| +sv_copypv||5.007003| +sv_dec_nomg||5.013002| +sv_dec||| +sv_del_backref||| +sv_derived_from||5.004000| +sv_destroyable||5.010000| +sv_does||5.009004| +sv_dump||| +sv_dup_common||| +sv_dup_inc_multiple||| +sv_dup_inc||| +sv_dup||| +sv_eq_flags||5.013006| +sv_eq||| +sv_exp_grow||| +sv_force_normal_flags||5.007001| +sv_force_normal||5.006000| +sv_free2||| +sv_free_arenas||| +sv_free||| +sv_gets||5.004000| +sv_grow||| +sv_i_ncmp||| +sv_inc_nomg||5.013002| +sv_inc||| +sv_insert_flags||5.010001| +sv_insert||| +sv_isa||| +sv_isobject||| +sv_iv||5.005000| +sv_kill_backrefs||| +sv_len_utf8||5.006000| +sv_len||| +sv_magic_portable|5.014000|5.004000|p +sv_magicext||5.007003| +sv_magic||| +sv_mortalcopy||| +sv_ncmp||| +sv_newmortal||| +sv_newref||| +sv_nolocking||5.007003| +sv_nosharing||5.007003| +sv_nounlocking||| +sv_nv||5.005000| +sv_peek||5.005000| +sv_pos_b2u_midway||| +sv_pos_b2u||5.006000| +sv_pos_u2b_cached||| +sv_pos_u2b_flags||5.011005| +sv_pos_u2b_forwards|||n +sv_pos_u2b_midway|||n +sv_pos_u2b||5.006000| +sv_pvbyten_force||5.006000| +sv_pvbyten||5.006000| +sv_pvbyte||5.006000| +sv_pvn_force_flags|5.007002||p +sv_pvn_force||| +sv_pvn_nomg|5.007003|5.005000|p +sv_pvn||5.005000| +sv_pvutf8n_force||5.006000| +sv_pvutf8n||5.006000| +sv_pvutf8||5.006000| +sv_pv||5.006000| +sv_recode_to_utf8||5.007003| +sv_reftype||| +sv_release_COW||| +sv_replace||| +sv_report_used||| +sv_reset||| +sv_rvweaken||5.006000| +sv_setiv_mg|5.004050||p +sv_setiv||| +sv_setnv_mg|5.006000||p +sv_setnv||| +sv_setpv_mg|5.004050||p +sv_setpvf_mg_nocontext|||pvn +sv_setpvf_mg|5.006000|5.004000|pv +sv_setpvf_nocontext|||vn +sv_setpvf||5.004000|v +sv_setpviv_mg||5.008001| +sv_setpviv||5.008001| +sv_setpvn_mg|5.004050||p +sv_setpvn||| +sv_setpvs_mg||5.013006| +sv_setpvs|5.009004||p +sv_setpv||| +sv_setref_iv||| +sv_setref_nv||| +sv_setref_pvn||| +sv_setref_pvs||5.013006| +sv_setref_pv||| +sv_setref_uv||5.007001| +sv_setsv_cow||| +sv_setsv_flags||5.007002| +sv_setsv_mg|5.004050||p +sv_setsv_nomg|5.007002||p +sv_setsv||| +sv_setuv_mg|5.004050||p +sv_setuv|5.004000||p +sv_tainted||5.004000| +sv_taint||5.004000| +sv_true||5.005000| +sv_unglob||| +sv_uni_display||5.007003| +sv_unmagicext||5.013008| +sv_unmagic||| +sv_unref_flags||5.007001| +sv_unref||| +sv_untaint||5.004000| +sv_upgrade||| +sv_usepvn_flags||5.009004| +sv_usepvn_mg|5.004050||p +sv_usepvn||| +sv_utf8_decode||5.006000| +sv_utf8_downgrade||5.006000| +sv_utf8_encode||5.006000| +sv_utf8_upgrade_flags_grow||5.011000| +sv_utf8_upgrade_flags||5.007002| +sv_utf8_upgrade_nomg||5.007002| +sv_utf8_upgrade||5.007001| +sv_uv|5.005000||p +sv_vcatpvf_mg|5.006000|5.004000|p +sv_vcatpvfn||5.004000| +sv_vcatpvf|5.006000|5.004000|p +sv_vsetpvf_mg|5.006000|5.004000|p +sv_vsetpvfn||5.004000| +sv_vsetpvf|5.006000|5.004000|p +sv_xmlpeek||| +svtype||| +swallow_bom||| +swash_fetch||5.007002| +swash_get||| +swash_init||5.006000| +sys_init3||5.010000|n +sys_init||5.010000|n +sys_intern_clear||| +sys_intern_dup||| +sys_intern_init||| +sys_term||5.010000|n +taint_env||| +taint_proper||| +tied_method|||v +tmps_grow||5.006000| +toLOWER||| +toUPPER||| +to_byte_substr||| +to_uni_fold||5.007003| +to_uni_lower_lc||5.006000| +to_uni_lower||5.007003| +to_uni_title_lc||5.006000| +to_uni_title||5.007003| +to_uni_upper_lc||5.006000| +to_uni_upper||5.007003| +to_utf8_case||5.007003| +to_utf8_fold||5.007003| +to_utf8_lower||5.007003| +to_utf8_substr||| +to_utf8_title||5.007003| +to_utf8_upper||5.007003| +token_free||| +token_getmad||| +tokenize_use||| +tokeq||| +tokereport||| +too_few_arguments||| +too_many_arguments||| +try_amagic_bin||| +try_amagic_un||| +uiv_2buf|||n +unlnk||| +unpack_rec||| +unpack_str||5.007003| +unpackstring||5.008001| +unreferenced_to_tmp_stack||| +unshare_hek_or_pvn||| +unshare_hek||| +unsharepvn||5.004000| +unwind_handler_stack||| +update_debugger_info||| +upg_version||5.009005| +usage||| +utf16_textfilter||| +utf16_to_utf8_reversed||5.006001| +utf16_to_utf8||5.006001| +utf8_distance||5.006000| +utf8_hop||5.006000| +utf8_length||5.007001| +utf8_mg_len_cache_update||| +utf8_mg_pos_cache_update||| +utf8_to_bytes||5.006001| +utf8_to_uvchr||5.007001| +utf8_to_uvuni||5.007001| +utf8n_to_uvchr||| +utf8n_to_uvuni||5.007001| +utilize||| +uvchr_to_utf8_flags||5.007003| +uvchr_to_utf8||| +uvuni_to_utf8_flags||5.007003| +uvuni_to_utf8||5.007001| +validate_suid||| +varname||| +vcmp||5.009000| +vcroak||5.006000| +vdeb||5.007003| +vform||5.006000| +visit||| +vivify_defelem||| +vivify_ref||| +vload_module|5.006000||p +vmess||5.006000| +vnewSVpvf|5.006000|5.004000|p +vnormal||5.009002| +vnumify||5.009000| +vstringify||5.009000| +vverify||5.009003| +vwarner||5.006000| +vwarn||5.006000| +wait4pid||| +warn_nocontext|||vn +warn_sv||5.013001| +warner_nocontext|||vn +warner|5.006000|5.004000|pv +warn|||v +watch||| +whichsig||| +with_queued_errors||| +write_no_mem||| +write_to_stderr||| +xmldump_all_perl||| +xmldump_all||| +xmldump_attr||| +xmldump_eval||| +xmldump_form||| +xmldump_indent|||v +xmldump_packsubs_perl||| +xmldump_packsubs||| +xmldump_sub_perl||| +xmldump_sub||| +xmldump_vindent||| +xs_apiversion_bootcheck||| +xs_version_bootcheck||| +yyerror||| +yylex||| +yyparse||| +yyunlex||| +yywarn||| +); + +if (exists $opt{'list-unsupported'}) { + my $f; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $API{$f}{todo}; + print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; + } + exit 0; +} + +# Scan for possible replacement candidates + +my(%replace, %need, %hints, %warnings, %depends); +my $replace = 0; +my($hint, $define, $function); + +sub find_api +{ + my $code = shift; + $code =~ s{ + / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) + | "[^"\\]*(?:\\.[^"\\]*)*" + | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; + grep { exists $API{$_} } $code =~ /(\w+)/mg; +} + +while () { + if ($hint) { + my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; + if (m{^\s*\*\s(.*?)\s*$}) { + for (@{$hint->[1]}) { + $h->{$_} ||= ''; # suppress warning with older perls + $h->{$_} .= "$1\n"; + } + } + else { undef $hint } + } + + $hint = [$1, [split /,?\s+/, $2]] + if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; + + if ($define) { + if ($define->[1] =~ /\\$/) { + $define->[1] .= $_; + } + else { + if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { + my @n = find_api($define->[1]); + push @{$depends{$define->[0]}}, @n if @n + } + undef $define; + } + } + + $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; + + if ($function) { + if (/^}/) { + if (exists $API{$function->[0]}) { + my @n = find_api($function->[1]); + push @{$depends{$function->[0]}}, @n if @n + } + undef $function; + } + else { + $function->[1] .= $_; + } + } + + $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; + + $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; + $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; + $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; + $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; + + if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { + my @deps = map { s/\s+//g; $_ } split /,/, $3; + my $d; + for $d (map { s/\s+//g; $_ } split /,/, $1) { + push @{$depends{$d}}, @deps; + } + } + + $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; +} + +for (values %depends) { + my %s; + $_ = [sort grep !$s{$_}++, @$_]; +} + +if (exists $opt{'api-info'}) { + my $f; + my $count = 0; + my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $f =~ /$match/; + print "\n=== $f ===\n\n"; + my $info = 0; + if ($API{$f}{base} || $API{$f}{todo}) { + my $base = format_version($API{$f}{base} || $API{$f}{todo}); + print "Supported at least starting from perl-$base.\n"; + $info++; + } + if ($API{$f}{provided}) { + my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; + print "Support by $ppport provided back to perl-$todo.\n"; + print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; + print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; + print "\n$hints{$f}" if exists $hints{$f}; + print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; + $info++; + } + print "No portability information available.\n" unless $info; + $count++; + } + $count or print "Found no API matching '$opt{'api-info'}'."; + print "\n"; + exit 0; +} + +if (exists $opt{'list-provided'}) { + my $f; + for $f (sort { lc $a cmp lc $b } keys %API) { + next unless $API{$f}{provided}; + my @flags; + push @flags, 'explicit' if exists $need{$f}; + push @flags, 'depend' if exists $depends{$f}; + push @flags, 'hint' if exists $hints{$f}; + push @flags, 'warning' if exists $warnings{$f}; + my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; + print "$f$flags\n"; + } + exit 0; +} + +my @files; +my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); +my $srcext = join '|', map { quotemeta $_ } @srcext; + +if (@ARGV) { + my %seen; + for (@ARGV) { + if (-e) { + if (-f) { + push @files, $_ unless $seen{$_}++; + } + else { warn "'$_' is not a file.\n" } + } + else { + my @new = grep { -f } glob $_ + or warn "'$_' does not exist.\n"; + push @files, grep { !$seen{$_}++ } @new; + } + } +} +else { + eval { + require File::Find; + File::Find::find(sub { + $File::Find::name =~ /($srcext)$/i + and push @files, $File::Find::name; + }, '.'); + }; + if ($@) { + @files = map { glob "*$_" } @srcext; + } +} + +if (!@ARGV || $opt{filter}) { + my(@in, @out); + my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; + for (@files) { + my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; + push @{ $out ? \@out : \@in }, $_; + } + if (@ARGV && @out) { + warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); + } + @files = @in; +} + +die "No input files given!\n" unless @files; + +my(%files, %global, %revreplace); +%revreplace = reverse %replace; +my $filename; +my $patch_opened = 0; + +for $filename (@files) { + unless (open IN, "<$filename") { + warn "Unable to read from $filename: $!\n"; + next; + } + + info("Scanning $filename ..."); + + my $c = do { local $/; }; + close IN; + + my %file = (orig => $c, changes => 0); + + # Temporarily remove C/XS comments and strings from the code + my @ccom; + + $c =~ s{ + ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* + | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) + | ( ^$HS*\#[^\r\n]* + | "[^"\\]*(?:\\.[^"\\]*)*" + | '[^'\\]*(?:\\.[^'\\]*)*' + | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) + }{ defined $2 and push @ccom, $2; + defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; + + $file{ccom} = \@ccom; + $file{code} = $c; + $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; + + my $func; + + for $func (keys %API) { + my $match = $func; + $match .= "|$revreplace{$func}" if exists $revreplace{$func}; + if ($c =~ /\b(?:Perl_)?($match)\b/) { + $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; + $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; + if (exists $API{$func}{provided}) { + $file{uses_provided}{$func}++; + if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { + $file{uses}{$func}++; + my @deps = rec_depend($func); + if (@deps) { + $file{uses_deps}{$func} = \@deps; + for (@deps) { + $file{uses}{$_} = 0 unless exists $file{uses}{$_}; + } + } + for ($func, @deps) { + $file{needs}{$_} = 'static' if exists $need{$_}; + } + } + } + if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { + if ($c =~ /\b$func\b/) { + $file{uses_todo}{$func}++; + } + } + } + } + + while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { + if (exists $need{$2}) { + $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; + } + else { warning("Possibly wrong #define $1 in $filename") } + } + + for (qw(uses needs uses_todo needed_global needed_static)) { + for $func (keys %{$file{$_}}) { + push @{$global{$_}{$func}}, $filename; + } + } + + $files{$filename} = \%file; +} + +# Globally resolve NEED_'s +my $need; +for $need (keys %{$global{needs}}) { + if (@{$global{needs}{$need}} > 1) { + my @targets = @{$global{needs}{$need}}; + my @t = grep $files{$_}{needed_global}{$need}, @targets; + @targets = @t if @t; + @t = grep /\.xs$/i, @targets; + @targets = @t if @t; + my $target = shift @targets; + $files{$target}{needs}{$need} = 'global'; + for (@{$global{needs}{$need}}) { + $files{$_}{needs}{$need} = 'extern' if $_ ne $target; + } + } +} + +for $filename (@files) { + exists $files{$filename} or next; + + info("=== Analyzing $filename ==="); + + my %file = %{$files{$filename}}; + my $func; + my $c = $file{code}; + my $warnings = 0; + + for $func (sort keys %{$file{uses_Perl}}) { + if ($API{$func}{varargs}) { + unless ($API{$func}{nothxarg}) { + my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} + { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); + if ($changes) { + warning("Doesn't pass interpreter argument aTHX to Perl_$func"); + $file{changes} += $changes; + } + } + } + else { + warning("Uses Perl_$func instead of $func"); + $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} + {$func$1(}g); + } + } + + for $func (sort keys %{$file{uses_replace}}) { + warning("Uses $func instead of $replace{$func}"); + $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); + } + + for $func (sort keys %{$file{uses_provided}}) { + if ($file{uses}{$func}) { + if (exists $file{uses_deps}{$func}) { + diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); + } + else { + diag("Uses $func"); + } + } + $warnings += hint($func); + } + + unless ($opt{quiet}) { + for $func (sort keys %{$file{uses_todo}}) { + print "*** WARNING: Uses $func, which may not be portable below perl ", + format_version($API{$func}{todo}), ", even with '$ppport'\n"; + $warnings++; + } + } + + for $func (sort keys %{$file{needed_static}}) { + my $message = ''; + if (not exists $file{uses}{$func}) { + $message = "No need to define NEED_$func if $func is never used"; + } + elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { + $message = "No need to define NEED_$func when already needed globally"; + } + if ($message) { + diag($message); + $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); + } + } + + for $func (sort keys %{$file{needed_global}}) { + my $message = ''; + if (not exists $global{uses}{$func}) { + $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; + } + elsif (exists $file{needs}{$func}) { + if ($file{needs}{$func} eq 'extern') { + $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; + } + elsif ($file{needs}{$func} eq 'static') { + $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; + } + } + if ($message) { + diag($message); + $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); + } + } + + $file{needs_inc_ppport} = keys %{$file{uses}}; + + if ($file{needs_inc_ppport}) { + my $pp = ''; + + for $func (sort keys %{$file{needs}}) { + my $type = $file{needs}{$func}; + next if $type eq 'extern'; + my $suffix = $type eq 'global' ? '_GLOBAL' : ''; + unless (exists $file{"needed_$type"}{$func}) { + if ($type eq 'global') { + diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); + } + else { + diag("File needs $func, adding static request"); + } + $pp .= "#define NEED_$func$suffix\n"; + } + } + + if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { + $pp = ''; + $file{changes}++; + } + + unless ($file{has_inc_ppport}) { + diag("Needs to include '$ppport'"); + $pp .= qq(#include "$ppport"\n) + } + + if ($pp) { + $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) + || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) + || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) + || ($c =~ s/^/$pp/); + } + } + else { + if ($file{has_inc_ppport}) { + diag("No need to include '$ppport'"); + $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); + } + } + + # put back in our C comments + my $ix; + my $cppc = 0; + my @ccom = @{$file{ccom}}; + for $ix (0 .. $#ccom) { + if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { + $cppc++; + $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; + } + else { + $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; + } + } + + if ($cppc) { + my $s = $cppc != 1 ? 's' : ''; + warning("Uses $cppc C++ style comment$s, which is not portable"); + } + + my $s = $warnings != 1 ? 's' : ''; + my $warn = $warnings ? " ($warnings warning$s)" : ''; + info("Analysis completed$warn"); + + if ($file{changes}) { + if (exists $opt{copy}) { + my $newfile = "$filename$opt{copy}"; + if (-e $newfile) { + error("'$newfile' already exists, refusing to write copy of '$filename'"); + } + else { + local *F; + if (open F, ">$newfile") { + info("Writing copy of '$filename' with changes to '$newfile'"); + print F $c; + close F; + } + else { + error("Cannot open '$newfile' for writing: $!"); + } + } + } + elsif (exists $opt{patch} || $opt{changes}) { + if (exists $opt{patch}) { + unless ($patch_opened) { + if (open PATCH, ">$opt{patch}") { + $patch_opened = 1; + } + else { + error("Cannot open '$opt{patch}' for writing: $!"); + delete $opt{patch}; + $opt{changes} = 1; + goto fallback; + } + } + mydiff(\*PATCH, $filename, $c); + } + else { +fallback: + info("Suggested changes:"); + mydiff(\*STDOUT, $filename, $c); + } + } + else { + my $s = $file{changes} == 1 ? '' : 's'; + info("$file{changes} potentially required change$s detected"); + } + } + else { + info("Looks good"); + } +} + +close PATCH if $patch_opened; + +exit 0; + + +sub try_use { eval "use @_;"; return $@ eq '' } + +sub mydiff +{ + local *F = shift; + my($file, $str) = @_; + my $diff; + + if (exists $opt{diff}) { + $diff = run_diff($opt{diff}, $file, $str); + } + + if (!defined $diff and try_use('Text::Diff')) { + $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); + $diff = <
$tmp") { + print F $str; + close F; + + if (open F, "$prog $file $tmp |") { + while () { + s/\Q$tmp\E/$file.patched/; + $diff .= $_; + } + close F; + unlink $tmp; + return $diff; + } + + unlink $tmp; + } + else { + error("Cannot open '$tmp' for writing: $!"); + } + + return undef; +} + +sub rec_depend +{ + my($func, $seen) = @_; + return () unless exists $depends{$func}; + $seen = {%{$seen||{}}}; + return () if $seen->{$func}++; + my %s; + grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; +} + +sub parse_version +{ + my $ver = shift; + + if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { + return ($1, $2, $3); + } + elsif ($ver !~ /^\d+\.[\d_]+$/) { + die "cannot parse version '$ver'\n"; + } + + $ver =~ s/_//g; + $ver =~ s/$/000000/; + + my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; + + $v = int $v; + $s = int $s; + + if ($r < 5 || ($r == 5 && $v < 6)) { + if ($s % 10) { + die "cannot parse version '$ver'\n"; + } + } + + return ($r, $v, $s); +} + +sub format_version +{ + my $ver = shift; + + $ver =~ s/$/000000/; + my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; + + $v = int $v; + $s = int $s; + + if ($r < 5 || ($r == 5 && $v < 6)) { + if ($s % 10) { + die "invalid version '$ver'\n"; + } + $s /= 10; + + $ver = sprintf "%d.%03d", $r, $v; + $s > 0 and $ver .= sprintf "_%02d", $s; + + return $ver; + } + + return sprintf "%d.%d.%d", $r, $v, $s; +} + +sub info +{ + $opt{quiet} and return; + print @_, "\n"; +} + +sub diag +{ + $opt{quiet} and return; + $opt{diag} and print @_, "\n"; +} + +sub warning +{ + $opt{quiet} and return; + print "*** ", @_, "\n"; +} + +sub error +{ + print "*** ERROR: ", @_, "\n"; +} + +my %given_hints; +my %given_warnings; +sub hint +{ + $opt{quiet} and return; + my $func = shift; + my $rv = 0; + if (exists $warnings{$func} && !$given_warnings{$func}++) { + my $warn = $warnings{$func}; + $warn =~ s!^!*** !mg; + print "*** WARNING: $func\n", $warn; + $rv++; + } + if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { + my $hint = $hints{$func}; + $hint =~ s/^/ /mg; + print " --- hint for $func ---\n", $hint; + } + $rv; +} + +sub usage +{ + my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; + my %M = ( 'I' => '*' ); + $usage =~ s/^\s*perl\s+\S+/$^X $0/; + $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; + + print < }; + my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; + $copy =~ s/^(?=\S+)/ /gms; + $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; + $self =~ s/^SKIP.*(?=^__DATA__)/SKIP +if (\@ARGV && \$ARGV[0] eq '--unstrip') { + eval { require Devel::PPPort }; + \$@ and die "Cannot require Devel::PPPort, please install.\\n"; + if (eval \$Devel::PPPort::VERSION < $VERSION) { + die "$0 was originally generated with Devel::PPPort $VERSION.\\n" + . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" + . "Please install a newer version, or --unstrip will not work.\\n"; + } + Devel::PPPort::WriteFile(\$0); + exit 0; +} +print <$0" or die "cannot strip $0: $!\n"; + print OUT "$pl$c\n"; + + exit 0; +} + +__DATA__ +*/ + +#ifndef _P_P_PORTABILITY_H_ +#define _P_P_PORTABILITY_H_ + +#ifndef DPPP_NAMESPACE +# define DPPP_NAMESPACE DPPP_ +#endif + +#define DPPP_CAT2(x,y) CAT2(x,y) +#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) + +#ifndef PERL_REVISION +# if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) +# define PERL_PATCHLEVEL_H_IMPLICIT +# include +# endif +# if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) +# include +# endif +# ifndef PERL_REVISION +# define PERL_REVISION (5) + /* Replace: 1 */ +# define PERL_VERSION PATCHLEVEL +# define PERL_SUBVERSION SUBVERSION + /* Replace PERL_PATCHLEVEL with PERL_VERSION */ + /* Replace: 0 */ +# endif +#endif + +#define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) +#define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION)) + +/* It is very unlikely that anyone will try to use this with Perl 6 + (or greater), but who knows. + */ +#if PERL_REVISION != 5 +# error ppport.h only works with Perl version 5 +#endif /* PERL_REVISION != 5 */ +#ifndef dTHR +# define dTHR dNOOP +#endif +#ifndef dTHX +# define dTHX dNOOP +#endif + +#ifndef dTHXa +# define dTHXa(x) dNOOP +#endif +#ifndef pTHX +# define pTHX void +#endif + +#ifndef pTHX_ +# define pTHX_ +#endif + +#ifndef aTHX +# define aTHX +#endif + +#ifndef aTHX_ +# define aTHX_ +#endif + +#if (PERL_BCDVERSION < 0x5006000) +# ifdef USE_THREADS +# define aTHXR thr +# define aTHXR_ thr, +# else +# define aTHXR +# define aTHXR_ +# endif +# define dTHXR dTHR +#else +# define aTHXR aTHX +# define aTHXR_ aTHX_ +# define dTHXR dTHX +#endif +#ifndef dTHXoa +# define dTHXoa(x) dTHXa(x) +#endif + +#ifdef I_LIMITS +# include +#endif + +#ifndef PERL_UCHAR_MIN +# define PERL_UCHAR_MIN ((unsigned char)0) +#endif + +#ifndef PERL_UCHAR_MAX +# ifdef UCHAR_MAX +# define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) +# else +# ifdef MAXUCHAR +# define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) +# else +# define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) +# endif +# endif +#endif + +#ifndef PERL_USHORT_MIN +# define PERL_USHORT_MIN ((unsigned short)0) +#endif + +#ifndef PERL_USHORT_MAX +# ifdef USHORT_MAX +# define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) +# else +# ifdef MAXUSHORT +# define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) +# else +# ifdef USHRT_MAX +# define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) +# else +# define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) +# endif +# endif +# endif +#endif + +#ifndef PERL_SHORT_MAX +# ifdef SHORT_MAX +# define PERL_SHORT_MAX ((short)SHORT_MAX) +# else +# ifdef MAXSHORT /* Often used in */ +# define PERL_SHORT_MAX ((short)MAXSHORT) +# else +# ifdef SHRT_MAX +# define PERL_SHORT_MAX ((short)SHRT_MAX) +# else +# define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) +# endif +# endif +# endif +#endif + +#ifndef PERL_SHORT_MIN +# ifdef SHORT_MIN +# define PERL_SHORT_MIN ((short)SHORT_MIN) +# else +# ifdef MINSHORT +# define PERL_SHORT_MIN ((short)MINSHORT) +# else +# ifdef SHRT_MIN +# define PERL_SHORT_MIN ((short)SHRT_MIN) +# else +# define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) +# endif +# endif +# endif +#endif + +#ifndef PERL_UINT_MAX +# ifdef UINT_MAX +# define PERL_UINT_MAX ((unsigned int)UINT_MAX) +# else +# ifdef MAXUINT +# define PERL_UINT_MAX ((unsigned int)MAXUINT) +# else +# define PERL_UINT_MAX (~(unsigned int)0) +# endif +# endif +#endif + +#ifndef PERL_UINT_MIN +# define PERL_UINT_MIN ((unsigned int)0) +#endif + +#ifndef PERL_INT_MAX +# ifdef INT_MAX +# define PERL_INT_MAX ((int)INT_MAX) +# else +# ifdef MAXINT /* Often used in */ +# define PERL_INT_MAX ((int)MAXINT) +# else +# define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) +# endif +# endif +#endif + +#ifndef PERL_INT_MIN +# ifdef INT_MIN +# define PERL_INT_MIN ((int)INT_MIN) +# else +# ifdef MININT +# define PERL_INT_MIN ((int)MININT) +# else +# define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) +# endif +# endif +#endif + +#ifndef PERL_ULONG_MAX +# ifdef ULONG_MAX +# define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) +# else +# ifdef MAXULONG +# define PERL_ULONG_MAX ((unsigned long)MAXULONG) +# else +# define PERL_ULONG_MAX (~(unsigned long)0) +# endif +# endif +#endif + +#ifndef PERL_ULONG_MIN +# define PERL_ULONG_MIN ((unsigned long)0L) +#endif + +#ifndef PERL_LONG_MAX +# ifdef LONG_MAX +# define PERL_LONG_MAX ((long)LONG_MAX) +# else +# ifdef MAXLONG +# define PERL_LONG_MAX ((long)MAXLONG) +# else +# define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) +# endif +# endif +#endif + +#ifndef PERL_LONG_MIN +# ifdef LONG_MIN +# define PERL_LONG_MIN ((long)LONG_MIN) +# else +# ifdef MINLONG +# define PERL_LONG_MIN ((long)MINLONG) +# else +# define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) +# endif +# endif +#endif + +#if defined(HAS_QUAD) && (defined(convex) || defined(uts)) +# ifndef PERL_UQUAD_MAX +# ifdef ULONGLONG_MAX +# define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) +# else +# ifdef MAXULONGLONG +# define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) +# else +# define PERL_UQUAD_MAX (~(unsigned long long)0) +# endif +# endif +# endif + +# ifndef PERL_UQUAD_MIN +# define PERL_UQUAD_MIN ((unsigned long long)0L) +# endif + +# ifndef PERL_QUAD_MAX +# ifdef LONGLONG_MAX +# define PERL_QUAD_MAX ((long long)LONGLONG_MAX) +# else +# ifdef MAXLONGLONG +# define PERL_QUAD_MAX ((long long)MAXLONGLONG) +# else +# define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) +# endif +# endif +# endif + +# ifndef PERL_QUAD_MIN +# ifdef LONGLONG_MIN +# define PERL_QUAD_MIN ((long long)LONGLONG_MIN) +# else +# ifdef MINLONGLONG +# define PERL_QUAD_MIN ((long long)MINLONGLONG) +# else +# define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) +# endif +# endif +# endif +#endif + +/* This is based on code from 5.003 perl.h */ +#ifdef HAS_QUAD +# ifdef cray +#ifndef IVTYPE +# define IVTYPE int +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_INT_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_INT_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_UINT_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_UINT_MAX +#endif + +# ifdef INTSIZE +#ifndef IVSIZE +# define IVSIZE INTSIZE +#endif + +# endif +# else +# if defined(convex) || defined(uts) +#ifndef IVTYPE +# define IVTYPE long long +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_QUAD_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_QUAD_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_UQUAD_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_UQUAD_MAX +#endif + +# ifdef LONGLONGSIZE +#ifndef IVSIZE +# define IVSIZE LONGLONGSIZE +#endif + +# endif +# else +#ifndef IVTYPE +# define IVTYPE long +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_LONG_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_LONG_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_ULONG_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_ULONG_MAX +#endif + +# ifdef LONGSIZE +#ifndef IVSIZE +# define IVSIZE LONGSIZE +#endif + +# endif +# endif +# endif +#ifndef IVSIZE +# define IVSIZE 8 +#endif + +#ifndef PERL_QUAD_MIN +# define PERL_QUAD_MIN IV_MIN +#endif + +#ifndef PERL_QUAD_MAX +# define PERL_QUAD_MAX IV_MAX +#endif + +#ifndef PERL_UQUAD_MIN +# define PERL_UQUAD_MIN UV_MIN +#endif + +#ifndef PERL_UQUAD_MAX +# define PERL_UQUAD_MAX UV_MAX +#endif + +#else +#ifndef IVTYPE +# define IVTYPE long +#endif + +#ifndef IV_MIN +# define IV_MIN PERL_LONG_MIN +#endif + +#ifndef IV_MAX +# define IV_MAX PERL_LONG_MAX +#endif + +#ifndef UV_MIN +# define UV_MIN PERL_ULONG_MIN +#endif + +#ifndef UV_MAX +# define UV_MAX PERL_ULONG_MAX +#endif + +#endif + +#ifndef IVSIZE +# ifdef LONGSIZE +# define IVSIZE LONGSIZE +# else +# define IVSIZE 4 /* A bold guess, but the best we can make. */ +# endif +#endif +#ifndef UVTYPE +# define UVTYPE unsigned IVTYPE +#endif + +#ifndef UVSIZE +# define UVSIZE IVSIZE +#endif +#ifndef sv_setuv +# define sv_setuv(sv, uv) \ + STMT_START { \ + UV TeMpUv = uv; \ + if (TeMpUv <= IV_MAX) \ + sv_setiv(sv, TeMpUv); \ + else \ + sv_setnv(sv, (double)TeMpUv); \ + } STMT_END +#endif +#ifndef newSVuv +# define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) +#endif +#ifndef sv_2uv +# define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) +#endif + +#ifndef SvUVX +# define SvUVX(sv) ((UV)SvIVX(sv)) +#endif + +#ifndef SvUVXx +# define SvUVXx(sv) SvUVX(sv) +#endif + +#ifndef SvUV +# define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) +#endif + +#ifndef SvUVx +# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) +#endif + +/* Hint: sv_uv + * Always use the SvUVx() macro instead of sv_uv(). + */ +#ifndef sv_uv +# define sv_uv(sv) SvUVx(sv) +#endif + +#if !defined(SvUOK) && defined(SvIOK_UV) +# define SvUOK(sv) SvIOK_UV(sv) +#endif +#ifndef XST_mUV +# define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) +#endif + +#ifndef XSRETURN_UV +# define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END +#endif +#ifndef PUSHu +# define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END +#endif + +#ifndef XPUSHu +# define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END +#endif + +#ifdef HAS_MEMCMP +#ifndef memNE +# define memNE(s1,s2,l) (memcmp(s1,s2,l)) +#endif + +#ifndef memEQ +# define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) +#endif + +#else +#ifndef memNE +# define memNE(s1,s2,l) (bcmp(s1,s2,l)) +#endif + +#ifndef memEQ +# define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) +#endif + +#endif +#ifndef memEQs +# define memEQs(s1, l, s2) \ + (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1))) +#endif + +#ifndef memNEs +# define memNEs(s1, l, s2) !memEQs(s1, l, s2) +#endif +#ifndef MoveD +# define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) +#endif + +#ifndef CopyD +# define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) +#endif + +#ifdef HAS_MEMSET +#ifndef ZeroD +# define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) +#endif + +#else +#ifndef ZeroD +# define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) +#endif + +#endif +#ifndef PoisonWith +# define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) +#endif + +#ifndef PoisonNew +# define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) +#endif + +#ifndef PoisonFree +# define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) +#endif + +#ifndef Poison +# define Poison(d,n,t) PoisonFree(d,n,t) +#endif +#ifndef Newx +# define Newx(v,n,t) New(0,v,n,t) +#endif + +#ifndef Newxc +# define Newxc(v,n,t,c) Newc(0,v,n,t,c) +#endif + +#ifndef Newxz +# define Newxz(v,n,t) Newz(0,v,n,t) +#endif + +#ifndef PERL_UNUSED_DECL +# ifdef HASATTRIBUTE +# if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) +# define PERL_UNUSED_DECL +# else +# define PERL_UNUSED_DECL __attribute__((unused)) +# endif +# else +# define PERL_UNUSED_DECL +# endif +#endif + +#ifndef PERL_UNUSED_ARG +# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ +# include +# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) +# else +# define PERL_UNUSED_ARG(x) ((void)x) +# endif +#endif + +#ifndef PERL_UNUSED_VAR +# define PERL_UNUSED_VAR(x) ((void)x) +#endif + +#ifndef PERL_UNUSED_CONTEXT +# ifdef USE_ITHREADS +# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) +# else +# define PERL_UNUSED_CONTEXT +# endif +#endif +#ifndef NOOP +# define NOOP /*EMPTY*/(void)0 +#endif + +#ifndef dNOOP +# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL +#endif + +#ifndef NVTYPE +# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) +# define NVTYPE long double +# else +# define NVTYPE double +# endif +typedef NVTYPE NV; +#endif + +#ifndef INT2PTR +# if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) +# define PTRV UV +# define INT2PTR(any,d) (any)(d) +# else +# if PTRSIZE == LONGSIZE +# define PTRV unsigned long +# else +# define PTRV unsigned +# endif +# define INT2PTR(any,d) (any)(PTRV)(d) +# endif +#endif + +#ifndef PTR2ul +# if PTRSIZE == LONGSIZE +# define PTR2ul(p) (unsigned long)(p) +# else +# define PTR2ul(p) INT2PTR(unsigned long,p) +# endif +#endif +#ifndef PTR2nat +# define PTR2nat(p) (PTRV)(p) +#endif + +#ifndef NUM2PTR +# define NUM2PTR(any,d) (any)PTR2nat(d) +#endif + +#ifndef PTR2IV +# define PTR2IV(p) INT2PTR(IV,p) +#endif + +#ifndef PTR2UV +# define PTR2UV(p) INT2PTR(UV,p) +#endif + +#ifndef PTR2NV +# define PTR2NV(p) NUM2PTR(NV,p) +#endif + +#undef START_EXTERN_C +#undef END_EXTERN_C +#undef EXTERN_C +#ifdef __cplusplus +# define START_EXTERN_C extern "C" { +# define END_EXTERN_C } +# define EXTERN_C extern "C" +#else +# define START_EXTERN_C +# define END_EXTERN_C +# define EXTERN_C extern +#endif + +#if defined(PERL_GCC_PEDANTIC) +# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN +# define PERL_GCC_BRACE_GROUPS_FORBIDDEN +# endif +#endif + +#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) +# ifndef PERL_USE_GCC_BRACE_GROUPS +# define PERL_USE_GCC_BRACE_GROUPS +# endif +#endif + +#undef STMT_START +#undef STMT_END +#ifdef PERL_USE_GCC_BRACE_GROUPS +# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ +# define STMT_END ) +#else +# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) +# define STMT_START if (1) +# define STMT_END else (void)0 +# else +# define STMT_START do +# define STMT_END while (0) +# endif +#endif +#ifndef boolSV +# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) +#endif + +/* DEFSV appears first in 5.004_56 */ +#ifndef DEFSV +# define DEFSV GvSV(PL_defgv) +#endif + +#ifndef SAVE_DEFSV +# define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) +#endif + +#ifndef DEFSV_set +# define DEFSV_set(sv) (DEFSV = (sv)) +#endif + +/* Older perls (<=5.003) lack AvFILLp */ +#ifndef AvFILLp +# define AvFILLp AvFILL +#endif +#ifndef ERRSV +# define ERRSV get_sv("@",FALSE) +#endif + +/* Hint: gv_stashpvn + * This function's backport doesn't support the length parameter, but + * rather ignores it. Portability can only be ensured if the length + * parameter is used for speed reasons, but the length can always be + * correctly computed from the string argument. + */ +#ifndef gv_stashpvn +# define gv_stashpvn(str,len,create) gv_stashpv(str,create) +#endif + +/* Replace: 1 */ +#ifndef get_cv +# define get_cv perl_get_cv +#endif + +#ifndef get_sv +# define get_sv perl_get_sv +#endif + +#ifndef get_av +# define get_av perl_get_av +#endif + +#ifndef get_hv +# define get_hv perl_get_hv +#endif + +/* Replace: 0 */ +#ifndef dUNDERBAR +# define dUNDERBAR dNOOP +#endif + +#ifndef UNDERBAR +# define UNDERBAR DEFSV +#endif +#ifndef dAX +# define dAX I32 ax = MARK - PL_stack_base + 1 +#endif + +#ifndef dITEMS +# define dITEMS I32 items = SP - MARK +#endif +#ifndef dXSTARG +# define dXSTARG SV * targ = sv_newmortal() +#endif +#ifndef dAXMARK +# define dAXMARK I32 ax = POPMARK; \ + register SV ** const mark = PL_stack_base + ax++ +#endif +#ifndef XSprePUSH +# define XSprePUSH (sp = PL_stack_base + ax - 1) +#endif + +#if (PERL_BCDVERSION < 0x5005000) +# undef XSRETURN +# define XSRETURN(off) \ + STMT_START { \ + PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ + return; \ + } STMT_END +#endif +#ifndef XSPROTO +# define XSPROTO(name) void name(pTHX_ CV* cv) +#endif + +#ifndef SVfARG +# define SVfARG(p) ((void*)(p)) +#endif +#ifndef PERL_ABS +# define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) +#endif +#ifndef dVAR +# define dVAR dNOOP +#endif +#ifndef SVf +# define SVf "_" +#endif +#ifndef UTF8_MAXBYTES +# define UTF8_MAXBYTES UTF8_MAXLEN +#endif +#ifndef CPERLscope +# define CPERLscope(x) x +#endif +#ifndef PERL_HASH +# define PERL_HASH(hash,str,len) \ + STMT_START { \ + const char *s_PeRlHaSh = str; \ + I32 i_PeRlHaSh = len; \ + U32 hash_PeRlHaSh = 0; \ + while (i_PeRlHaSh--) \ + hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ + (hash) = hash_PeRlHaSh; \ + } STMT_END +#endif + +#ifndef PERLIO_FUNCS_DECL +# ifdef PERLIO_FUNCS_CONST +# define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs +# define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) +# else +# define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs +# define PERLIO_FUNCS_CAST(funcs) (funcs) +# endif +#endif + +/* provide these typedefs for older perls */ +#if (PERL_BCDVERSION < 0x5009003) + +# ifdef ARGSproto +typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); +# else +typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); +# endif + +typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); + +#endif +#ifndef isPSXSPC +# define isPSXSPC(c) (isSPACE(c) || (c) == '\v') +#endif + +#ifndef isBLANK +# define isBLANK(c) ((c) == ' ' || (c) == '\t') +#endif + +#ifdef EBCDIC +#ifndef isALNUMC +# define isALNUMC(c) isalnum(c) +#endif + +#ifndef isASCII +# define isASCII(c) isascii(c) +#endif + +#ifndef isCNTRL +# define isCNTRL(c) iscntrl(c) +#endif + +#ifndef isGRAPH +# define isGRAPH(c) isgraph(c) +#endif + +#ifndef isPRINT +# define isPRINT(c) isprint(c) +#endif + +#ifndef isPUNCT +# define isPUNCT(c) ispunct(c) +#endif + +#ifndef isXDIGIT +# define isXDIGIT(c) isxdigit(c) +#endif + +#else +# if (PERL_BCDVERSION < 0x5010000) +/* Hint: isPRINT + * The implementation in older perl versions includes all of the + * isSPACE() characters, which is wrong. The version provided by + * Devel::PPPort always overrides a present buggy version. + */ +# undef isPRINT +# endif +#ifndef isALNUMC +# define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) +#endif + +#ifndef isASCII +# define isASCII(c) ((U8) (c) <= 127) +#endif + +#ifndef isCNTRL +# define isCNTRL(c) ((U8) (c) < ' ' || (c) == 127) +#endif + +#ifndef isGRAPH +# define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) +#endif + +#ifndef isPRINT +# define isPRINT(c) (((c) >= 32 && (c) < 127)) +#endif + +#ifndef isPUNCT +# define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) +#endif + +#ifndef isXDIGIT +# define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) +#endif + +#endif + +#ifndef PERL_SIGNALS_UNSAFE_FLAG + +#define PERL_SIGNALS_UNSAFE_FLAG 0x0001 + +#if (PERL_BCDVERSION < 0x5008000) +# define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG +#else +# define D_PPP_PERL_SIGNALS_INIT 0 +#endif + +#if defined(NEED_PL_signals) +static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; +#elif defined(NEED_PL_signals_GLOBAL) +U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; +#else +extern U32 DPPP_(my_PL_signals); +#endif +#define PL_signals DPPP_(my_PL_signals) + +#endif + +/* Hint: PL_ppaddr + * Calling an op via PL_ppaddr requires passing a context argument + * for threaded builds. Since the context argument is different for + * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will + * automatically be defined as the correct argument. + */ + +#if (PERL_BCDVERSION <= 0x5005005) +/* Replace: 1 */ +# define PL_ppaddr ppaddr +# define PL_no_modify no_modify +/* Replace: 0 */ +#endif + +#if (PERL_BCDVERSION <= 0x5004005) +/* Replace: 1 */ +# define PL_DBsignal DBsignal +# define PL_DBsingle DBsingle +# define PL_DBsub DBsub +# define PL_DBtrace DBtrace +# define PL_Sv Sv +# define PL_bufend bufend +# define PL_bufptr bufptr +# define PL_compiling compiling +# define PL_copline copline +# define PL_curcop curcop +# define PL_curstash curstash +# define PL_debstash debstash +# define PL_defgv defgv +# define PL_diehook diehook +# define PL_dirty dirty +# define PL_dowarn dowarn +# define PL_errgv errgv +# define PL_error_count error_count +# define PL_expect expect +# define PL_hexdigit hexdigit +# define PL_hints hints +# define PL_in_my in_my +# define PL_laststatval laststatval +# define PL_lex_state lex_state +# define PL_lex_stuff lex_stuff +# define PL_linestr linestr +# define PL_na na +# define PL_perl_destruct_level perl_destruct_level +# define PL_perldb perldb +# define PL_rsfp_filters rsfp_filters +# define PL_rsfp rsfp +# define PL_stack_base stack_base +# define PL_stack_sp stack_sp +# define PL_statcache statcache +# define PL_stdingv stdingv +# define PL_sv_arenaroot sv_arenaroot +# define PL_sv_no sv_no +# define PL_sv_undef sv_undef +# define PL_sv_yes sv_yes +# define PL_tainted tainted +# define PL_tainting tainting +# define PL_tokenbuf tokenbuf +/* Replace: 0 */ +#endif + +/* Warning: PL_parser + * For perl versions earlier than 5.9.5, this is an always + * non-NULL dummy. Also, it cannot be dereferenced. Don't + * use it if you can avoid is and unless you absolutely know + * what you're doing. + * If you always check that PL_parser is non-NULL, you can + * define DPPP_PL_parser_NO_DUMMY to avoid the creation of + * a dummy parser structure. + */ + +#if (PERL_BCDVERSION >= 0x5009005) +# ifdef DPPP_PL_parser_NO_DUMMY +# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ + (croak("panic: PL_parser == NULL in %s:%d", \ + __FILE__, __LINE__), (yy_parser *) NULL))->var) +# else +# ifdef DPPP_PL_parser_NO_DUMMY_WARNING +# define D_PPP_parser_dummy_warning(var) +# else +# define D_PPP_parser_dummy_warning(var) \ + warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), +# endif +# define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ + (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) +#if defined(NEED_PL_parser) +static yy_parser DPPP_(dummy_PL_parser); +#elif defined(NEED_PL_parser_GLOBAL) +yy_parser DPPP_(dummy_PL_parser); +#else +extern yy_parser DPPP_(dummy_PL_parser); +#endif + +# endif + +/* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ +/* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf + * Do not use this variable unless you know exactly what you're + * doint. It is internal to the perl parser and may change or even + * be removed in the future. As of perl 5.9.5, you have to check + * for (PL_parser != NULL) for this variable to have any effect. + * An always non-NULL PL_parser dummy is provided for earlier + * perl versions. + * If PL_parser is NULL when you try to access this variable, a + * dummy is being accessed instead and a warning is issued unless + * you define DPPP_PL_parser_NO_DUMMY_WARNING. + * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access + * this variable will croak with a panic message. + */ + +# define PL_expect D_PPP_my_PL_parser_var(expect) +# define PL_copline D_PPP_my_PL_parser_var(copline) +# define PL_rsfp D_PPP_my_PL_parser_var(rsfp) +# define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) +# define PL_linestr D_PPP_my_PL_parser_var(linestr) +# define PL_bufptr D_PPP_my_PL_parser_var(bufptr) +# define PL_bufend D_PPP_my_PL_parser_var(bufend) +# define PL_lex_state D_PPP_my_PL_parser_var(lex_state) +# define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) +# define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) +# define PL_in_my D_PPP_my_PL_parser_var(in_my) +# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) +# define PL_error_count D_PPP_my_PL_parser_var(error_count) + + +#else + +/* ensure that PL_parser != NULL and cannot be dereferenced */ +# define PL_parser ((void *) 1) + +#endif +#ifndef mPUSHs +# define mPUSHs(s) PUSHs(sv_2mortal(s)) +#endif + +#ifndef PUSHmortal +# define PUSHmortal PUSHs(sv_newmortal()) +#endif + +#ifndef mPUSHp +# define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) +#endif + +#ifndef mPUSHn +# define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) +#endif + +#ifndef mPUSHi +# define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) +#endif + +#ifndef mPUSHu +# define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) +#endif +#ifndef mXPUSHs +# define mXPUSHs(s) XPUSHs(sv_2mortal(s)) +#endif + +#ifndef XPUSHmortal +# define XPUSHmortal XPUSHs(sv_newmortal()) +#endif + +#ifndef mXPUSHp +# define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END +#endif + +#ifndef mXPUSHn +# define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END +#endif + +#ifndef mXPUSHi +# define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END +#endif + +#ifndef mXPUSHu +# define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END +#endif + +/* Replace: 1 */ +#ifndef call_sv +# define call_sv perl_call_sv +#endif + +#ifndef call_pv +# define call_pv perl_call_pv +#endif + +#ifndef call_argv +# define call_argv perl_call_argv +#endif + +#ifndef call_method +# define call_method perl_call_method +#endif +#ifndef eval_sv +# define eval_sv perl_eval_sv +#endif + +/* Replace: 0 */ +#ifndef PERL_LOADMOD_DENY +# define PERL_LOADMOD_DENY 0x1 +#endif + +#ifndef PERL_LOADMOD_NOIMPORT +# define PERL_LOADMOD_NOIMPORT 0x2 +#endif + +#ifndef PERL_LOADMOD_IMPORT_OPS +# define PERL_LOADMOD_IMPORT_OPS 0x4 +#endif + +#ifndef G_METHOD +# define G_METHOD 64 +# ifdef call_sv +# undef call_sv +# endif +# if (PERL_BCDVERSION < 0x5006000) +# define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ + (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) +# else +# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ + (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) +# endif +#endif + +/* Replace perl_eval_pv with eval_pv */ + +#ifndef eval_pv +#if defined(NEED_eval_pv) +static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); +static +#else +extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); +#endif + +#ifdef eval_pv +# undef eval_pv +#endif +#define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) +#define Perl_eval_pv DPPP_(my_eval_pv) + +#if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) + +SV* +DPPP_(my_eval_pv)(char *p, I32 croak_on_error) +{ + dSP; + SV* sv = newSVpv(p, 0); + + PUSHMARK(sp); + eval_sv(sv, G_SCALAR); + SvREFCNT_dec(sv); + + SPAGAIN; + sv = POPs; + PUTBACK; + + if (croak_on_error && SvTRUE(GvSV(errgv))) + croak(SvPVx(GvSV(errgv), na)); + + return sv; +} + +#endif +#endif + +#ifndef vload_module +#if defined(NEED_vload_module) +static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); +static +#else +extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); +#endif + +#ifdef vload_module +# undef vload_module +#endif +#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) +#define Perl_vload_module DPPP_(my_vload_module) + +#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) + +void +DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) +{ + dTHR; + dVAR; + OP *veop, *imop; + + OP * const modname = newSVOP(OP_CONST, 0, name); + /* 5.005 has a somewhat hacky force_normal that doesn't croak on + SvREADONLY() if PL_compling is true. Current perls take care in + ck_require() to correctly turn off SvREADONLY before calling + force_normal_flags(). This seems a better fix than fudging PL_compling + */ + SvREADONLY_off(((SVOP*)modname)->op_sv); + modname->op_private |= OPpCONST_BARE; + if (ver) { + veop = newSVOP(OP_CONST, 0, ver); + } + else + veop = NULL; + if (flags & PERL_LOADMOD_NOIMPORT) { + imop = sawparens(newNULLLIST()); + } + else if (flags & PERL_LOADMOD_IMPORT_OPS) { + imop = va_arg(*args, OP*); + } + else { + SV *sv; + imop = NULL; + sv = va_arg(*args, SV*); + while (sv) { + imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); + sv = va_arg(*args, SV*); + } + } + { + const line_t ocopline = PL_copline; + COP * const ocurcop = PL_curcop; + const int oexpect = PL_expect; + +#if (PERL_BCDVERSION >= 0x5004000) + utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), + veop, modname, imop); +#else + utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), + modname, imop); +#endif + PL_expect = oexpect; + PL_copline = ocopline; + PL_curcop = ocurcop; + } +} + +#endif +#endif + +#ifndef load_module +#if defined(NEED_load_module) +static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); +static +#else +extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); +#endif + +#ifdef load_module +# undef load_module +#endif +#define load_module DPPP_(my_load_module) +#define Perl_load_module DPPP_(my_load_module) + +#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) + +void +DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) +{ + va_list args; + va_start(args, ver); + vload_module(flags, name, ver, &args); + va_end(args); +} + +#endif +#endif +#ifndef newRV_inc +# define newRV_inc(sv) newRV(sv) /* Replace */ +#endif + +#ifndef newRV_noinc +#if defined(NEED_newRV_noinc) +static SV * DPPP_(my_newRV_noinc)(SV *sv); +static +#else +extern SV * DPPP_(my_newRV_noinc)(SV *sv); +#endif + +#ifdef newRV_noinc +# undef newRV_noinc +#endif +#define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) +#define Perl_newRV_noinc DPPP_(my_newRV_noinc) + +#if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) +SV * +DPPP_(my_newRV_noinc)(SV *sv) +{ + SV *rv = (SV *)newRV(sv); + SvREFCNT_dec(sv); + return rv; +} +#endif +#endif + +/* Hint: newCONSTSUB + * Returns a CV* as of perl-5.7.1. This return value is not supported + * by Devel::PPPort. + */ + +/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ +#if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) +#if defined(NEED_newCONSTSUB) +static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); +static +#else +extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); +#endif + +#ifdef newCONSTSUB +# undef newCONSTSUB +#endif +#define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) +#define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) + +#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) + +/* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ +/* (There's no PL_parser in perl < 5.005, so this is completely safe) */ +#define D_PPP_PL_copline PL_copline + +void +DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) +{ + U32 oldhints = PL_hints; + HV *old_cop_stash = PL_curcop->cop_stash; + HV *old_curstash = PL_curstash; + line_t oldline = PL_curcop->cop_line; + PL_curcop->cop_line = D_PPP_PL_copline; + + PL_hints &= ~HINT_BLOCK_SCOPE; + if (stash) + PL_curstash = PL_curcop->cop_stash = stash; + + newSUB( + +#if (PERL_BCDVERSION < 0x5003022) + start_subparse(), +#elif (PERL_BCDVERSION == 0x5003022) + start_subparse(0), +#else /* 5.003_23 onwards */ + start_subparse(FALSE, 0), +#endif + + newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), + newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ + newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) + ); + + PL_hints = oldhints; + PL_curcop->cop_stash = old_cop_stash; + PL_curstash = old_curstash; + PL_curcop->cop_line = oldline; +} +#endif +#endif + +/* + * Boilerplate macros for initializing and accessing interpreter-local + * data from C. All statics in extensions should be reworked to use + * this, if you want to make the extension thread-safe. See ext/re/re.xs + * for an example of the use of these macros. + * + * Code that uses these macros is responsible for the following: + * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" + * 2. Declare a typedef named my_cxt_t that is a structure that contains + * all the data that needs to be interpreter-local. + * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. + * 4. Use the MY_CXT_INIT macro such that it is called exactly once + * (typically put in the BOOT: section). + * 5. Use the members of the my_cxt_t structure everywhere as + * MY_CXT.member. + * 6. Use the dMY_CXT macro (a declaration) in all the functions that + * access MY_CXT. + */ + +#if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ + defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) + +#ifndef START_MY_CXT + +/* This must appear in all extensions that define a my_cxt_t structure, + * right after the definition (i.e. at file scope). The non-threads + * case below uses it to declare the data as static. */ +#define START_MY_CXT + +#if (PERL_BCDVERSION < 0x5004068) +/* Fetches the SV that keeps the per-interpreter data. */ +#define dMY_CXT_SV \ + SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) +#else /* >= perl5.004_68 */ +#define dMY_CXT_SV \ + SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ + sizeof(MY_CXT_KEY)-1, TRUE) +#endif /* < perl5.004_68 */ + +/* This declaration should be used within all functions that use the + * interpreter-local data. */ +#define dMY_CXT \ + dMY_CXT_SV; \ + my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) + +/* Creates and zeroes the per-interpreter data. + * (We allocate my_cxtp in a Perl SV so that it will be released when + * the interpreter goes away.) */ +#define MY_CXT_INIT \ + dMY_CXT_SV; \ + /* newSV() allocates one more than needed */ \ + my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ + Zero(my_cxtp, 1, my_cxt_t); \ + sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) + +/* This macro must be used to access members of the my_cxt_t structure. + * e.g. MYCXT.some_data */ +#define MY_CXT (*my_cxtp) + +/* Judicious use of these macros can reduce the number of times dMY_CXT + * is used. Use is similar to pTHX, aTHX etc. */ +#define pMY_CXT my_cxt_t *my_cxtp +#define pMY_CXT_ pMY_CXT, +#define _pMY_CXT ,pMY_CXT +#define aMY_CXT my_cxtp +#define aMY_CXT_ aMY_CXT, +#define _aMY_CXT ,aMY_CXT + +#endif /* START_MY_CXT */ + +#ifndef MY_CXT_CLONE +/* Clones the per-interpreter data. */ +#define MY_CXT_CLONE \ + dMY_CXT_SV; \ + my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ + Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ + sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) +#endif + +#else /* single interpreter */ + +#ifndef START_MY_CXT + +#define START_MY_CXT static my_cxt_t my_cxt; +#define dMY_CXT_SV dNOOP +#define dMY_CXT dNOOP +#define MY_CXT_INIT NOOP +#define MY_CXT my_cxt + +#define pMY_CXT void +#define pMY_CXT_ +#define _pMY_CXT +#define aMY_CXT +#define aMY_CXT_ +#define _aMY_CXT + +#endif /* START_MY_CXT */ + +#ifndef MY_CXT_CLONE +#define MY_CXT_CLONE NOOP +#endif + +#endif + +#ifndef IVdf +# if IVSIZE == LONGSIZE +# define IVdf "ld" +# define UVuf "lu" +# define UVof "lo" +# define UVxf "lx" +# define UVXf "lX" +# else +# if IVSIZE == INTSIZE +# define IVdf "d" +# define UVuf "u" +# define UVof "o" +# define UVxf "x" +# define UVXf "X" +# endif +# endif +#endif + +#ifndef NVef +# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ + defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) + /* Not very likely, but let's try anyway. */ +# define NVef PERL_PRIeldbl +# define NVff PERL_PRIfldbl +# define NVgf PERL_PRIgldbl +# else +# define NVef "e" +# define NVff "f" +# define NVgf "g" +# endif +#endif + +#ifndef SvREFCNT_inc +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + if (_sv) \ + (SvREFCNT(_sv))++; \ + _sv; \ + }) +# else +# define SvREFCNT_inc(sv) \ + ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) +# endif +#endif + +#ifndef SvREFCNT_inc_simple +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_simple(sv) \ + ({ \ + if (sv) \ + (SvREFCNT(sv))++; \ + (SV *)(sv); \ + }) +# else +# define SvREFCNT_inc_simple(sv) \ + ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) +# endif +#endif + +#ifndef SvREFCNT_inc_NN +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_NN(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + SvREFCNT(_sv)++; \ + _sv; \ + }) +# else +# define SvREFCNT_inc_NN(sv) \ + (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) +# endif +#endif + +#ifndef SvREFCNT_inc_void +# ifdef PERL_USE_GCC_BRACE_GROUPS +# define SvREFCNT_inc_void(sv) \ + ({ \ + SV * const _sv = (SV*)(sv); \ + if (_sv) \ + (void)(SvREFCNT(_sv)++); \ + }) +# else +# define SvREFCNT_inc_void(sv) \ + (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) +# endif +#endif +#ifndef SvREFCNT_inc_simple_void +# define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END +#endif + +#ifndef SvREFCNT_inc_simple_NN +# define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) +#endif + +#ifndef SvREFCNT_inc_void_NN +# define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) +#endif + +#ifndef SvREFCNT_inc_simple_void_NN +# define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) +#endif + +#ifndef newSV_type + +#if defined(NEED_newSV_type) +static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); +static +#else +extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t); +#endif + +#ifdef newSV_type +# undef newSV_type +#endif +#define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a) +#define Perl_newSV_type DPPP_(my_newSV_type) + +#if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL) + +SV* +DPPP_(my_newSV_type)(pTHX_ svtype const t) +{ + SV* const sv = newSV(0); + sv_upgrade(sv, t); + return sv; +} + +#endif + +#endif + +#if (PERL_BCDVERSION < 0x5006000) +# define D_PPP_CONSTPV_ARG(x) ((char *) (x)) +#else +# define D_PPP_CONSTPV_ARG(x) (x) +#endif +#ifndef newSVpvn +# define newSVpvn(data,len) ((data) \ + ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ + : newSV(0)) +#endif +#ifndef newSVpvn_utf8 +# define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) +#endif +#ifndef SVf_UTF8 +# define SVf_UTF8 0 +#endif + +#ifndef newSVpvn_flags + +#if defined(NEED_newSVpvn_flags) +static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); +static +#else +extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); +#endif + +#ifdef newSVpvn_flags +# undef newSVpvn_flags +#endif +#define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c) +#define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags) + +#if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL) + +SV * +DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags) +{ + SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len); + SvFLAGS(sv) |= (flags & SVf_UTF8); + return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; +} + +#endif + +#endif + +/* Backwards compatibility stuff... :-( */ +#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) +# define NEED_sv_2pv_flags +#endif +#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) +# define NEED_sv_2pv_flags_GLOBAL +#endif + +/* Hint: sv_2pv_nolen + * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). + */ +#ifndef sv_2pv_nolen +# define sv_2pv_nolen(sv) SvPV_nolen(sv) +#endif + +#ifdef SvPVbyte + +/* Hint: SvPVbyte + * Does not work in perl-5.6.1, ppport.h implements a version + * borrowed from perl-5.7.3. + */ + +#if (PERL_BCDVERSION < 0x5007000) + +#if defined(NEED_sv_2pvbyte) +static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); +static +#else +extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); +#endif + +#ifdef sv_2pvbyte +# undef sv_2pvbyte +#endif +#define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) +#define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) + +#if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) + +char * +DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) +{ + sv_utf8_downgrade(sv,0); + return SvPV(sv,*lp); +} + +#endif + +/* Hint: sv_2pvbyte + * Use the SvPVbyte() macro instead of sv_2pvbyte(). + */ + +#undef SvPVbyte + +#define SvPVbyte(sv, lp) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) + +#endif + +#else + +# define SvPVbyte SvPV +# define sv_2pvbyte sv_2pv + +#endif +#ifndef sv_2pvbyte_nolen +# define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) +#endif + +/* Hint: sv_pvn + * Always use the SvPV() macro instead of sv_pvn(). + */ + +/* Hint: sv_pvn_force + * Always use the SvPV_force() macro instead of sv_pvn_force(). + */ + +/* If these are undefined, they're not handled by the core anyway */ +#ifndef SV_IMMEDIATE_UNREF +# define SV_IMMEDIATE_UNREF 0 +#endif + +#ifndef SV_GMAGIC +# define SV_GMAGIC 0 +#endif + +#ifndef SV_COW_DROP_PV +# define SV_COW_DROP_PV 0 +#endif + +#ifndef SV_UTF8_NO_ENCODING +# define SV_UTF8_NO_ENCODING 0 +#endif + +#ifndef SV_NOSTEAL +# define SV_NOSTEAL 0 +#endif + +#ifndef SV_CONST_RETURN +# define SV_CONST_RETURN 0 +#endif + +#ifndef SV_MUTABLE_RETURN +# define SV_MUTABLE_RETURN 0 +#endif + +#ifndef SV_SMAGIC +# define SV_SMAGIC 0 +#endif + +#ifndef SV_HAS_TRAILING_NUL +# define SV_HAS_TRAILING_NUL 0 +#endif + +#ifndef SV_COW_SHARED_HASH_KEYS +# define SV_COW_SHARED_HASH_KEYS 0 +#endif + +#if (PERL_BCDVERSION < 0x5007002) + +#if defined(NEED_sv_2pv_flags) +static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +static +#else +extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +#endif + +#ifdef sv_2pv_flags +# undef sv_2pv_flags +#endif +#define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) +#define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) + +#if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) + +char * +DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) +{ + STRLEN n_a = (STRLEN) flags; + return sv_2pv(sv, lp ? lp : &n_a); +} + +#endif + +#if defined(NEED_sv_pvn_force_flags) +static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +static +#else +extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); +#endif + +#ifdef sv_pvn_force_flags +# undef sv_pvn_force_flags +#endif +#define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) +#define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) + +#if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) + +char * +DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) +{ + STRLEN n_a = (STRLEN) flags; + return sv_pvn_force(sv, lp ? lp : &n_a); +} + +#endif + +#endif + +#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) +# define DPPP_SVPV_NOLEN_LP_ARG &PL_na +#else +# define DPPP_SVPV_NOLEN_LP_ARG 0 +#endif +#ifndef SvPV_const +# define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_mutable +# define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) +#endif +#ifndef SvPV_flags +# define SvPV_flags(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) +#endif +#ifndef SvPV_flags_const +# define SvPV_flags_const(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ + (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) +#endif +#ifndef SvPV_flags_const_nolen +# define SvPV_flags_const_nolen(sv, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX_const(sv) : \ + (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) +#endif +#ifndef SvPV_flags_mutable +# define SvPV_flags_mutable(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ + sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) +#endif +#ifndef SvPV_force +# define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_force_nolen +# define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) +#endif + +#ifndef SvPV_force_mutable +# define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) +#endif + +#ifndef SvPV_force_nomg +# define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) +#endif + +#ifndef SvPV_force_nomg_nolen +# define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) +#endif +#ifndef SvPV_force_flags +# define SvPV_force_flags(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) +#endif +#ifndef SvPV_force_flags_nolen +# define SvPV_force_flags_nolen(sv, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags)) +#endif +#ifndef SvPV_force_flags_mutable +# define SvPV_force_flags_mutable(sv, lp, flags) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ + ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ + : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) +#endif +#ifndef SvPV_nolen +# define SvPV_nolen(sv) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) +#endif +#ifndef SvPV_nolen_const +# define SvPV_nolen_const(sv) \ + ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ + ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) +#endif +#ifndef SvPV_nomg +# define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) +#endif + +#ifndef SvPV_nomg_const +# define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) +#endif + +#ifndef SvPV_nomg_const_nolen +# define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) +#endif +#ifndef SvPV_renew +# define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ + SvPV_set((sv), (char *) saferealloc( \ + (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ + } STMT_END +#endif +#ifndef SvMAGIC_set +# define SvMAGIC_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ + (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END +#endif + +#if (PERL_BCDVERSION < 0x5009003) +#ifndef SvPVX_const +# define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) +#endif + +#ifndef SvPVX_mutable +# define SvPVX_mutable(sv) (0 + SvPVX(sv)) +#endif +#ifndef SvRV_set +# define SvRV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ + (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END +#endif + +#else +#ifndef SvPVX_const +# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) +#endif + +#ifndef SvPVX_mutable +# define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) +#endif +#ifndef SvRV_set +# define SvRV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ + ((sv)->sv_u.svu_rv = (val)); } STMT_END +#endif + +#endif +#ifndef SvSTASH_set +# define SvSTASH_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ + (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END +#endif + +#if (PERL_BCDVERSION < 0x5004000) +#ifndef SvUV_set +# define SvUV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ + (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END +#endif + +#else +#ifndef SvUV_set +# define SvUV_set(sv, val) \ + STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ + (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END +#endif + +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) +#if defined(NEED_vnewSVpvf) +static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); +static +#else +extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); +#endif + +#ifdef vnewSVpvf +# undef vnewSVpvf +#endif +#define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) +#define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) + +#if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) + +SV * +DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) +{ + register SV *sv = newSV(0); + sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); + return sv; +} + +#endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) +# define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) +# define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) +#if defined(NEED_sv_catpvf_mg) +static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +#endif + +#define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) + +#if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) + +void +DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) +{ + va_list args; + va_start(args, pat); + sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif + +#ifdef PERL_IMPLICIT_CONTEXT +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) +#if defined(NEED_sv_catpvf_mg_nocontext) +static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); +#endif + +#define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) +#define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) + +#if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) + +void +DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) +{ + dTHX; + va_list args; + va_start(args, pat); + sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif +#endif + +/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ +#ifndef sv_catpvf_mg +# ifdef PERL_IMPLICIT_CONTEXT +# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext +# else +# define sv_catpvf_mg Perl_sv_catpvf_mg +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) +# define sv_vcatpvf_mg(sv, pat, args) \ + STMT_START { \ + sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ + SvSETMAGIC(sv); \ + } STMT_END +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) +#if defined(NEED_sv_setpvf_mg) +static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); +#endif + +#define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) + +#if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) + +void +DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) +{ + va_list args; + va_start(args, pat); + sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif + +#ifdef PERL_IMPLICIT_CONTEXT +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) +#if defined(NEED_sv_setpvf_mg_nocontext) +static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); +static +#else +extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); +#endif + +#define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) +#define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) + +#if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) + +void +DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) +{ + dTHX; + va_list args; + va_start(args, pat); + sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); + SvSETMAGIC(sv); + va_end(args); +} + +#endif +#endif +#endif + +/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ +#ifndef sv_setpvf_mg +# ifdef PERL_IMPLICIT_CONTEXT +# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext +# else +# define sv_setpvf_mg Perl_sv_setpvf_mg +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) +# define sv_vsetpvf_mg(sv, pat, args) \ + STMT_START { \ + sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ + SvSETMAGIC(sv); \ + } STMT_END +#endif + +/* Hint: newSVpvn_share + * The SVs created by this function only mimic the behaviour of + * shared PVs without really being shared. Only use if you know + * what you're doing. + */ + +#ifndef newSVpvn_share + +#if defined(NEED_newSVpvn_share) +static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); +static +#else +extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); +#endif + +#ifdef newSVpvn_share +# undef newSVpvn_share +#endif +#define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) +#define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) + +#if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) + +SV * +DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) +{ + SV *sv; + if (len < 0) + len = -len; + if (!hash) + PERL_HASH(hash, (char*) src, len); + sv = newSVpvn((char *) src, len); + sv_upgrade(sv, SVt_PVIV); + SvIVX(sv) = hash; + SvREADONLY_on(sv); + SvPOK_on(sv); + return sv; +} + +#endif + +#endif +#ifndef SvSHARED_HASH +# define SvSHARED_HASH(sv) (0 + SvUVX(sv)) +#endif +#ifndef HvNAME_get +# define HvNAME_get(hv) HvNAME(hv) +#endif +#ifndef HvNAMELEN_get +# define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) +#endif +#ifndef GvSVn +# define GvSVn(gv) GvSV(gv) +#endif + +#ifndef isGV_with_GP +# define isGV_with_GP(gv) isGV(gv) +#endif + +#ifndef gv_fetchpvn_flags +# define gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt) +#endif + +#ifndef gv_fetchsv +# define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt) +#endif +#ifndef get_cvn_flags +# define get_cvn_flags(name, namelen, flags) get_cv(name, flags) +#endif +#ifndef WARN_ALL +# define WARN_ALL 0 +#endif + +#ifndef WARN_CLOSURE +# define WARN_CLOSURE 1 +#endif + +#ifndef WARN_DEPRECATED +# define WARN_DEPRECATED 2 +#endif + +#ifndef WARN_EXITING +# define WARN_EXITING 3 +#endif + +#ifndef WARN_GLOB +# define WARN_GLOB 4 +#endif + +#ifndef WARN_IO +# define WARN_IO 5 +#endif + +#ifndef WARN_CLOSED +# define WARN_CLOSED 6 +#endif + +#ifndef WARN_EXEC +# define WARN_EXEC 7 +#endif + +#ifndef WARN_LAYER +# define WARN_LAYER 8 +#endif + +#ifndef WARN_NEWLINE +# define WARN_NEWLINE 9 +#endif + +#ifndef WARN_PIPE +# define WARN_PIPE 10 +#endif + +#ifndef WARN_UNOPENED +# define WARN_UNOPENED 11 +#endif + +#ifndef WARN_MISC +# define WARN_MISC 12 +#endif + +#ifndef WARN_NUMERIC +# define WARN_NUMERIC 13 +#endif + +#ifndef WARN_ONCE +# define WARN_ONCE 14 +#endif + +#ifndef WARN_OVERFLOW +# define WARN_OVERFLOW 15 +#endif + +#ifndef WARN_PACK +# define WARN_PACK 16 +#endif + +#ifndef WARN_PORTABLE +# define WARN_PORTABLE 17 +#endif + +#ifndef WARN_RECURSION +# define WARN_RECURSION 18 +#endif + +#ifndef WARN_REDEFINE +# define WARN_REDEFINE 19 +#endif + +#ifndef WARN_REGEXP +# define WARN_REGEXP 20 +#endif + +#ifndef WARN_SEVERE +# define WARN_SEVERE 21 +#endif + +#ifndef WARN_DEBUGGING +# define WARN_DEBUGGING 22 +#endif + +#ifndef WARN_INPLACE +# define WARN_INPLACE 23 +#endif + +#ifndef WARN_INTERNAL +# define WARN_INTERNAL 24 +#endif + +#ifndef WARN_MALLOC +# define WARN_MALLOC 25 +#endif + +#ifndef WARN_SIGNAL +# define WARN_SIGNAL 26 +#endif + +#ifndef WARN_SUBSTR +# define WARN_SUBSTR 27 +#endif + +#ifndef WARN_SYNTAX +# define WARN_SYNTAX 28 +#endif + +#ifndef WARN_AMBIGUOUS +# define WARN_AMBIGUOUS 29 +#endif + +#ifndef WARN_BAREWORD +# define WARN_BAREWORD 30 +#endif + +#ifndef WARN_DIGIT +# define WARN_DIGIT 31 +#endif + +#ifndef WARN_PARENTHESIS +# define WARN_PARENTHESIS 32 +#endif + +#ifndef WARN_PRECEDENCE +# define WARN_PRECEDENCE 33 +#endif + +#ifndef WARN_PRINTF +# define WARN_PRINTF 34 +#endif + +#ifndef WARN_PROTOTYPE +# define WARN_PROTOTYPE 35 +#endif + +#ifndef WARN_QW +# define WARN_QW 36 +#endif + +#ifndef WARN_RESERVED +# define WARN_RESERVED 37 +#endif + +#ifndef WARN_SEMICOLON +# define WARN_SEMICOLON 38 +#endif + +#ifndef WARN_TAINT +# define WARN_TAINT 39 +#endif + +#ifndef WARN_THREADS +# define WARN_THREADS 40 +#endif + +#ifndef WARN_UNINITIALIZED +# define WARN_UNINITIALIZED 41 +#endif + +#ifndef WARN_UNPACK +# define WARN_UNPACK 42 +#endif + +#ifndef WARN_UNTIE +# define WARN_UNTIE 43 +#endif + +#ifndef WARN_UTF8 +# define WARN_UTF8 44 +#endif + +#ifndef WARN_VOID +# define WARN_VOID 45 +#endif + +#ifndef WARN_ASSERTIONS +# define WARN_ASSERTIONS 46 +#endif +#ifndef packWARN +# define packWARN(a) (a) +#endif + +#ifndef ckWARN +# ifdef G_WARN_ON +# define ckWARN(a) (PL_dowarn & G_WARN_ON) +# else +# define ckWARN(a) PL_dowarn +# endif +#endif + +#if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) +#if defined(NEED_warner) +static void DPPP_(my_warner)(U32 err, const char *pat, ...); +static +#else +extern void DPPP_(my_warner)(U32 err, const char *pat, ...); +#endif + +#define Perl_warner DPPP_(my_warner) + +#if defined(NEED_warner) || defined(NEED_warner_GLOBAL) + +void +DPPP_(my_warner)(U32 err, const char *pat, ...) +{ + SV *sv; + va_list args; + + PERL_UNUSED_ARG(err); + + va_start(args, pat); + sv = vnewSVpvf(pat, &args); + va_end(args); + sv_2mortal(sv); + warn("%s", SvPV_nolen(sv)); +} + +#define warner Perl_warner + +#define Perl_warner_nocontext Perl_warner + +#endif +#endif + +/* concatenating with "" ensures that only literal strings are accepted as argument + * note that STR_WITH_LEN() can't be used as argument to macros or functions that + * under some configurations might be macros + */ +#ifndef STR_WITH_LEN +# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) +#endif +#ifndef newSVpvs +# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) +#endif + +#ifndef newSVpvs_flags +# define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) +#endif + +#ifndef newSVpvs_share +# define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0) +#endif + +#ifndef sv_catpvs +# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef sv_setpvs +# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) +#endif + +#ifndef hv_fetchs +# define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) +#endif + +#ifndef hv_stores +# define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) +#endif +#ifndef gv_fetchpvs +# define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) +#endif + +#ifndef gv_stashpvs +# define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) +#endif +#ifndef get_cvs +# define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags) +#endif +#ifndef SvGETMAGIC +# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END +#endif +#ifndef PERL_MAGIC_sv +# define PERL_MAGIC_sv '\0' +#endif + +#ifndef PERL_MAGIC_overload +# define PERL_MAGIC_overload 'A' +#endif + +#ifndef PERL_MAGIC_overload_elem +# define PERL_MAGIC_overload_elem 'a' +#endif + +#ifndef PERL_MAGIC_overload_table +# define PERL_MAGIC_overload_table 'c' +#endif + +#ifndef PERL_MAGIC_bm +# define PERL_MAGIC_bm 'B' +#endif + +#ifndef PERL_MAGIC_regdata +# define PERL_MAGIC_regdata 'D' +#endif + +#ifndef PERL_MAGIC_regdatum +# define PERL_MAGIC_regdatum 'd' +#endif + +#ifndef PERL_MAGIC_env +# define PERL_MAGIC_env 'E' +#endif + +#ifndef PERL_MAGIC_envelem +# define PERL_MAGIC_envelem 'e' +#endif + +#ifndef PERL_MAGIC_fm +# define PERL_MAGIC_fm 'f' +#endif + +#ifndef PERL_MAGIC_regex_global +# define PERL_MAGIC_regex_global 'g' +#endif + +#ifndef PERL_MAGIC_isa +# define PERL_MAGIC_isa 'I' +#endif + +#ifndef PERL_MAGIC_isaelem +# define PERL_MAGIC_isaelem 'i' +#endif + +#ifndef PERL_MAGIC_nkeys +# define PERL_MAGIC_nkeys 'k' +#endif + +#ifndef PERL_MAGIC_dbfile +# define PERL_MAGIC_dbfile 'L' +#endif + +#ifndef PERL_MAGIC_dbline +# define PERL_MAGIC_dbline 'l' +#endif + +#ifndef PERL_MAGIC_mutex +# define PERL_MAGIC_mutex 'm' +#endif + +#ifndef PERL_MAGIC_shared +# define PERL_MAGIC_shared 'N' +#endif + +#ifndef PERL_MAGIC_shared_scalar +# define PERL_MAGIC_shared_scalar 'n' +#endif + +#ifndef PERL_MAGIC_collxfrm +# define PERL_MAGIC_collxfrm 'o' +#endif + +#ifndef PERL_MAGIC_tied +# define PERL_MAGIC_tied 'P' +#endif + +#ifndef PERL_MAGIC_tiedelem +# define PERL_MAGIC_tiedelem 'p' +#endif + +#ifndef PERL_MAGIC_tiedscalar +# define PERL_MAGIC_tiedscalar 'q' +#endif + +#ifndef PERL_MAGIC_qr +# define PERL_MAGIC_qr 'r' +#endif + +#ifndef PERL_MAGIC_sig +# define PERL_MAGIC_sig 'S' +#endif + +#ifndef PERL_MAGIC_sigelem +# define PERL_MAGIC_sigelem 's' +#endif + +#ifndef PERL_MAGIC_taint +# define PERL_MAGIC_taint 't' +#endif + +#ifndef PERL_MAGIC_uvar +# define PERL_MAGIC_uvar 'U' +#endif + +#ifndef PERL_MAGIC_uvar_elem +# define PERL_MAGIC_uvar_elem 'u' +#endif + +#ifndef PERL_MAGIC_vstring +# define PERL_MAGIC_vstring 'V' +#endif + +#ifndef PERL_MAGIC_vec +# define PERL_MAGIC_vec 'v' +#endif + +#ifndef PERL_MAGIC_utf8 +# define PERL_MAGIC_utf8 'w' +#endif + +#ifndef PERL_MAGIC_substr +# define PERL_MAGIC_substr 'x' +#endif + +#ifndef PERL_MAGIC_defelem +# define PERL_MAGIC_defelem 'y' +#endif + +#ifndef PERL_MAGIC_glob +# define PERL_MAGIC_glob '*' +#endif + +#ifndef PERL_MAGIC_arylen +# define PERL_MAGIC_arylen '#' +#endif + +#ifndef PERL_MAGIC_pos +# define PERL_MAGIC_pos '.' +#endif + +#ifndef PERL_MAGIC_backref +# define PERL_MAGIC_backref '<' +#endif + +#ifndef PERL_MAGIC_ext +# define PERL_MAGIC_ext '~' +#endif + +/* That's the best we can do... */ +#ifndef sv_catpvn_nomg +# define sv_catpvn_nomg sv_catpvn +#endif + +#ifndef sv_catsv_nomg +# define sv_catsv_nomg sv_catsv +#endif + +#ifndef sv_setsv_nomg +# define sv_setsv_nomg sv_setsv +#endif + +#ifndef sv_pvn_nomg +# define sv_pvn_nomg sv_pvn +#endif + +#ifndef SvIV_nomg +# define SvIV_nomg SvIV +#endif + +#ifndef SvUV_nomg +# define SvUV_nomg SvUV +#endif + +#ifndef sv_catpv_mg +# define sv_catpv_mg(sv, ptr) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_catpv(TeMpSv,ptr); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_catpvn_mg +# define sv_catpvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_catpvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_catsv_mg +# define sv_catsv_mg(dsv, ssv) \ + STMT_START { \ + SV *TeMpSv = dsv; \ + sv_catsv(TeMpSv,ssv); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setiv_mg +# define sv_setiv_mg(sv, i) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setiv(TeMpSv,i); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setnv_mg +# define sv_setnv_mg(sv, num) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setnv(TeMpSv,num); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setpv_mg +# define sv_setpv_mg(sv, ptr) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setpv(TeMpSv,ptr); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setpvn_mg +# define sv_setpvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setpvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setsv_mg +# define sv_setsv_mg(dsv, ssv) \ + STMT_START { \ + SV *TeMpSv = dsv; \ + sv_setsv(TeMpSv,ssv); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_setuv_mg +# define sv_setuv_mg(sv, i) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_setuv(TeMpSv,i); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif + +#ifndef sv_usepvn_mg +# define sv_usepvn_mg(sv, ptr, len) \ + STMT_START { \ + SV *TeMpSv = sv; \ + sv_usepvn(TeMpSv,ptr,len); \ + SvSETMAGIC(TeMpSv); \ + } STMT_END +#endif +#ifndef SvVSTRING_mg +# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) +#endif + +/* Hint: sv_magic_portable + * This is a compatibility function that is only available with + * Devel::PPPort. It is NOT in the perl core. + * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when + * it is being passed a name pointer with namlen == 0. In that + * case, perl 5.8.0 and later store the pointer, not a copy of it. + * The compatibility can be provided back to perl 5.004. With + * earlier versions, the code will not compile. + */ + +#if (PERL_BCDVERSION < 0x5004000) + + /* code that uses sv_magic_portable will not compile */ + +#elif (PERL_BCDVERSION < 0x5008000) + +# define sv_magic_portable(sv, obj, how, name, namlen) \ + STMT_START { \ + SV *SvMp_sv = (sv); \ + char *SvMp_name = (char *) (name); \ + I32 SvMp_namlen = (namlen); \ + if (SvMp_name && SvMp_namlen == 0) \ + { \ + MAGIC *mg; \ + sv_magic(SvMp_sv, obj, how, 0, 0); \ + mg = SvMAGIC(SvMp_sv); \ + mg->mg_len = -42; /* XXX: this is the tricky part */ \ + mg->mg_ptr = SvMp_name; \ + } \ + else \ + { \ + sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ + } \ + } STMT_END + +#else + +# define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) + +#endif + +#ifdef USE_ITHREADS +#ifndef CopFILE +# define CopFILE(c) ((c)->cop_file) +#endif + +#ifndef CopFILEGV +# define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) +#endif + +#ifndef CopFILE_set +# define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) +#endif + +#ifndef CopFILESV +# define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) +#endif + +#ifndef CopFILEAV +# define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) +#endif + +#ifndef CopSTASHPV +# define CopSTASHPV(c) ((c)->cop_stashpv) +#endif + +#ifndef CopSTASHPV_set +# define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) +#endif + +#ifndef CopSTASH +# define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) +#endif + +#ifndef CopSTASH_set +# define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) +#endif + +#ifndef CopSTASH_eq +# define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ + || (CopSTASHPV(c) && HvNAME(hv) \ + && strEQ(CopSTASHPV(c), HvNAME(hv))))) +#endif + +#else +#ifndef CopFILEGV +# define CopFILEGV(c) ((c)->cop_filegv) +#endif + +#ifndef CopFILEGV_set +# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) +#endif + +#ifndef CopFILE_set +# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) +#endif + +#ifndef CopFILESV +# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) +#endif + +#ifndef CopFILEAV +# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) +#endif + +#ifndef CopFILE +# define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) +#endif + +#ifndef CopSTASH +# define CopSTASH(c) ((c)->cop_stash) +#endif + +#ifndef CopSTASH_set +# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) +#endif + +#ifndef CopSTASHPV +# define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) +#endif + +#ifndef CopSTASHPV_set +# define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) +#endif + +#ifndef CopSTASH_eq +# define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) +#endif + +#endif /* USE_ITHREADS */ +#ifndef IN_PERL_COMPILETIME +# define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) +#endif + +#ifndef IN_LOCALE_RUNTIME +# define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) +#endif + +#ifndef IN_LOCALE_COMPILETIME +# define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) +#endif + +#ifndef IN_LOCALE +# define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) +#endif +#ifndef IS_NUMBER_IN_UV +# define IS_NUMBER_IN_UV 0x01 +#endif + +#ifndef IS_NUMBER_GREATER_THAN_UV_MAX +# define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 +#endif + +#ifndef IS_NUMBER_NOT_INT +# define IS_NUMBER_NOT_INT 0x04 +#endif + +#ifndef IS_NUMBER_NEG +# define IS_NUMBER_NEG 0x08 +#endif + +#ifndef IS_NUMBER_INFINITY +# define IS_NUMBER_INFINITY 0x10 +#endif + +#ifndef IS_NUMBER_NAN +# define IS_NUMBER_NAN 0x20 +#endif +#ifndef GROK_NUMERIC_RADIX +# define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) +#endif +#ifndef PERL_SCAN_GREATER_THAN_UV_MAX +# define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 +#endif + +#ifndef PERL_SCAN_SILENT_ILLDIGIT +# define PERL_SCAN_SILENT_ILLDIGIT 0x04 +#endif + +#ifndef PERL_SCAN_ALLOW_UNDERSCORES +# define PERL_SCAN_ALLOW_UNDERSCORES 0x01 +#endif + +#ifndef PERL_SCAN_DISALLOW_PREFIX +# define PERL_SCAN_DISALLOW_PREFIX 0x02 +#endif + +#ifndef grok_numeric_radix +#if defined(NEED_grok_numeric_radix) +static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); +static +#else +extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); +#endif + +#ifdef grok_numeric_radix +# undef grok_numeric_radix +#endif +#define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) +#define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) + +#if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) +bool +DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) +{ +#ifdef USE_LOCALE_NUMERIC +#ifdef PL_numeric_radix_sv + if (PL_numeric_radix_sv && IN_LOCALE) { + STRLEN len; + char* radix = SvPV(PL_numeric_radix_sv, len); + if (*sp + len <= send && memEQ(*sp, radix, len)) { + *sp += len; + return TRUE; + } + } +#else + /* older perls don't have PL_numeric_radix_sv so the radix + * must manually be requested from locale.h + */ +#include + dTHR; /* needed for older threaded perls */ + struct lconv *lc = localeconv(); + char *radix = lc->decimal_point; + if (radix && IN_LOCALE) { + STRLEN len = strlen(radix); + if (*sp + len <= send && memEQ(*sp, radix, len)) { + *sp += len; + return TRUE; + } + } +#endif +#endif /* USE_LOCALE_NUMERIC */ + /* always try "." if numeric radix didn't match because + * we may have data from different locales mixed */ + if (*sp < send && **sp == '.') { + ++*sp; + return TRUE; + } + return FALSE; +} +#endif +#endif + +#ifndef grok_number +#if defined(NEED_grok_number) +static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); +static +#else +extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); +#endif + +#ifdef grok_number +# undef grok_number +#endif +#define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) +#define Perl_grok_number DPPP_(my_grok_number) + +#if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) +int +DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) +{ + const char *s = pv; + const char *send = pv + len; + const UV max_div_10 = UV_MAX / 10; + const char max_mod_10 = UV_MAX % 10; + int numtype = 0; + int sawinf = 0; + int sawnan = 0; + + while (s < send && isSPACE(*s)) + s++; + if (s == send) { + return 0; + } else if (*s == '-') { + s++; + numtype = IS_NUMBER_NEG; + } + else if (*s == '+') + s++; + + if (s == send) + return 0; + + /* next must be digit or the radix separator or beginning of infinity */ + if (isDIGIT(*s)) { + /* UVs are at least 32 bits, so the first 9 decimal digits cannot + overflow. */ + UV value = *s - '0'; + /* This construction seems to be more optimiser friendly. + (without it gcc does the isDIGIT test and the *s - '0' separately) + With it gcc on arm is managing 6 instructions (6 cycles) per digit. + In theory the optimiser could deduce how far to unroll the loop + before checking for overflow. */ + if (++s < send) { + int digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + digit = *s - '0'; + if (digit >= 0 && digit <= 9) { + value = value * 10 + digit; + if (++s < send) { + /* Now got 9 digits, so need to check + each time for overflow. */ + digit = *s - '0'; + while (digit >= 0 && digit <= 9 + && (value < max_div_10 + || (value == max_div_10 + && digit <= max_mod_10))) { + value = value * 10 + digit; + if (++s < send) + digit = *s - '0'; + else + break; + } + if (digit >= 0 && digit <= 9 + && (s < send)) { + /* value overflowed. + skip the remaining digits, don't + worry about setting *valuep. */ + do { + s++; + } while (s < send && isDIGIT(*s)); + numtype |= + IS_NUMBER_GREATER_THAN_UV_MAX; + goto skip_value; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + numtype |= IS_NUMBER_IN_UV; + if (valuep) + *valuep = value; + + skip_value: + if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT; + while (s < send && isDIGIT(*s)) /* optional digits after the radix */ + s++; + } + } + else if (GROK_NUMERIC_RADIX(&s, send)) { + numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ + /* no digits before the radix means we need digits after it */ + if (s < send && isDIGIT(*s)) { + do { + s++; + } while (s < send && isDIGIT(*s)); + if (valuep) { + /* integer approximation is valid - it's 0. */ + *valuep = 0; + } + } + else + return 0; + } else if (*s == 'I' || *s == 'i') { + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; + s++; if (s < send && (*s == 'I' || *s == 'i')) { + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; + s++; if (s == send || (*s != 'T' && *s != 't')) return 0; + s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; + s++; + } + sawinf = 1; + } else if (*s == 'N' || *s == 'n') { + /* XXX TODO: There are signaling NaNs and quiet NaNs. */ + s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; + s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; + s++; + sawnan = 1; + } else + return 0; + + if (sawinf) { + numtype &= IS_NUMBER_NEG; /* Keep track of sign */ + numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; + } else if (sawnan) { + numtype &= IS_NUMBER_NEG; /* Keep track of sign */ + numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; + } else if (s < send) { + /* we can have an optional exponent part */ + if (*s == 'e' || *s == 'E') { + /* The only flag we keep is sign. Blow away any "it's UV" */ + numtype &= IS_NUMBER_NEG; + numtype |= IS_NUMBER_NOT_INT; + s++; + if (s < send && (*s == '-' || *s == '+')) + s++; + if (s < send && isDIGIT(*s)) { + do { + s++; + } while (s < send && isDIGIT(*s)); + } + else + return 0; + } + } + while (s < send && isSPACE(*s)) + s++; + if (s >= send) + return numtype; + if (len == 10 && memEQ(pv, "0 but true", 10)) { + if (valuep) + *valuep = 0; + return IS_NUMBER_IN_UV; + } + return 0; +} +#endif +#endif + +/* + * The grok_* routines have been modified to use warn() instead of + * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, + * which is why the stack variable has been renamed to 'xdigit'. + */ + +#ifndef grok_bin +#if defined(NEED_grok_bin) +static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_bin +# undef grok_bin +#endif +#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) +#define Perl_grok_bin DPPP_(my_grok_bin) + +#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) +UV +DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_2 = UV_MAX / 2; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + + if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { + /* strip off leading b or 0b. + for compatibility silently suffer "b" and "0b" as valid binary + numbers. */ + if (len >= 1) { + if (s[0] == 'b') { + s++; + len--; + } + else if (len >= 2 && s[0] == '0' && s[1] == 'b') { + s+=2; + len-=2; + } + } + } + + for (; len-- && *s; s++) { + char bit = *s; + if (bit == '0' || bit == '1') { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + With gcc seems to be much straighter code than old scan_bin. */ + redo: + if (!overflowed) { + if (value <= max_div_2) { + value = (value << 1) | (bit - '0'); + continue; + } + /* Bah. We're just overflowed. */ + warn("Integer overflow in binary number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 2.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount. */ + value_nv += (NV)(bit - '0'); + continue; + } + if (bit == '_' && len && allow_underscores && (bit = s[1]) + && (bit == '0' || bit == '1')) + { + --len; + ++s; + goto redo; + } + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal binary digit '%c' ignored", *s); + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Binary number > 0b11111111111111111111111111111111 non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#ifndef grok_hex +#if defined(NEED_grok_hex) +static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_hex +# undef grok_hex +#endif +#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) +#define Perl_grok_hex DPPP_(my_grok_hex) + +#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) +UV +DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_16 = UV_MAX / 16; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + const char *xdigit; + + if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { + /* strip off leading x or 0x. + for compatibility silently suffer "x" and "0x" as valid hex numbers. + */ + if (len >= 1) { + if (s[0] == 'x') { + s++; + len--; + } + else if (len >= 2 && s[0] == '0' && s[1] == 'x') { + s+=2; + len-=2; + } + } + } + + for (; len-- && *s; s++) { + xdigit = strchr((char *) PL_hexdigit, *s); + if (xdigit) { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + With gcc seems to be much straighter code than old scan_hex. */ + redo: + if (!overflowed) { + if (value <= max_div_16) { + value = (value << 4) | ((xdigit - PL_hexdigit) & 15); + continue; + } + warn("Integer overflow in hexadecimal number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 16.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount of 16-tuples. */ + value_nv += (NV)((xdigit - PL_hexdigit) & 15); + continue; + } + if (*s == '_' && len && allow_underscores && s[1] + && (xdigit = strchr((char *) PL_hexdigit, s[1]))) + { + --len; + ++s; + goto redo; + } + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal hexadecimal digit '%c' ignored", *s); + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Hexadecimal number > 0xffffffff non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#ifndef grok_oct +#if defined(NEED_grok_oct) +static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +static +#else +extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); +#endif + +#ifdef grok_oct +# undef grok_oct +#endif +#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) +#define Perl_grok_oct DPPP_(my_grok_oct) + +#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) +UV +DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) +{ + const char *s = start; + STRLEN len = *len_p; + UV value = 0; + NV value_nv = 0; + + const UV max_div_8 = UV_MAX / 8; + bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; + bool overflowed = FALSE; + + for (; len-- && *s; s++) { + /* gcc 2.95 optimiser not smart enough to figure that this subtraction + out front allows slicker code. */ + int digit = *s - '0'; + if (digit >= 0 && digit <= 7) { + /* Write it in this wonky order with a goto to attempt to get the + compiler to make the common case integer-only loop pretty tight. + */ + redo: + if (!overflowed) { + if (value <= max_div_8) { + value = (value << 3) | digit; + continue; + } + /* Bah. We're just overflowed. */ + warn("Integer overflow in octal number"); + overflowed = TRUE; + value_nv = (NV) value; + } + value_nv *= 8.0; + /* If an NV has not enough bits in its mantissa to + * represent a UV this summing of small low-order numbers + * is a waste of time (because the NV cannot preserve + * the low-order bits anyway): we could just remember when + * did we overflow and in the end just multiply value_nv by the + * right amount of 8-tuples. */ + value_nv += (NV)digit; + continue; + } + if (digit == ('_' - '0') && len && allow_underscores + && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) + { + --len; + ++s; + goto redo; + } + /* Allow \octal to work the DWIM way (that is, stop scanning + * as soon as non-octal characters are seen, complain only iff + * someone seems to want to use the digits eight and nine). */ + if (digit == 8 || digit == 9) { + if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) + warn("Illegal octal digit '%c' ignored", *s); + } + break; + } + + if ( ( overflowed && value_nv > 4294967295.0) +#if UVSIZE > 4 + || (!overflowed && value > 0xffffffff ) +#endif + ) { + warn("Octal number > 037777777777 non-portable"); + } + *len_p = s - start; + if (!overflowed) { + *flags = 0; + return value; + } + *flags = PERL_SCAN_GREATER_THAN_UV_MAX; + if (result) + *result = value_nv; + return UV_MAX; +} +#endif +#endif + +#if !defined(my_snprintf) +#if defined(NEED_my_snprintf) +static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +static +#else +extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); +#endif + +#define my_snprintf DPPP_(my_my_snprintf) +#define Perl_my_snprintf DPPP_(my_my_snprintf) + +#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) + +int +DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) +{ + dTHX; + int retval; + va_list ap; + va_start(ap, format); +#ifdef HAS_VSNPRINTF + retval = vsnprintf(buffer, len, format, ap); +#else + retval = vsprintf(buffer, format, ap); +#endif + va_end(ap); + if (retval < 0 || (len > 0 && (Size_t)retval >= len)) + Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); + return retval; +} + +#endif +#endif + +#if !defined(my_sprintf) +#if defined(NEED_my_sprintf) +static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); +static +#else +extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); +#endif + +#define my_sprintf DPPP_(my_my_sprintf) +#define Perl_my_sprintf DPPP_(my_my_sprintf) + +#if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) + +int +DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) +{ + va_list args; + va_start(args, pat); + vsprintf(buffer, pat, args); + va_end(args); + return strlen(buffer); +} + +#endif +#endif + +#ifdef NO_XSLOCKS +# ifdef dJMPENV +# define dXCPT dJMPENV; int rEtV = 0 +# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) +# define XCPT_TRY_END JMPENV_POP; +# define XCPT_CATCH if (rEtV != 0) +# define XCPT_RETHROW JMPENV_JUMP(rEtV) +# else +# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 +# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) +# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); +# define XCPT_CATCH if (rEtV != 0) +# define XCPT_RETHROW Siglongjmp(top_env, rEtV) +# endif +#endif + +#if !defined(my_strlcat) +#if defined(NEED_my_strlcat) +static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); +static +#else +extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); +#endif + +#define my_strlcat DPPP_(my_my_strlcat) +#define Perl_my_strlcat DPPP_(my_my_strlcat) + +#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) + +Size_t +DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) +{ + Size_t used, length, copy; + + used = strlen(dst); + length = strlen(src); + if (size > 0 && used < size - 1) { + copy = (length >= size - used) ? size - used - 1 : length; + memcpy(dst + used, src, copy); + dst[used + copy] = '\0'; + } + return used + length; +} +#endif +#endif + +#if !defined(my_strlcpy) +#if defined(NEED_my_strlcpy) +static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); +static +#else +extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); +#endif + +#define my_strlcpy DPPP_(my_my_strlcpy) +#define Perl_my_strlcpy DPPP_(my_my_strlcpy) + +#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) + +Size_t +DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) +{ + Size_t length, copy; + + length = strlen(src); + if (size > 0) { + copy = (length >= size) ? size - 1 : length; + memcpy(dst, src, copy); + dst[copy] = '\0'; + } + return length; +} + +#endif +#endif +#ifndef PERL_PV_ESCAPE_QUOTE +# define PERL_PV_ESCAPE_QUOTE 0x0001 +#endif + +#ifndef PERL_PV_PRETTY_QUOTE +# define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE +#endif + +#ifndef PERL_PV_PRETTY_ELLIPSES +# define PERL_PV_PRETTY_ELLIPSES 0x0002 +#endif + +#ifndef PERL_PV_PRETTY_LTGT +# define PERL_PV_PRETTY_LTGT 0x0004 +#endif + +#ifndef PERL_PV_ESCAPE_FIRSTCHAR +# define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 +#endif + +#ifndef PERL_PV_ESCAPE_UNI +# define PERL_PV_ESCAPE_UNI 0x0100 +#endif + +#ifndef PERL_PV_ESCAPE_UNI_DETECT +# define PERL_PV_ESCAPE_UNI_DETECT 0x0200 +#endif + +#ifndef PERL_PV_ESCAPE_ALL +# define PERL_PV_ESCAPE_ALL 0x1000 +#endif + +#ifndef PERL_PV_ESCAPE_NOBACKSLASH +# define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 +#endif + +#ifndef PERL_PV_ESCAPE_NOCLEAR +# define PERL_PV_ESCAPE_NOCLEAR 0x4000 +#endif + +#ifndef PERL_PV_ESCAPE_RE +# define PERL_PV_ESCAPE_RE 0x8000 +#endif + +#ifndef PERL_PV_PRETTY_NOCLEAR +# define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR +#endif +#ifndef PERL_PV_PRETTY_DUMP +# define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE +#endif + +#ifndef PERL_PV_PRETTY_REGPROP +# define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE +#endif + +/* Hint: pv_escape + * Note that unicode functionality is only backported to + * those perl versions that support it. For older perl + * versions, the implementation will fall back to bytes. + */ + +#ifndef pv_escape +#if defined(NEED_pv_escape) +static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); +static +#else +extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); +#endif + +#ifdef pv_escape +# undef pv_escape +#endif +#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) +#define Perl_pv_escape DPPP_(my_pv_escape) + +#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) + +char * +DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, + const STRLEN count, const STRLEN max, + STRLEN * const escaped, const U32 flags) +{ + const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; + const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; + char octbuf[32] = "%123456789ABCDF"; + STRLEN wrote = 0; + STRLEN chsize = 0; + STRLEN readsize = 1; +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; +#endif + const char *pv = str; + const char * const end = pv + count; + octbuf[0] = esc; + + if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) + sv_setpvs(dsv, ""); + +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) + isuni = 1; +#endif + + for (; pv < end && (!max || wrote < max) ; pv += readsize) { + const UV u = +#if defined(is_utf8_string) && defined(utf8_to_uvchr) + isuni ? utf8_to_uvchr((U8*)pv, &readsize) : +#endif + (U8)*pv; + const U8 c = (U8)u & 0xFF; + + if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { + if (flags & PERL_PV_ESCAPE_FIRSTCHAR) + chsize = my_snprintf(octbuf, sizeof octbuf, + "%"UVxf, u); + else + chsize = my_snprintf(octbuf, sizeof octbuf, + "%cx{%"UVxf"}", esc, u); + } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { + chsize = 1; + } else { + if (c == dq || c == esc || !isPRINT(c)) { + chsize = 2; + switch (c) { + case '\\' : /* fallthrough */ + case '%' : if (c == esc) + octbuf[1] = esc; + else + chsize = 1; + break; + case '\v' : octbuf[1] = 'v'; break; + case '\t' : octbuf[1] = 't'; break; + case '\r' : octbuf[1] = 'r'; break; + case '\n' : octbuf[1] = 'n'; break; + case '\f' : octbuf[1] = 'f'; break; + case '"' : if (dq == '"') + octbuf[1] = '"'; + else + chsize = 1; + break; + default: chsize = my_snprintf(octbuf, sizeof octbuf, + pv < end && isDIGIT((U8)*(pv+readsize)) + ? "%c%03o" : "%c%o", esc, c); + } + } else { + chsize = 1; + } + } + if (max && wrote + chsize > max) { + break; + } else if (chsize > 1) { + sv_catpvn(dsv, octbuf, chsize); + wrote += chsize; + } else { + char tmp[2]; + my_snprintf(tmp, sizeof tmp, "%c", c); + sv_catpvn(dsv, tmp, 1); + wrote++; + } + if (flags & PERL_PV_ESCAPE_FIRSTCHAR) + break; + } + if (escaped != NULL) + *escaped= pv - str; + return SvPVX(dsv); +} + +#endif +#endif + +#ifndef pv_pretty +#if defined(NEED_pv_pretty) +static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); +static +#else +extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); +#endif + +#ifdef pv_pretty +# undef pv_pretty +#endif +#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) +#define Perl_pv_pretty DPPP_(my_pv_pretty) + +#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) + +char * +DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, + const STRLEN max, char const * const start_color, char const * const end_color, + const U32 flags) +{ + const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; + STRLEN escaped; + + if (!(flags & PERL_PV_PRETTY_NOCLEAR)) + sv_setpvs(dsv, ""); + + if (dq == '"') + sv_catpvs(dsv, "\""); + else if (flags & PERL_PV_PRETTY_LTGT) + sv_catpvs(dsv, "<"); + + if (start_color != NULL) + sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); + + pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); + + if (end_color != NULL) + sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); + + if (dq == '"') + sv_catpvs(dsv, "\""); + else if (flags & PERL_PV_PRETTY_LTGT) + sv_catpvs(dsv, ">"); + + if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) + sv_catpvs(dsv, "..."); + + return SvPVX(dsv); +} + +#endif +#endif + +#ifndef pv_display +#if defined(NEED_pv_display) +static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); +static +#else +extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); +#endif + +#ifdef pv_display +# undef pv_display +#endif +#define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) +#define Perl_pv_display DPPP_(my_pv_display) + +#if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) + +char * +DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) +{ + pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); + if (len > cur && pv[cur] == '\0') + sv_catpvs(dsv, "\\0"); + return SvPVX(dsv); +} + +#endif +#endif + +#ifndef croak_sv +# define croak_sv(sv) \ + STMT_START { \ + sv_setsv(ERRSV, sv); \ + Perl_croak(aTHX_ Nullch); \ + } STMT_END +#endif + +#endif /* _P_P_PORTABILITY_H_ */ + +/* End of File ppport.h */ diff --git a/t/01-repo.t b/t/01-repo.t new file mode 100644 index 00000000..493174ff --- /dev/null +++ b/t/01-repo.t @@ -0,0 +1,284 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Spec; +use File::Slurp; +use File::Path qw(make_path); +use Cwd qw(abs_path); + +my $path = abs_path('t').'/test_repo'; +my $repo = Git::Raw::Repository -> init($path, 0); + +mkdir "$path/subdir" or die "Can't create subdir: $!"; +my $disc = Git::Raw::Repository -> discover("$path/subdir"); + +is $repo -> path, "$path/.git/"; +is $disc -> path, "$path/.git/"; + +is $repo -> workdir, "$path/"; +is $disc -> workdir, "$path/"; + +is $repo -> is_empty, 1; +is $disc -> is_empty, 1; + +my $head = eval { $repo -> head }; +is $head, undef; + +my $file = $repo -> workdir . 'ignore'; +write_file($file, 'this file should be ignored'); + +$file = $repo -> workdir . 'untracked'; +write_file($file, 'this file should be untracked'); + +$repo -> ignore("ignore\n"); + +is_deeply $repo -> status('ignore') -> {'ignore'}, {'flags' => ['ignored']}; +is_deeply $repo -> status('untracked') -> {'untracked'}, {'flags' => ['worktree_new']}; +is_deeply $repo -> status, { + 'ignore' => {'flags' => ['ignored']}, + 'untracked' => {'flags' => ['worktree_new']}, + 'subdir/' => {'flags' => ['ignored']}}; + +my $index = $repo -> index; + +ok (eval { $index -> capabilities }); + +my $caps_count = $index -> capabilities; +is $caps_count, 3; + +my %caps = $index -> capabilities; +is scalar (keys %caps), 3; + +ok exists $caps{'ignore_case'}; +ok exists $caps{'no_filemode'}; +ok exists $caps{'no_symlinks'}; + +is $caps{ignore_case}, 1 if ($^O eq 'darwin' || $^O eq 'MSWin32' || $^O eq 'cygwin'); + +my $triggered_add = 0; +$index -> add_all({ + 'paths' => [ 'ign*' ], + 'flags' => { + 'force' => 1, + 'disable_pathspec_match' => 1 + }, + 'notification' => sub { + $triggered_add = 1; + 0; + } +}); +is $triggered_add, 0; + +$index -> add_all({ + 'paths' => [ 'ign*' ], + 'flags' => { + 'force' => 1, + 'disable_pathspec_match' => 1 + }, + 'notification' => sub { + $triggered_add = 1; + 0; + } +}); +is $triggered_add, 0; + +$index -> add_all({ + 'paths' => [ 'ign*' ], + 'flags' => { + 'force' => 1 + }, + 'notification' => sub { + my ($path, $spec) = @_; + + is $path, 'ignore'; + is $spec, 'ign*'; + + $triggered_add = 1; + 0; + } +}); +is $triggered_add, 1; + +is_deeply $repo -> status -> {'ignore'}, {'flags' => ['index_new']}; + +my $triggered_removed = 0; +$index -> remove_all({ + 'paths' => [ 'ignore' ], + 'notification' => sub { + $triggered_removed = 1; + 0; + } +}); + +is $triggered_removed, 1; +is_deeply $repo -> status -> {'ignore'}, {'flags' => ['ignored']}; + +$file = $repo -> workdir . 'subdir/' .'untracked'; +write_file($file, 'this file should be untracked'); +is_deeply $repo -> status('subdir/') -> {'subdir/'}, {'flags' => ['worktree_new']}; + +is $repo -> path_is_ignored('ignore'), 1; +is $repo -> path_is_ignored('test'), 0; +is $repo -> path_is_ignored('untracked'), 0; + +my $config = $repo -> config; + +my $name = 'Git::Raw author'; +my $email = 'git-xs@example.com'; + +is undef, $config -> bool('some.bool'); +ok (!eval { $config -> bool('some.bool', 1, 1) }); +ok (!eval { $config -> bool('some.bool', 'zzzz') }); + +my $error = $@; +ok ($error); +isa_ok($error, 'Git::Raw::Error'); +is $error -> code, Git::Raw::Error -> USAGE; +like $error, qr/Invalid type/; +is $error -> category, Git::Raw::Error::Category -> INTERNAL; + +ok $config -> bool('some.bool', 1); +ok $config -> bool('some.bool'); + +is undef, $config -> int('some.int'); +is $config -> int('some.int', 42), 42; +is $config -> int('some.int'), 42; + +is undef, $config -> str('some.str'); +is $config -> str('some.str', 'hello'), 'hello'; +is $config -> str('some.str'), 'hello'; + +is $config -> str('user.name', $name), $name; +is $config -> str('user.email', $email), $email; + +is $config -> str('user.name'), $name; +is $config -> str('user.email'), $email; + +$config -> foreach(sub { + my ($entry_name, $entry_value, $entry_level) = @_; + + ok $entry_value if $entry_name eq 'some.bool'; + is $entry_value, 42 if $entry_name eq 'some.int'; + is $entry_value, 'hello' if $entry_name eq 'some.str'; + + 0 +}); + +$config -> delete('some.bool'); +is undef, $config -> bool('some.bool'); +ok $config -> bool('some.bool', 1); +ok $config -> bool('some.bool'); + +my $detached_config1 = Git::Raw::Config -> new; +isa_ok $detached_config1, 'Git::Raw::Config'; +$detached_config1 -> add_file('.testconfig', 5); + +my $detached_config2 = Git::Raw::Config -> new; +isa_ok $detached_config2, 'Git::Raw::Config'; +$detached_config2 -> add_file('.testconfig', 5); + +$detached_config1 -> str('some.str', 'hello'); +is 'hello', $detached_config1 -> str('some.str'); +$detached_config2 -> refresh; +is 'hello', $detached_config2 -> str('some.str'); + +$detached_config1 = undef; +$detached_config2 = undef; +unlink '.testconfig'; +isnt -f '.testconfig', 1; + +is $repo -> state, "none"; +is $repo -> is_head_detached, 0; + +my $commit_msg_file = File::Spec->catfile($repo -> path, 'MERGE_MSG'); +ok (open HANDLE, ">$commit_msg_file"); +ok (close HANDLE); + +$repo -> state_cleanup; +isnt -f $commit_msg_file, 1; +is $repo -> state, "none"; + +my $revert_head_file = File::Spec->catfile($repo -> path, 'REVERT_HEAD'); +ok (open HANDLE, ">$revert_head_file"); +ok (close HANDLE); + +is $repo -> state, "revert"; +$repo -> state_cleanup; +isnt -f $revert_head_file, 1; +is $repo -> state, "none"; + +my $merge_head_file = File::Spec->catfile($repo -> path, 'MERGE_HEAD'); +ok (open HANDLE, ">$merge_head_file"); +ok (close HANDLE); + +is $repo -> state, "merge"; +$repo -> state_cleanup; +isnt -f $merge_head_file, 1; +is $repo -> state, "none"; + +my $cherry_pick_head_file = File::Spec->catfile($repo -> path, 'CHERRY_PICK_HEAD'); +ok (open HANDLE, ">$cherry_pick_head_file"); +ok (close HANDLE); + +is $repo -> state, "cherry_pick"; +$repo -> state_cleanup; +isnt -f $cherry_pick_head_file, 1; +is $repo -> state, "none"; + +my $bisect_log_file = File::Spec->catfile($repo -> path, 'BISECT_LOG'); +ok (open HANDLE, ">$bisect_log_file"); +ok (close HANDLE); + +is $repo -> state, "bisect"; +$repo -> state_cleanup; +isnt -f $bisect_log_file, 1; +is $repo -> state, "none"; + +my $rebase_merge_dir = File::Spec->catfile($repo -> path, 'rebase-merge'); +my $rebase_apply_dir = File::Spec->catfile($repo -> path, 'rebase-apply'); + +make_path($rebase_merge_dir); +is $repo -> state, "rebase_merge"; +$repo -> state_cleanup; +isnt -e $rebase_merge_dir, 1; +is $repo -> state, "none"; + +make_path($rebase_apply_dir); +is $repo -> state, "mailbox_or_rebase"; +$repo -> state_cleanup; +isnt -e $rebase_apply_dir, 1; +is $repo -> state, "none"; + +my $rebase_rebasing_file = File::Spec->catfile($rebase_apply_dir, 'rebasing'); +make_path($rebase_apply_dir); +ok (open HANDLE, ">$rebase_rebasing_file"); +ok (close HANDLE); + +is $repo -> state, "rebase"; +$repo -> state_cleanup; +isnt -f $rebase_rebasing_file, 1; +is $repo -> state, "none"; + +my $rebase_applying_file = File::Spec->catfile($rebase_apply_dir, 'applying'); +make_path($rebase_apply_dir); +ok (open HANDLE, ">$rebase_applying_file"); +ok (close HANDLE); + +is $repo -> state, "apply_mailbox"; +$repo -> state_cleanup; +isnt -f $rebase_applying_file, 1; +is $repo -> state, "none"; + +my $rebase_interactive_file = File::Spec->catfile($rebase_merge_dir, 'interactive'); +make_path($rebase_merge_dir); +ok (open HANDLE, ">$rebase_interactive_file"); +ok (close HANDLE); + +is $repo -> state, "rebase_interactive"; +$repo -> state_cleanup; +isnt -f $rebase_interactive_file, 1; +is $repo -> state, "none"; + +done_testing; diff --git a/t/02-commit.t b/t/02-commit.t new file mode 100644 index 00000000..bc7efdd4 --- /dev/null +++ b/t/02-commit.t @@ -0,0 +1,309 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Copy; +use File::Slurp; +use File::Spec::Functions qw(catfile canonpath); +use Cwd qw(abs_path); +use File::Path 2.07 qw(make_path remove_tree); +use Time::Local; + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $file = $repo -> workdir . 'test'; +my $untracked_file = $repo -> workdir . 'untracked_file'; +write_file($file, 'this is a test'); + +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_new']}; + +my $index = $repo -> index; +is canonpath($index -> path), canonpath(catfile($path, '.git/index')); + +ok (!eval { $index -> add($index) }); +$index -> add_all({ + 'paths' => [ + 'test' + ] +}); +$index -> write; + +my $tree_id = $index -> write_tree; +my $tree = $repo -> lookup($tree_id); + +is_deeply $repo -> status -> {'test'}, {'flags' => ['index_new']}; + +write_file($file, 'this is a test with more content'); +is_deeply $repo -> status -> {'test'}, {'flags' => ['index_new', 'worktree_modified']}; + +$index -> update_all({ + 'paths' => [ + 'test' + ] +}); +$index -> write; + +is_deeply $repo -> status -> {'test'}, {'flags' => ['index_new']}; + +write_file($file, 'this is a test'); +$index -> add('test'); +$index -> write; + +write_file($untracked_file, 'this is an untracked file'); +is_deeply $repo -> status -> {'untracked_file'}, {'flags' => ['worktree_new']}; + +remove_tree($untracked_file); +is_deeply $repo -> status -> {'untracked_file'}, undef; + +isa_ok $tree, 'Git::Raw::Tree'; + +my $config = $repo -> config; +my $name = $config -> str('user.name'); +my $email = $config -> str('user.email'); + +my $time = time(); +my $off = 120; +my $me = Git::Raw::Signature -> new($name, $email, $time, $off); + +my $commit = $repo -> commit("initial commit\n", $me, $me, [], $tree); + +is_deeply $repo -> status -> {'test'}, undef; + +my $author = $commit -> author; + +is $commit -> message, "initial commit\n"; +is $commit -> summary, "initial commit"; + +is $commit -> author -> name, $name; +is $commit -> author -> email, $email; +is $commit -> author -> time, $time; +is $commit -> author -> offset, $off; + +is $commit -> committer -> name, $name; +is $commit -> committer -> email, $email; +is $commit -> committer -> time, $time; +is $commit -> committer -> offset, $off; + +is $commit -> time, $time; +is $commit -> offset, $off; + +write_file($file, 'this is a test....'); +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_modified'] }; +ok (!eval { $repo -> reset($commit, {'type' => 'invalid_type'}) }); +$repo -> reset($commit, {'type' => 'hard'}); +is $repo -> status -> {'test'}, undef; + +move($file, $file.'.moved'); +$index -> remove('test'); +$index -> add('test.moved'); +$index -> write; +is_deeply $repo -> status -> {'test.moved'}, {'flags' => ['index_renamed'], + 'index' => {'old_file' => 'test'}}; + +write_file($file.'.moved', 'this is a test with more content'); +is_deeply $repo -> status -> {'test.moved'}, {'flags' => ['index_renamed', 'worktree_modified'], + 'index' => {'old_file' => 'test'}}; + +move($file.'.moved', $file); +$index -> remove('test.moved'); +$index -> add('test'); +$index -> write; +is_deeply $repo -> status -> {'test'}, {'flags' => ['index_modified']}; + +$repo -> reset($commit, {'paths' => [undef, 'test']}); +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_modified']}; + +ok (!eval { $index -> update_all({ + 'paths' => [ 'test' ], + 'notification' => sub { die "Bad!"; } +})}); + +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_modified']}; + +$index -> update_all({ + 'paths' => [ 'test' ], + 'notification' => sub { return 1; } +}); + +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_modified']}; + +$index -> update_all({ + 'paths' => [ + undef, + 'test' + ], + 'notification' => sub { + my ($path, $pathspec) = @_; + + is $path, 'test'; + is $path, $pathspec; + + return 0; + } +}); + +$index -> write; +is_deeply $repo -> status -> {'test'}, {'flags' => ['index_modified']}; + +write_file($file, 'this is a test'); +$index -> add('test'); +$index -> write; +is_deeply $repo -> status -> {'test'}, undef; + +$file = $repo -> workdir . 'test2'; +write_file($file, 'this is a second test'); + +$index -> add('test2'); +$index -> write; + +$tree_id = $index -> write_tree; +$tree = $repo -> lookup($tree_id); + +$time = time(); +$me = Git::Raw::Signature -> default($repo); + +my @current_time = localtime($time); +$off = (timegm(@current_time) - timelocal(@current_time))/60; + +my $commit2 = $repo -> commit( + "second commit\n", $me, $me, [$repo -> head -> target], $tree +); + +is $commit2 -> ancestor(0) -> id, $commit2 -> id; +is $commit2 -> ancestor(1) -> id, $commit -> id; + +my $head = $repo -> head -> target; + +isa_ok $head, 'Git::Raw::Commit'; + +is (Git::Raw::Graph -> is_descendant_of($repo, $commit2, $commit), 1); +is (Git::Raw::Graph -> is_descendant_of($repo, $commit2 -> id, $commit -> id), 1); + +is (Git::Raw::Graph -> is_descendant_of($repo, $commit, $commit2), 0); +is (Git::Raw::Graph -> is_descendant_of($repo, $commit -> id, $commit2 -> id), 0); + +ok (!eval { Git::Raw::Graph -> is_descendant_of($repo, $commit, '12341234') }); +ok (!eval { Git::Raw::Graph -> is_descendant_of($repo, '12341234', $commit) }); + +is $head -> message, "second commit\n"; +is $head -> summary, "second commit"; + +is $head -> author -> name, $name; +is $head -> author -> email, $email; +is $head -> author -> time, $time; +is $head -> author -> offset, $off; + +is $head -> committer -> name, $name; +is $head -> committer -> email, $email; +is $head -> committer -> time, $time; +is $head -> committer -> offset, $off; + +is $head -> time, $time; +is $head -> offset, $off; + +my $parents = $head -> parents; + +is $parents -> [0] -> message, "initial commit\n"; + +make_path($repo -> workdir . 'test3/under/the/tree'); +$file = $repo -> workdir . 'test3/under/the/tree/test3'; +write_file($file, 'this is a third test'); + +$index -> add('test3/under/the/tree/test3'); +$index -> write; + +$tree_id = $index -> write_tree; +$tree = $repo -> lookup($tree_id); + +$index -> read_tree($tree); +my @entries = $index -> entries(); +is scalar(@entries), 3; + +my $commit3 = $repo -> commit( + "third commit\n", $me, $me, [$repo -> head -> target], $tree +); + +is $commit3 -> ancestor(0) -> id, $commit3 -> id; +is $commit3 -> ancestor(1) -> id, $commit2 -> id; +is $commit3 -> ancestor(2) -> id, $commit -> id; +ok (!eval { $commit3 -> ancestor(3) }); + +is (Git::Raw::Graph -> is_descendant_of($repo, $commit3, $commit), 1); +is (Git::Raw::Graph -> is_descendant_of($repo, $commit3 -> id, $commit -> id), 1); +is (Git::Raw::Graph -> is_descendant_of($repo, substr($commit3 -> id, 0, 7), $commit -> id), 1); + +is (Git::Raw::Graph -> is_descendant_of($repo, $commit, $commit3), 0); +is (Git::Raw::Graph -> is_descendant_of($repo, $commit -> id, $commit3 -> id), 0); +is (Git::Raw::Graph -> is_descendant_of($repo, substr($commit -> id, 0, 7), $commit3 -> id), 0); + +$head = $repo -> head -> target; + +isa_ok $head, 'Git::Raw::Commit'; + +is $head -> message, "third commit\n"; +is $head -> summary, "third commit"; + +is $head -> author -> name, $name; +is $head -> author -> email, $email; +is $head -> author -> time, $time; +is $head -> author -> offset, $off; + +is $head -> committer -> name, $name; +is $head -> committer -> email, $email; +is $head -> committer -> time, $time; +is $head -> committer -> offset, $off; + +is $head -> time, $time; +is $head -> offset, $off; + +my @before_refs = sort map { $_ -> name() } $repo -> refs(); + +my $commit4 = $repo -> commit( + "fourth commit\n", $me, $me, [], $tree, undef +); + +is $repo -> head -> target -> id, $commit3 -> id, q{Make sure that undef reference doesn't update HEAD}; + +$commit4 = Git::Raw::Commit -> lookup($repo, $commit4 -> id); + +is $commit4 -> message, "fourth commit\n"; +is $commit4 -> summary, "fourth commit"; + +is $commit4 -> author -> name, $name; +is $commit4 -> author -> email, $email; +is $commit4 -> author -> time, $time; +is $commit4 -> author -> offset, $off; + +is $commit4 -> committer -> name, $name; +is $commit4 -> committer -> email, $email; +is $commit4 -> committer -> time, $time; +is $commit4 -> committer -> offset, $off; + +my @after_refs = sort map { $_ -> name() } $repo -> refs(); + +is_deeply \@after_refs, \@before_refs, 'No new references should be created when specifying undef as the update ref argument'; + +my $commit5 = $repo -> commit( + "fifth commit\n", $me, $me, [], $tree, 'refs/commit-test-ref', +); + +is $repo -> head -> target -> id, $commit3 -> id, q{Make sure that stringy reference doesn't update HEAD}; + +$commit5 = Git::Raw::Reference -> lookup('refs/commit-test-ref', $repo) -> target; + +is $commit5 -> message, "fifth commit\n"; +is $commit5 -> summary, "fifth commit"; + +is $commit5 -> author -> name, $name; +is $commit5 -> author -> email, $email; +is $commit5 -> author -> time, $time; +is $commit5 -> author -> offset, $off; + +is $commit5 -> committer -> name, $name; +is $commit5 -> committer -> email, $email; +is $commit5 -> committer -> time, $time; +is $commit5 -> committer -> offset, $off; + +done_testing; diff --git a/t/03-tag.t b/t/03-tag.t new file mode 100644 index 00000000..7e4e5e48 --- /dev/null +++ b/t/03-tag.t @@ -0,0 +1,68 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $config = $repo -> config; +my $name = $config -> str('user.name'); +my $email = $config -> str('user.email'); + +my $time = time(); +my $off = 120; +my $me = Git::Raw::Signature -> new($name, $email, $time, $off); + +my $commit = $repo -> head -> target; + +isa_ok $commit, 'Git::Raw::Commit'; + +my $tag_name = 'v0.1'; +my $tag_msg = 'Initial version'; + +my $tag = $repo -> tag($tag_name, $tag_msg, $me, $commit); + +is $tag -> name, $tag_name; +is $tag -> message, $tag_msg; + +is length ($tag -> id), 40; +my $lookup_tag = Git::Raw::Tag -> lookup($repo, $tag -> id); +isa_ok $lookup_tag, 'Git::Raw::Tag'; +is $lookup_tag -> id, $tag -> id; + +is $tag -> tagger -> name, $name; +is $tag -> tagger -> email, $email; +is $tag -> tagger -> time, $time; +is $tag -> tagger -> offset, $off; + +my $target = $tag -> target; + +is $target -> message, "third commit\n"; + +is $target -> author -> name, $name; +is $target -> author -> email, $email; + +my @tags = $repo -> tags; + +isa_ok $tags[0], 'Git::Raw::Tag'; + +is $tags[0] -> name, $tag_name; +is $tags[0] -> message, $tag_msg; +is $tags[1], undef; + +$tags[0] -> delete; + +Git::Raw::Reference -> create("refs/tags/lightweight-tag", $repo, $commit); + +@tags = $repo -> tags; + +is $tags[0], undef; + +Git::Raw::Reference -> lookup("refs/tags/lightweight-tag", $repo) -> delete(); + +is $repo -> tags, 0; + +done_testing; diff --git a/t/04-walker.t b/t/04-walker.t new file mode 100644 index 00000000..ef927f75 --- /dev/null +++ b/t/04-walker.t @@ -0,0 +1,103 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $walk = $repo -> walker; +$walk -> push($repo -> head -> target); + +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next -> message, "initial commit\n"; + +is $walk -> next, undef; + +# next after reset returns undef +is $walk -> next, undef; + +$walk -> push($repo -> head -> target); +$walk -> hide($repo -> head -> target -> parents -> [0]); +is $walk -> next -> message, "third commit\n"; +is $walk -> next, undef; + +$walk -> push_glob('heads/*'); +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next -> message, "initial commit\n"; +is $walk -> next, undef; + +$walk -> push_head; +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next -> message, "initial commit\n"; +is $walk -> next, undef; + +$walk -> push_ref('refs/heads/master'); +my $end = $walk -> next; +is $end -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; + +my $start = $walk -> next; +is $start -> message, "initial commit\n"; +is $walk -> next, undef; + +$walk -> push_head; + +my $commit = $walk -> next; +isnt $commit, undef; +is $commit -> message, "third commit\n"; +isnt $commit -> tree, undef; +isnt $commit -> parents, undef; + +$walk -> reset; +$walk -> push_head; +$walk -> hide_head; +is $walk -> next, undef; + +$walk -> reset; +$walk -> push_head; +$walk -> hide_ref('refs/heads/master'); +is $walk -> next, undef; + +$walk -> reset; +$walk -> push_head; +$walk -> hide_ref('refs/heads/master'); +is $walk -> next, undef; + +$walk -> reset; +$walk -> push_head; +$walk -> hide_glob('refs/heads/notmaster'); +isnt $walk -> next, undef; + +$walk -> reset; +ok (!eval { $walk -> push_range('zzz', $end) }); +ok (!eval { $walk -> push_range($start, 'zzz') }); + +$walk -> reset; +$walk -> push_range($start, $end); +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next, undef; + +$walk -> reset; +$walk -> push_range($start -> id . ".." . $end -> id); +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next, undef; + +$walk -> reset; +$walk -> push_range(substr($start -> id, 0, 8), substr($end -> id, 0, 8)); +is $walk -> next -> message, "third commit\n"; +is $walk -> next -> message, "second commit\n"; +is $walk -> next, undef; + +ok (!eval { $walk -> push_range(); }); +ok (!eval { $walk -> push_range($start -> id . "." . $end -> id) }); +ok (!eval { $walk -> push_range($start -> id . "..." . $end -> id) }); + +done_testing; diff --git a/t/05-tree.t b/t/05-tree.t new file mode 100644 index 00000000..c81998ec --- /dev/null +++ b/t/05-tree.t @@ -0,0 +1,84 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $head_id = $repo -> head -> target -> id; + +my $head = $repo -> lookup($head_id); +ok $head -> tree -> entries -> [0] -> object; +$head = $repo -> lookup(substr($head_id, 0, 7)); +ok $head -> tree -> entries -> [0] -> object; + +$head = $repo -> head -> target; + +$tree = $head -> tree; + +ok $tree -> is_tree; +ok !$tree -> is_blob; + +my $lookup_tree = Git::Raw::Tree -> lookup($repo, $tree -> id); +isa_ok $lookup_tree, 'Git::Raw::Tree'; +$lookup_tree = Git::Raw::Tree -> lookup($repo, substr($tree -> id, 0, 7)); +isa_ok $lookup_tree, 'Git::Raw::Tree'; + +my $entries = $tree -> entries; + +is $entries -> [0] -> name, 'test'; +is $entries -> [1] -> name, 'test2'; +is $entries -> [2] -> name, 'test3'; + +is length($entries -> [0] -> id), 40; +is length($entries -> [1] -> id), 40; +is length($entries -> [2] -> id), 40; + +is $entries -> [0] -> file_mode, 0100644; +is $entries -> [2] -> file_mode, 0040000; + +my $obj0 = $entries -> [0] -> object; + +isa_ok $obj0, 'Git::Raw::Blob'; +is $obj0 -> is_blob, 1; +is $obj0 -> content, 'this is a test'; +is $obj0 -> size, '14'; + +my $blob_obj0 = Git::Raw::Blob -> lookup($repo, $obj0 -> id); +isa_ok $blob_obj0, 'Git::Raw::Blob'; +is $blob_obj0 -> is_blob, 1; +is $obj0 -> content, $blob_obj0 -> content; +is $obj0 -> size, $blob_obj0 -> size; + +my $obj1 = $entries -> [1] -> object; + +isa_ok $obj1, 'Git::Raw::Blob'; +is $obj1 -> content, 'this is a second test'; +is $obj1 -> size, '21'; + +my $obj2 = $entries -> [2] -> object; + +isa_ok $obj2, 'Git::Raw::Tree'; + +is $entries -> [3], undef; + +ok (!eval { $tree -> entry_byname('unknownfile') }); +my $entry = $tree -> entry_byname('test3'); + +isa_ok $entry, 'Git::Raw::Tree::Entry'; +isa_ok $entry -> object, 'Git::Raw::Tree'; + +$entry = $tree -> entry_bypath('test3/under/the/tree/test3'); + +isa_ok $entry, 'Git::Raw::Tree::Entry'; + +my $obj4 = $entry -> object; + +isa_ok $obj4, 'Git::Raw::Blob'; +is $obj4 -> content, 'this is a third test'; +is $obj4 -> size, '20'; + +done_testing; diff --git a/t/06-reference.t b/t/06-reference.t new file mode 100644 index 00000000..6dd3ea86 --- /dev/null +++ b/t/06-reference.t @@ -0,0 +1,96 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $head = $repo -> head; +isa_ok $head, 'Git::Raw::Reference'; +is $head -> type, 'direct'; +is $head -> name, 'refs/heads/master'; +ok $head -> is_branch; + +my $ref = Git::Raw::Reference -> lookup('HEAD', $repo); +is $ref -> type, 'symbolic'; +isa_ok $ref -> target, 'Git::Raw::Reference'; + +$ref = Git::Raw::Reference -> lookup('refs/heads/master', $repo); + +is $ref -> type, 'direct'; +is $ref -> name, 'refs/heads/master'; +ok $ref -> is_branch; +ok !$ref -> is_remote; +ok !$ref -> is_note; +ok !$ref -> is_tag; + +$head = $ref -> target; +isa_ok $head, 'Git::Raw::Commit'; +is $head -> message, "third commit\n"; + +$ref = $repo -> branch('foobar06', $head); +$ref -> delete; + +my $repo2 = $ref -> owner; +isa_ok $repo2, 'Git::Raw::Repository'; +is $repo2 -> path, "$path/.git/"; + +$ref = Git::Raw::Reference -> create('refs/test-ref', $repo, $head); + +isa_ok $ref, 'Git::Raw::Reference'; + +is $ref -> type, 'direct'; +is $ref -> target -> id, $head -> id; +is $ref -> name, 'refs/test-ref'; +is $ref -> shorthand, 'test-ref'; +ok !$ref -> is_branch; +ok !$ref -> is_remote; +ok !$ref -> is_note; +ok !$ref -> is_tag; + +eval { + Git::Raw::Reference -> create('refs/test-ref', $repo, $head); + fail q{Should've raised an error!}; +} or do { + like $@, qr/Failed to write reference/; +}; + +# shouldn't die with force argument +Git::Raw::Reference -> create('refs/test-ref', $repo, $head, 1); + +my $empty_blob = $repo -> blob(''); +$ref = Git::Raw::Reference -> create('refs/test-ref', $repo, $empty_blob, 1); + +is $ref -> type, 'direct'; +is $ref -> target -> id, $empty_blob -> id; +is $ref -> name, 'refs/test-ref'; +ok !$ref -> is_branch; +ok !$ref -> is_remote; +ok !$ref -> is_note; +ok !$ref -> is_tag; + +my $tree = $head -> tree(); +$ref = Git::Raw::Reference -> create('refs/test-ref', $repo, $tree, 1); + +is $ref -> type, 'direct'; +is $ref -> target -> id, $tree -> id; +is $ref -> name, 'refs/test-ref'; +ok !$ref -> is_branch; +ok !$ref -> is_remote; +ok !$ref -> is_note; +ok !$ref -> is_tag; + +$ref -> delete; + +my @refs = $repo -> refs(); + +is scalar(grep { !$_ -> isa('Git::Raw::Reference') } @refs), 0, 'Everything returned by $repo->refs() should be a Git::Raw::Reference'; + +my @ref_names = sort map { $_ -> name() } @refs; + +is_deeply \@ref_names, [ 'refs/commit-test-ref', 'refs/heads/master' ]; + +done_testing; diff --git a/t/07-remote.t b/t/07-remote.t new file mode 100644 index 00000000..f7a42ff3 --- /dev/null +++ b/t/07-remote.t @@ -0,0 +1,189 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); +use File::Path qw(make_path rmtree); + +is (Git::Raw::Remote -> is_url_valid('/somewhere/on/filesystem'), 0); +is (Git::Raw::Remote -> is_url_valid('somewhere/on/filesystem'), 0); +is (Git::Raw::Remote -> is_url_valid('file:///somewhere/on/filesystem'), 1); +is (Git::Raw::Remote -> is_url_valid('git://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('https://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('http://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('ssh://me@somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('ssh://me@somewhere.com:/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('ssh://somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('ssh://somewhere.com:/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('me@somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_valid('me@somewhere.com:/somerepo.git'), 1); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +# my $name = 'some_remote'; +my $name = 'github'; +my $url = 'git://github.com/ghedo/a_git_repository.git'; + +my $github = Git::Raw::Remote -> create($repo, $name, $url); + +is $github -> name, $name; +is $github -> url, $url; +is $github -> pushurl, undef; +is $github -> pushurl($url), $url; +is $github -> refspec_count, 1; +my @refspecs = $github -> refspecs; +is scalar(@refspecs), 1; + +my $refspec = shift @refspecs; +is $refspec -> src, "refs/heads/*"; +is $refspec -> dst, "refs/remotes/github/*"; +is $refspec -> direction, "fetch"; +is $refspec -> string, "+refs/heads/*:refs/remotes/github/*"; +is $refspec -> is_force, 1; +is $refspec -> transform ('refs/heads/master'), "refs/remotes/github/master"; +is $refspec -> src_matches('refs/heads/master'), 1; +is $refspec -> rtransform ('refs/remotes/github/master'), "refs/heads/master"; +is $refspec -> dst_matches('refs/remotes/github/master'), 1; +is $refspec -> dst_matches('refs/remotes/blah/master'), 0; + +my $rename = Git::Raw::Remote -> create($repo, 'pre_rename', $url); +is $rename -> name, 'pre_rename'; +my @problems; +is $rename -> name('post_rename', \@problems), 'post_rename'; +is $rename -> name, 'post_rename'; +is scalar(@problems), 0; + +@refspecs = $rename -> refspecs; +is scalar(@refspecs), 1; +$rename -> clear_refspecs; +@refspecs = $rename -> refspecs; +is scalar(@refspecs), 0; + +$rename = undef; + +my @remotes = $repo -> remotes; + +is $remotes[0] -> name, $name; +is $remotes[0] -> url, $url; + +is $remotes[1] -> name, 'post_rename'; +@remotes = (); + +$name = 'github'; +$url = 'git://github.com/libgit2/TestGitRepository.git'; + +# FIXME: remote rename +# is $github -> name($name), $name; +is $github -> url($url), $url; + +unless ($ENV{NETWORK_TESTING} or $ENV{RELEASE_TESTING}) { + diag('remote fetch tests require network'); + done_testing; + exit; +} + +is (Git::Raw::Remote -> is_url_supported('file:///somewhere/on/filesystem'), 1); +is (Git::Raw::Remote -> is_url_supported('git://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('https://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('http://somewhere.com/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('ssh://me@somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('ssh://me@somewhere.com:/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('ssh://somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('ssh://somewhere.com:/somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('me@somewhere.com:somerepo.git'), 1); +is (Git::Raw::Remote -> is_url_supported('me@somewhere.com:/somerepo.git'), 1); + +$github = Git::Raw::Remote -> load($repo, 'github'); + +ok (!eval { $github -> connect('invalid_direction') }); +$github -> connect('fetch'); +is $github -> is_connected, 1; + +$github -> download; +$github -> update_tips; + +$github -> disconnect; +is $github -> is_connected, 0; + +$github -> fetch; +is $github -> is_connected, 0; + +my $ref = Git::Raw::Reference -> lookup('refs/remotes/github/master', $repo); +is $ref -> type, 'direct'; + +my $head = $ref -> target; +isa_ok $head, 'Git::Raw::Commit'; + +is $head -> author -> name, 'A U Thor'; + +my $reflog = $ref -> reflog; +my @entries = $reflog -> entries; +is scalar(@entries), 1; + +ok !defined($entries[0] -> {'message'}); +is $entries[0] -> {'old_id'}, '0000000000000000000000000000000000000000'; +is $entries[0] -> {'new_id'}, $ref -> target -> id; + +$repo = Git::Raw::Repository -> new(); +$github = Git::Raw::Remote -> create_anonymous($repo, $url, undef); +ok (!eval { $github -> save }, "can't save an anonymous remote"); + +ok (!eval { Git::Raw::Remote -> create_anonymous($repo, $url, $ref) }, "fetch should be a 'string'"); + +$github -> connect('fetch'); +is $github -> is_connected, 1; + +my $ls = $github -> ls; + +is_deeply $ls -> {'HEAD'}, $ls -> {'refs/heads/master'}; + +make_path ('t/callbacks_repo'); +$path = abs_path('t/callbacks_repo'); +$repo = Git::Raw::Repository -> init ($path, 0); + +$github = Git::Raw::Remote -> create($repo, $name, $url); + +my ($sideband_progress, $transfer_progress, $update_tips); +$github -> callbacks({ + 'sideband_progress' => sub { + $sideband_progress = 1; + }, + 'transfer_progress' => sub { + $transfer_progress = 1; + }, + 'update_tips' => sub { + my ($ref, $a, $b) = @_; + ok $ref =~ /^refs\//; + ok $a eq '0000000000000000000000000000000000000000'; + ok length($b) == 40; + + $update_tips = 1; + } +}); + +$github -> connect('fetch'); +is $github -> is_connected, 1; + +$github -> download; +ok $sideband_progress; +ok $transfer_progress; + +my $config = $repo -> config; + +$name = 'Git::Raw author'; +$email = 'git-xs@example.com'; + +is $config -> str('user.name', $name), $name; +is $config -> str('user.email', $email), $email; + +$github -> update_tips; +ok $update_tips; + +$repo = undef; +$github = undef; +rmtree $path; +ok ! -e $path; + +done_testing; diff --git a/t/08-branch.t b/t/08-branch.t new file mode 100644 index 00000000..c9b80f70 --- /dev/null +++ b/t/08-branch.t @@ -0,0 +1,99 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $config = $repo -> config; +my $name = $config -> str('user.name'); +my $email = $config -> str('user.email'); + +my $commit = $repo -> head -> target; + +isa_ok $commit, 'Git::Raw::Commit'; + +my $branch_name = 'new_branch'; + +my $branch = $repo -> branch($branch_name, $commit); + +is $branch -> type, 'direct'; +is $branch -> name, "refs/heads/$branch_name"; +is $branch -> shorthand, $branch_name; + +ok !$branch -> is_head; +ok $branch -> is_branch; +ok !$branch -> is_remote; + +$branch_name = 'some_branch'; + +$branch -> move($branch_name, 0); +$branch = Git::Raw::Branch -> lookup($repo, $branch_name, 1); +is $branch -> name, "refs/heads/$branch_name"; + +my $head = $branch -> target; + +isa_ok $head, 'Git::Raw::Commit'; + +is $head -> message, "third commit\n"; + +my $look = Git::Raw::Branch -> lookup($repo, $branch_name, 1); +ok !$look -> upstream; + +is $look -> type, 'direct'; +is $look -> name, 'refs/heads/some_branch'; + +my $reflog = $look -> reflog; +my @entries = $reflog -> entries; +is scalar(@entries), 2; + +# The time of the commit may be off by a second or two, as +# Git::Raw::Signature -> default() uses the current system time, +# and the commits referenced here may have been created +# a second or two ago. +my $signature = Git::Raw::Signature -> default($repo); + +is $entries[0] -> {'committer'} -> name, $signature -> name; +is $entries[0] -> {'committer'} -> email, $signature -> email; +ok $entries[0] -> {'committer'} -> time <= $signature -> time; +ok $entries[0] -> {'committer'} -> time >= $signature -> time - 2; +is $entries[0] -> {'committer'} -> offset, $signature -> offset; +ok $entries[0] -> {'message'} =~ /^Branch: renamed/i; + +is $entries[1] -> {'committer'} -> name, $signature -> name; +is $entries[1] -> {'committer'} -> email, $signature -> email; +ok $entries[1] -> {'committer'} -> time <= $signature -> time; +ok $entries[1] -> {'committer'} -> time >= $signature -> time - 2; +is $entries[1] -> {'committer'} -> offset, $signature -> offset; +ok $entries[1] -> {'message'} =~ /^Branch: created/i; + +my $branches = [ $repo -> branches('local') ]; +is scalar(@$branches), 2; + +ok (!eval { $repo -> branches('invalid_type') }); +$branches = [ sort { $a -> name cmp $b -> name } $repo -> branches ]; + +is $branches -> [0] -> type, 'direct'; +is $branches -> [0] -> name, 'refs/heads/master'; +is $branches -> [0] -> shorthand, 'master'; + +is $branches -> [1] -> type, 'direct'; +is $branches -> [1] -> name, 'refs/heads/some_branch'; +is $branches -> [1] -> shorthand, 'some_branch'; + +if ($ENV{NETWORK_TESTING} or $ENV{RELEASE_TESTING}) { + is scalar(@$branches), 5; + is $branches -> [3] -> type, 'direct'; + is $branches -> [3] -> name, 'refs/remotes/github/master'; + ok $branches -> [3] -> is_remote; + + $branches = [ $repo -> branches('all') ]; + is scalar(@$branches), 5; + $branches = [ $repo -> branches('remote') ]; + is scalar(@$branches), 3; +} + +done_testing; diff --git a/t/09-diff.t b/t/09-diff.t new file mode 100644 index 00000000..ede3b06c --- /dev/null +++ b/t/09-diff.t @@ -0,0 +1,494 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Copy; +use File::Slurp; +use Cwd qw(abs_path); +use Capture::Tiny 'capture_stdout'; + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +$repo -> config -> bool('diff.mnemonicprefix', 0); +$repo -> config -> str('core.autocrlf', "true"); + +my $file = $repo -> workdir . 'diff'; +write_file($file, "diff me, biatch\n"); + +my $file2 = $repo -> workdir . 'diff2'; +write_file($file2, "diff me too, biatch\n"); + +my $file3 = $repo -> workdir . 'diff3'; +write_file($file3, "diff me also, biatch, i have some whitespace \r\n"); + +my $index = $repo -> index; +my $tree = $repo -> head -> target -> tree; + +$index -> add('diff'); +$index -> add('diff2'); + +my $printer = sub { + my ($usage, $line) = @_; + + print ("$usage => $line"); +}; + +my $diff = $repo -> diff({ + 'tree' => $tree, + 'prefix' => { 'a' => 'aaa', 'b' => 'bbb' }, + 'context_lines' => 3, + 'interhunk_lines' => 0, + 'paths' => [ + undef, + 'diff' + ], +}); + +ok (!eval { $diff -> print('invalid_format', sub {}) }); + +my $expected = <<'EOS'; +file => diff --git aaa/diff bbb/diff +new file mode 100644 +index 0000000..6afc8a6 +--- /dev/null ++++ bbb/diff +hunk => @@ -0,0 +1 @@ +add => diff me, biatch +EOS + +my $output = capture_stdout { $diff -> print("patch", $printer) }; +is $output, $expected; + +$diff = $repo -> diff({ + 'tree' => $tree, + 'prefix' => { 'a' => 'aaa', 'b' => 'bbb' }, + 'paths' => [ 'diff' ], + 'flags' => { + 'reverse' => 1 + } +}); + +$expected = <<'EOS'; +file => diff --git bbb/diff aaa/diff +deleted file mode 100644 +index 6afc8a6..0000000 +--- bbb/diff ++++ /dev/null +hunk => @@ -1 +0,0 @@ +del => diff me, biatch +EOS + +$output = capture_stdout { $diff -> print("patch", $printer) }; +is $output, $expected; + +$diff = $repo -> diff({ + 'tree' => $tree, + 'paths' => [ 'diff2' ] +}); + +$expected = <<'EOS'; +file => diff --git a/diff2 b/diff2 +new file mode 100644 +index 0000000..e6ada20 +--- /dev/null ++++ b/diff2 +hunk => @@ -0,0 +1 @@ +add => diff me too, biatch +EOS + +$output = capture_stdout { $diff -> print("patch", $printer) }; +is $output, $expected; + +$diff = $repo -> diff({ + 'tree' => $tree, + 'paths' => [ 'diff3' ], + 'flags' => { + 'ignore_whitespace' => 1, + 'ignore_whitespace_eol' => 1 + } +}); + +$expected = ''; + +$output = capture_stdout { $diff -> print("patch", $printer) }; +is $output, $expected; + +$diff = $repo -> diff({ + 'tree' => $tree +}); + +$expected = <<'EOS'; +file => A diff +file => A diff2 +EOS + +$output = capture_stdout { $diff -> print("name_status", $printer) }; +is $output, $expected; + +$expected = <<'EOS'; +file => diff +file => diff2 +EOS + +$output = capture_stdout { $diff -> print("name_only", $printer) }; +is $output, $expected; + +$expected = <<'EOS'; +file => :000000 100644 0000000... 6afc8a6... A diff +file => :000000 100644 0000000... e6ada20... A diff2 +EOS + +$output = capture_stdout { $diff -> print("raw", $printer) }; +is $output, $expected; + +$expected = <<'EOS'; +file => diff --git a/diff b/diff +new file mode 100644 +index 0000000..6afc8a6 +--- /dev/null ++++ b/diff +file => diff --git a/diff2 b/diff2 +new file mode 100644 +index 0000000..e6ada20 +--- /dev/null ++++ b/diff2 +EOS + +$output = capture_stdout { $diff -> print("patch_header", $printer) }; +is $output, $expected; + +is $diff -> delta_count, 2; +my @patches = $diff -> patches; +is scalar(@patches), 2; + +foreach my $patch (@patches) { + my @hunks = $patch -> hunks; + ok (eval { $patch -> hunks(0) }); + ok (!eval { $patch -> hunks(1) }); + ok (!eval { $patch -> hunks($diff) }); + is $patch -> hunk_count, 1; + is scalar(@hunks), 1; + + my $hunk = $hunks[0]; + isa_ok $hunk, 'Git::Raw::Diff::Hunk'; + is $hunk -> new_start, 1; + is $hunk -> new_lines, 1; + is $hunk -> old_start, 0; + is $hunk -> old_lines, 0; + is $hunk -> header, '@@ -0,0 +1 @@'; +} + +$expected = <<'EOS'; +diff --git a/diff b/diff +new file mode 100644 +index 0000000..6afc8a6 +--- /dev/null ++++ b/diff +@@ -0,0 +1 @@ ++diff me, biatch +EOS + +is $patches[0] -> buffer, $expected; +is_deeply $patches[0] -> line_stats, { + 'context' => 0, 'additions' => 1, 'deletions' => 0 +}; + +my $delta = $patches[0] -> delta; +isa_ok $delta, 'Git::Raw::Diff::Delta'; +is $delta -> file_count, 1; +is $delta -> status, "added"; +is_deeply $delta -> flags, []; + +my $old_file = $delta -> old_file; +isa_ok $old_file, 'Git::Raw::Diff::File'; +is $old_file -> id, '0' x 40; +is $old_file -> path, 'diff'; +is_deeply $old_file -> flags, ['valid_id']; +is_deeply $old_file -> mode, 'new'; + +my $new_file = $delta -> new_file; +isa_ok $new_file, 'Git::Raw::Diff::File'; +is substr($new_file -> id, 0, 7), '6afc8a6'; +is $new_file -> path, 'diff'; +is_deeply $new_file -> flags, ['valid_id']; +is_deeply $new_file -> mode, 'blob'; + +$expected = <<'EOS'; +diff --git a/diff2 b/diff2 +new file mode 100644 +index 0000000..e6ada20 +--- /dev/null ++++ b/diff2 +@@ -0,0 +1 @@ ++diff me too, biatch +EOS + +is $patches[1] -> buffer, $expected; +is_deeply $patches[1] -> line_stats, { + 'context' => 0, 'additions' => 1, 'deletions' => 0 +}; + +my $tree2 = $repo -> head -> target -> tree; +my $tree1 = $repo -> head -> target -> parents -> [0] -> tree; + +$diff = $tree1 -> diff({ + 'tree' => $tree2, + 'prefix' => { 'a' => 'aaa', 'b' => 'bbb' }, +}); + +$expected = <<'EOS'; +file => diff --git aaa/test3/under/the/tree/test3 bbb/test3/under/the/tree/test3 +new file mode 100644 +index 0000000..c7eaef2 +--- /dev/null ++++ bbb/test3/under/the/tree/test3 +hunk => @@ -0,0 +1 @@ +add => this is a third testdel => +\ No newline at end of file +EOS + +$output = capture_stdout { $diff -> print("patch", $printer) }; + +is $output, $expected; + +$expected = <<'EOS'; +file => A test3/under/the/tree/test3 +EOS + +$output = capture_stdout { $diff -> print("name_status", $printer) }; + +is $output, $expected; + +is $diff -> delta_count, 1; +@patches = $diff -> patches; +is scalar(@patches), 1; + +$delta = $patches[0] -> delta; +is $delta -> old_file -> id, '0' x 40; +is substr($delta -> new_file -> id, 0, 7), 'c7eaef2'; + + +$index -> add('diff'); +$index -> add('diff2'); +my $index_tree1 = $repo -> lookup($index -> write_tree); + +move($file, $file.'.moved'); +$index -> remove('diff'); +$index -> add('diff.moved'); +my $index_tree2 = $repo -> lookup($index -> write_tree); + +my $tree_diff = $index_tree1 -> diff({ + 'tree' => $index_tree2 +}); + +is $tree_diff -> delta_count, 2; +@patches = $tree_diff -> patches; + +$expected = <<'EOS'; +diff --git a/diff b/diff +deleted file mode 100644 +index 6afc8a6..0000000 +--- a/diff ++++ /dev/null +@@ -1 +0,0 @@ +-diff me, biatch +EOS + +is $patches[0] -> buffer, $expected; + +$expected = <<'EOS'; +diff --git a/diff.moved b/diff.moved +new file mode 100644 +index 0000000..6afc8a6 +--- /dev/null ++++ b/diff.moved +@@ -0,0 +1 @@ ++diff me, biatch +EOS + +is $patches[1] -> buffer, $expected; + +my $stats = $tree_diff -> stats; +isa_ok $stats, 'Git::Raw::Diff::Stats'; +is $stats -> insertions, 1; +is $stats -> deletions, 1; +is $stats -> files_changed, 2; + +$expected = <<'EOS'; + diff | 1 - + diff.moved | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + delete mode 100644 diff + create mode 100644 diff.moved +EOS + +is $stats -> buffer({ + 'flags' => { + 'full' => 1, + 'summary' => 1, + } +}), $expected; + +$expected = <<'EOS'; + 2 files changed, 1 insertion(+), 1 deletion(-) + delete mode 100644 diff + create mode 100644 diff.moved +EOS + +is $stats -> buffer({ + 'flags' => { + 'short' => 1, + 'summary' => 1, + } +}), $expected; + +$tree_diff -> find_similar; +is $tree_diff -> delta_count, 1; +@patches = $tree_diff -> patches; + +$expected = <<'EOS'; +diff --git a/diff b/diff.moved +index 6afc8a6..6afc8a6 100644 +--- a/diff ++++ b/diff.moved +EOS + +is $patches[0] -> buffer, $expected; +$delta = $patches[0] -> delta; +isa_ok $delta, 'Git::Raw::Diff::Delta'; +is $delta -> status, 'renamed'; +is $delta -> similarity, 100; +is $delta -> new_file -> size, 16; + +$stats = $tree_diff -> stats; +isa_ok $stats, 'Git::Raw::Diff::Stats'; +is $stats -> insertions, 0; +is $stats -> deletions, 0; +is $stats -> files_changed, 1; + +$expected = <<'EOS'; + diff => diff.moved | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) +EOS + +is $stats -> buffer({ + 'flags' => { + 'full' => 1, + 'summary' => 1, + } +}), $expected; + +$expected = <<'EOS'; + 1 file changed, 0 insertions(+), 0 deletions(-) +EOS + +is $stats -> buffer({ + 'flags' => { + 'short' => 1, + 'summary' => 1, + } +}), $expected; + +my $content = <<'EOS'; +AAAAAAAAAA +AAAAAAAAAA +AAAAAAAAAA +AAAAAAAAAA +AAAAAAAAAA +EOS + +write_file("$file.moved", $content); +$index -> add('diff.moved'); +$index_tree1 = $repo -> lookup($index -> write_tree); + +move($file.'.moved', $file); +$index -> remove('diff.moved'); + +$content = <<'EOS'; +AAAAAAAAAA +AAAAAAAAAA +AAAAZZAAAA +AAAAAAAAAA +AAAAAAAAAA +EOS + +write_file($file, $content); +$index -> add('diff'); +$index_tree2 = $repo -> lookup($index -> write_tree); + +$tree_diff = $index_tree1 -> diff({ + 'tree' => $index_tree2, + 'flags' => { + 'all' => 1 + }, + 'context_lines' => 3, + 'interhunk_lines' => 0, + 'paths' => [ + undef, + 'diff', + 'diff.moved' + ] +}); + +is $tree_diff -> delta_count, 2; +ok (!eval { $tree_diff -> find_similar([]) }); +$tree_diff -> find_similar({ + 'flags' => { + 'renames' => 1, + 'ignore_whitespace' => 1, + 'ignore_leading_whitespace' => 1, + 'break_rewrites' => 1, + }, + 'rename_threshold' => 50, + 'rename_from_rewrite_threshold' => 50, + 'copy_threshold' => 50, + 'break_rewrite_threshold' => 60, + 'rename_limit' => 200, +}); + +is $tree_diff -> delta_count, 1; +@patches = $tree_diff -> patches; + +$expected = <<'EOS'; +diff --git a/diff.moved b/diff +index 5b96873..f97fd8f 100644 +--- a/diff.moved ++++ b/diff +@@ -1,5 +1,5 @@ + AAAAAAAAAA + AAAAAAAAAA +-AAAAAAAAAA ++AAAAZZAAAA + AAAAAAAAAA + AAAAAAAAAA +EOS + +is $patches[0] -> buffer, $expected; + +$content = <<'EOS'; + AAAAAAAAAA +AAAAAAAAAA +AAAAZZAAAA +AAAAAAAAAA + AAAAAAAAAA +EOS + +write_file($file, $content); +$index -> add('diff'); +$index_tree2 = $repo -> lookup($index -> write_tree); + +$tree_diff = $index_tree1 -> diff({ + 'tree' => $index_tree2, + 'flags' => { + 'all' => 1 + } +}); + +is $tree_diff -> delta_count, 2; +$tree_diff -> find_similar; +is $tree_diff -> delta_count, 1; +@patches = $tree_diff -> patches; + +done_testing; diff --git a/t/10-clone.t b/t/10-clone.t new file mode 100644 index 00000000..a2de9e8c --- /dev/null +++ b/t/10-clone.t @@ -0,0 +1,336 @@ +#!perl + +BEGIN { + unless ($ENV{NETWORK_TESTING} or $ENV{RELEASE_TESTING}) { + require Test::More; + Test::More::plan(skip_all => 'remote clone tests require network'); + } +} + +use Test::More; + +use File::Spec; +use Git::Raw; +use Cwd qw(abs_path); +use File::Path qw(rmtree); + +my $path; +my $url = 'git://github.com/libgit2/TestGitRepository.git'; + +$path = File::Spec -> rel2abs('t/test_repo_clone_bare'); +my $bare = Git::Raw::Repository -> clone($url, $path, { bare => 1 }); + +ok $bare -> is_bare; +ok !$bare -> is_empty; +$bare = undef; + +$path = File::Spec -> rel2abs('t/test_repo_clone'); +my $repo = Git::Raw::Repository -> clone($url, $path, { }); + +ok !$repo -> is_bare; +ok !$repo -> is_empty; +ok !$repo -> is_shallow; + +is_deeply $repo -> status -> {'master.txt'}, undef; + +my @remotes = $repo -> remotes; + +is $remotes[0] -> name, 'origin'; +is $remotes[0] -> url, $url; +is $remotes[1], undef; + +my $ref = Git::Raw::Branch -> lookup($repo, 'master', 1); + +is $ref -> upstream -> name, 'refs/remotes/origin/master'; +is $ref -> upstream_name, 'refs/remotes/origin/master'; +is $ref -> remote_name, 'origin'; +is $ref -> type, 'direct'; + +my $head = $ref -> target; +isa_ok $head, 'Git::Raw::Commit'; + +is $head -> author -> name, 'A U Thor'; + +$head = undef; +$ref = undef; + +$path = File::Spec->rel2abs('t/test_repo_remote_name_die'); +ok (!eval { $repo = Git::Raw::Repository -> clone($url, $path, { + 'callbacks' => { + 'remote_create' => sub { + my ($repo, $name, $remote_url) = @_; + die "Something goes bad!"; + } + } +})}); + +$path = File::Spec->rel2abs('t/test_repo_remote_name_undef'); +ok (!eval { $repo = Git::Raw::Repository -> clone($url, $path, { + 'callbacks' => { + 'remote_create' => sub { + my ($repo, $name, $remote_url) = @_; + undef; + } + } +})}); + +my $triggered_remote_create = 0; +$path = File::Spec->rel2abs('t/test_repo_remote_name'); +$repo = Git::Raw::Repository -> clone($url, $path, { + 'callbacks' => { + 'remote_create' => sub { + my ($repo, $name, $remote_url) = @_; + $triggered_remote_create = 1; + isa_ok $repo, 'Git::Raw::Repository'; + is $name, 'origin'; + is $remote_url, $url; + return Git::Raw::Remote -> create($repo, 'github', $remote_url); + } + } +}); + +is $triggered_remote_create, 1; + +@remotes = $repo -> remotes; + +is $remotes[0] -> name, 'github'; +is $remotes[0] -> url, $url; +is $remotes[1], undef; + +@remotes = (); + +$path = File::Spec->rel2abs('t/test_repo_disable_checkout'); +$repo = Git::Raw::Repository -> clone($url, $path, {'disable_checkout' => 1 }); + +isnt -f File::Spec->catfile($repo -> workdir, 'Raw.xs'), 1; + +my $state = undef; +my $total_objects = 0; +my $received_objects = 0; +my $local_objects = 0; +my $total_deltas = 0; +my $indexed_deltas = 0; +my $received_bytes = 0; + +my $states = []; + +$path = File::Spec -> rel2abs('t/test_repo_clone_callbacks'); +$repo = Git::Raw::Repository -> clone($url, $path, { + 'callbacks' => { + 'sideband_progress' => sub { + my $description = shift; + + if (!defined ($state)) { + if ($description =~ /pack/) { + if ($description =~ /done/) { + push @$states, 'pack'; + $state = 'count'; + } + } + } elsif ($state eq 'count') { + if ($description =~ /Counting objects/) { + if ($description =~ /done/) { + push @$states, 'count'; + $state = 'compress'; + } + } + } elsif ($state eq 'compress') { + if ($description =~ /Compressing/) { + if ($description =~ /done/) { + push @$states, 'compress'; + $state = 'total'; + } + } + } elsif ($state eq 'total') { + if ($description =~ /Total/) { + push @$states, 'total'; + } + } + }, + + 'transfer_progress' => sub { + my ($to, $ro, $lo, $td, $id, $rb) = @_; + + if ($total_objects == 0) { + $total_objects = $to; + } else { + if ($received_objects < $total_objects) { + ok $ro >= $received_objects; + $received_objects = $ro; + } else { + if ($total_deltas == 0) { + $total_deltas = $td; + } else { + is $td, $total_deltas; + ok $id >= $indexed_deltas; + $indexed_deltas = $id; + } + } + } + + ok $rb >= $received_bytes; + $received_bytes = $rb; + } + } +}); + +ok ($received_bytes > 0); +is $received_objects, $total_objects; +ok scalar(@$states) > 0; + +$repo = undef; + +rmtree abs_path('t/test_repo_clone'); +rmtree abs_path('t/test_repo_clone_bare'); +rmtree abs_path('t/test_repo_clone_callbacks'); +rmtree abs_path('t/test_repo_disable_checkout'); +rmtree abs_path('t/test_repo_remote_name_die'); +rmtree abs_path('t/test_repo_remote_name_undef'); +rmtree abs_path('t/test_repo_remote_name'); + +if ($^O eq 'MSWin32') { + diag("Windows doesn't have a SSH server, skipping SSH clone tests"); + done_testing; + exit; +} + +my $remote_path = File::Spec -> rel2abs('t/test_repo'); +my $remote_url = "ssh://$ENV{USER}\@localhost$remote_path"; +$path = File::Spec -> rel2abs('t/test_repo_ssh'); + +# Not a CV for callback +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => 'blah' + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Die'ing inside the callback +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { die "Shouldn't break!" } + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Returning undef inside the callback +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { return undef; } + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Invalid key files +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { + my ($url, $user) = @_; + return Git::Raw::Cred -> sshkey( + $user, 'invalid', 'invalid', 'invalid'); + } + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Incorrect authentication type (username and password) +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { + my ($url, $user) = @_; + return Git::Raw::Cred -> userpass( + $user, 'password'); + } + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Incorrect authentication type (SSH agent) +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { + my ($url, $user) = @_; + return Git::Raw::Cred -> sshagent($user); + } + } + }); +}); +rmtree $path; +ok ! -e $path; + +# Incorrect authentication type (SSH interactive) +ok (!eval { $repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => sub { + my ($url, $user) = @_; + return Git::Raw::Cred -> sshinteractive( + 'metheunknownuser', sub { + return ('badpassword'); + }); + } + } + }); +}); +rmtree $path; +ok ! -e $path; + +my ($credentials_fired, $update_tips_fired) = (0, 0); +$repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'checkout_branch' => 'master', + 'callbacks' => { + 'credentials' => sub { + my ($url, $user) = @_; + + my $ssh_dir = File::Spec -> catfile($ENV{HOME}, '.ssh'); + ok -e $ssh_dir; + + my $public_key = File::Spec -> catfile($ssh_dir, 'id_rsa.pub'); + my $private_key = File::Spec -> catfile($ssh_dir, 'id_rsa'); + ok -f $public_key; + ok -f $private_key; + + is $user, $ENV{USER}; + is $url, $remote_url; + + $credentials_fired = 1; + return Git::Raw::Cred -> sshkey( + $user, + $public_key, + $private_key + ); + }, + 'update_tips' => sub { + my ($ref, $msg) = @_; + like $ref, qr/refs/; + is $msg, '0' x 40; + $update_tips_fired = 1; + } + } +}); + +ok !$repo -> is_empty; +is $credentials_fired, 1; +is $update_tips_fired, 1; +@remotes = $repo -> remotes; + +is $remotes[0] -> name, 'origin'; +is $remotes[0] -> url, $remote_url; + +@remotes = (); +$repo = undef; + +rmtree $path; +ok ! -e $path; + +done_testing; diff --git a/t/11-stash.t b/t/11-stash.t new file mode 100644 index 00000000..4a4911ca --- /dev/null +++ b/t/11-stash.t @@ -0,0 +1,93 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $file = $repo -> workdir . 'test'; +write_file($file, 'this is a test for stash'); + +is_deeply $repo -> status -> {'test'}, {'flags' => ['worktree_modified']}; + +my $config = $repo -> config; +my $name = $config -> str('user.name'); +my $email = $config -> str('user.email'); + +my $me = Git::Raw::Signature -> now($name, $email); + +$repo -> stash($me, 'some stash'); + +Git::Raw::Stash -> foreach($repo, sub { + my ($i, $msg, $oid) = @_; + + is $i, 0; + is $msg, 'On master: some stash'; + + 0; +}); + +Git::Raw::Stash -> drop($repo, 0); + +Git::Raw::Stash -> foreach($repo, sub { die 'This should not be called' }); + +my $untracked_file = $repo -> workdir . 'untracked'; +write_file($untracked_file, 'this is an untracked file'); + +$repo -> stash($me, 'stash untracked files', [undef, 'include_untracked']); + +my @stashes; +Git::Raw::Stash -> foreach($repo, sub { + my ($index, $msg, $id) = @_; + push @stashes, { 'index' => $index, 'msg' => $msg, 'id' => $id }; + + 0; +}); + +is scalar(@stashes), 1; +is $stashes[0] -> {'msg'}, 'On master: stash untracked files'; +ok (! -f $untracked_file); + +write_file($untracked_file, 'this is an untracked file'); +my $index = $repo -> index; +$index -> add('untracked'); +$index -> write; + +$repo -> stash($me, 'dont stash indexed files', ['keep_index']); + +@stashes = (); +Git::Raw::Stash -> foreach($repo, sub { + my ($index, $msg, $id) = @_; + push @stashes, { 'index' => $index, 'msg' => $msg, 'id' => $id }; + + 0; +}); + +is scalar(@stashes), 2; +is $stashes[0] -> {'msg'}, 'On master: dont stash indexed files'; +ok (-f $untracked_file); + +$repo -> ignore("ignored\n"); +my $ignored_file = $repo -> workdir . 'ignored'; +write_file($ignored_file, 'this is an ignored file'); + +$repo -> stash($me, 'stash ignored files', ['include_ignored']); + +@stashes = (); +Git::Raw::Stash -> foreach($repo, sub { + my ($index, $msg, $id) = @_; + push @stashes, { 'index' => $index, 'msg' => $msg, 'id' => $id }; + + 0; +}); + +is scalar(@stashes), 3; +is $stashes[0] -> {'msg'}, 'On master: stash ignored files'; +ok (! -f $untracked_file); +ok (! -f $ignored_file); + +done_testing; diff --git a/t/12-blob.t b/t/12-blob.t new file mode 100644 index 00000000..c1971133 --- /dev/null +++ b/t/12-blob.t @@ -0,0 +1,22 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $buffer = 'hello, world!'; + +my $blob = $repo -> blob($buffer); + +is $blob -> content, $buffer; +is $blob -> size, length $buffer; +is $blob -> id, '30f51a3fba5274d53522d0f19748456974647b4f'; + +ok $blob -> is_blob; +ok !$blob -> is_tree; + +done_testing; diff --git a/t/13-checkout.t b/t/13-checkout.t new file mode 100644 index 00000000..cab0e054 --- /dev/null +++ b/t/13-checkout.t @@ -0,0 +1,121 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $fst = $repo -> head -> target -> parents -> [0]; +is $fst -> message, "second commit\n"; + +$repo -> checkout($fst, { + 'ancestor_label' => 'ancestor', + 'our_label' => 'ours', + 'their_label' => 'theirs', +}); + +is_deeply $repo -> status -> {'test3/under/the/tree/test3'}, undef; + +$repo -> checkout($repo -> head, {}); + +$repo -> checkout($fst, { + 'checkout_strategy' => { 'safe' => 1, 'remove_untracked' => 1 } +}); + +is_deeply $repo -> status -> {'test3/under/the/tree/test3'}, {'flags' => ['index_deleted']}; + +$repo -> checkout($repo -> head, {}); + +my $file = $repo -> workdir . 'test'; +write_file($file, 'this is a checkout test'); + +my $file2 = $repo -> workdir . 'test2'; +write_file($file2, 'this is a checkout test'); + +my $index = $repo -> index; +$index -> add('test'); +$index -> add('test2'); +$index -> write; +$index -> read; + +my $tree = $repo -> lookup($index -> write_tree); + +my $name = $repo -> config -> str('user.name'); +my $email = $repo -> config -> str('user.email'); +my $me = Git::Raw::Signature -> now($name, $email); + +my $commit = $repo -> commit( + "checkout commit\n", $me, $me, [$repo -> head -> target], $tree +); + +# checkout index +write_file($file, 'this is a checkout test with modifications'); +is read_file($file), 'this is a checkout test with modifications'; + +$index -> checkout({ + 'checkout_strategy' => { 'force' => 1 }, + 'paths' => [ + 'test' + ], +}); + +is read_file($file), 'this is a checkout test'; +is read_file($file2), 'this is a checkout test'; + +my $untracked_file = $repo -> workdir . 'untracked_file'; +write_file($untracked_file, 'this is a checkout test'); + +my $files_expected = [ 'test2', 'untracked_file' ]; +my $files_checked_out = []; +$repo -> checkout($fst, { + 'checkout_strategy' => { 'safe' => 1, 'remove_untracked' => 1 }, + 'paths' => [ + undef, + @$files_expected + ], + 'notify' => [ + 'conflict', + 'dirty', + 'updated', + 'untracked', + 'ignored', + 'all' + ], + 'callbacks' => { + 'notify' => sub { + my ($path, $flags) = @_; + + if ($path eq 'untracked_file') { + is_deeply $flags, ['untracked']; + } elsif ($path eq 'test2') { + is_deeply $flags, ['updated']; + } + + push @$files_checked_out, $path; + + return 0; + }, + 'progress' => sub { + my ($path, $completed_steps, $total_steps) = @_; + + if (!defined $path) { + is $completed_steps, 0; + is $total_steps, scalar(@$files_expected); + } else { + ok $completed_steps <= $total_steps; + is scalar(grep { $_ eq $path } @$files_expected), 1; + } + } + } +}); + +is_deeply $files_checked_out, $files_expected; + +is read_file($file), 'this is a checkout test'; +is read_file($file2), 'this is a second test'; + +done_testing; diff --git a/t/14-tree-builder.t b/t/14-tree-builder.t new file mode 100644 index 00000000..87da8bd7 --- /dev/null +++ b/t/14-tree-builder.t @@ -0,0 +1,113 @@ +#!perl + +use strict; +use warnings; + +use Test::More; +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $empty_blob = $repo -> blob(''); +my $builder = Git::Raw::Tree::Builder -> new($repo); + +is $builder -> entry_count, 0; + +my $entry = $builder -> insert('one.txt', $empty_blob, 0100644); +$builder -> insert('two.txt', $empty_blob, 0100644); +$builder -> insert('three.txt', $empty_blob, 0100644); + +isa_ok $entry, 'Git::Raw::Tree::Entry'; +is $entry -> name, 'one.txt'; + +is $builder -> entry_count, 3; + +$entry = $builder -> get('one.txt'); +is $entry -> name, 'one.txt'; +is $entry -> object -> id(), $empty_blob -> id (); + +$entry = $builder -> get('two.txt'); +is $entry -> name, 'two.txt'; +is $entry -> object -> id(), $empty_blob -> id (); + +$entry = $builder -> get('three.txt'); +is $entry -> name, 'three.txt'; +is $entry -> object -> id(), $empty_blob -> id (); + +$entry = $builder -> get('four.txt'); +ok !defined($entry); + +my $tree = $builder -> write(); + +isa_ok $tree, 'Git::Raw::Tree'; +is $tree -> id(), '228c738569c82d9906ea1801f698a7c2a70e56b1'; + +my $entries = $tree -> entries(); + +is_deeply [ sort map { $_ -> name() } @$entries ], + [ qw/one.txt three.txt two.txt/ ]; + +is_deeply [ map { $_ -> object -> id() } @$entries ], + [ map { $empty_blob -> id() } (1..3) ]; + +$builder -> clear(); + +is $builder -> entry_count, 0; + +$builder = Git::Raw::Tree::Builder -> new($repo, $tree); + +is $builder -> entry_count, 3; + +$builder -> remove('two.txt'); + +is $builder -> entry_count, 2; + +$tree = $builder -> write(); +$entries = $tree -> entries(); + +is_deeply [ sort map { $_ -> name() } @$entries ], + [ qw/one.txt three.txt/ ]; + +is_deeply [ map { $_ -> object -> id() } @$entries ], + [ map { $empty_blob -> id() } (1..2) ]; + +eval { + $builder -> insert('four.txt', $empty_blob, 0100754); + fail q{Should've raised an error!}; +} or do { + like $@, qr/Failed to insert entry/; +}; + +eval { + $builder -> insert('four/five.txt', $empty_blob, 0100755); + fail q{Should've raised an error!}; +} or do { + like $@, qr/Failed to insert entry/; +}; + +eval { + $builder -> remove('two.txt'); + fail q{Should've raised an error!}; +} or do { + like $@, qr/Failed to remove entry/; +}; + +my $subtree = $tree; + +$builder -> insert('subdir', $subtree, 0040000); +is $builder -> entry_count, 3; + +$tree = $builder -> write(); +$entries = $tree -> entries(); + +@$entries = sort { $a -> name() cmp $b -> name() } @$entries; + +is_deeply [ map { $_ -> name() } @$entries ], + [ qw/one.txt subdir three.txt/ ]; + +is_deeply [ map { $_ -> object -> id() } @$entries ], + [ $empty_blob -> id(), $subtree -> id(), $empty_blob -> id() ]; + +done_testing; diff --git a/t/15-merge.t b/t/15-merge.t new file mode 100644 index 00000000..479ebf7c --- /dev/null +++ b/t/15-merge.t @@ -0,0 +1,284 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Spec; +use File::Slurp; +use Cwd qw(abs_path); +use File::Path qw(rmtree); + +my $path = abs_path('t').'/merge_repo'; +my $repo = Git::Raw::Repository -> init($path, 0); + +my $file1 = $repo -> workdir . 'test1'; +write_file($file1, 'this is file1'); + +my $index = $repo -> index; +$index -> add('test1'); +$index -> write; + +my $config = $repo -> config; + +my $name = 'Git::Raw author'; +my $email = 'git-xs@example.com'; + +is $config -> str('user.name', $name), $name; +is $config -> str('user.email', $email), $email; + +my $me = Git::Raw::Signature -> default($repo); + +my $commit = $repo -> commit("initial commit\n", $me, $me, [], + $repo -> lookup($index -> write_tree)); + +my $initial_head = $repo -> head; +my $branch1 = $repo -> branch('branch1', $initial_head -> target); +my $branch2 = $repo -> branch('branch2', $initial_head -> target); +my $branch3 = $repo -> branch('branch3', $initial_head -> target); + +$repo -> head($branch1); +write_file($file1, 'this is file1 on branch1'); +$index -> add('test1'); +$index -> write; + +my $commit1 = $repo -> commit("commit on branch1\n", $me, $me, [$branch1 -> target], + $repo -> lookup($index -> write_tree)); + +my $master = Git::Raw::Branch -> lookup($repo, 'master', 1); +$repo -> checkout($repo -> head($master), { + 'checkout_strategy' => { + 'safe_create' => 1 + } +}); + +ok (!eval { $repo -> merge_base("refs/heads/master", substr($commit1 -> id, 0, 2)) }); +ok (!eval { $repo -> merge_base("refs/heads/master", sub {}) }); +is $master -> target -> id, $repo -> merge_base("refs/heads/master", $commit1 -> id); +is $master -> target -> id, $repo -> merge_base("refs/heads/master", $commit1); +is $master -> target -> id, $repo -> merge_base("refs/heads/master", substr($commit1 -> id, 0, 7)); +is $master -> target -> id, $repo -> merge_base($master, $commit1); +is $master -> target -> id, $repo -> merge_base($master, 'refs/heads/branch1'); + +ok (!eval { $repo -> merge_base($master) }); +ok (!eval { $repo -> merge_base($master, 'refs/heads/unknown_branch') }); + +my $r = $repo -> merge_analysis($branch1); +is_deeply $r, ['normal', 'fast_forward']; + +ok (!eval { $repo -> merge($branch1, { + 'flags' => [ + undef, + 'bogus_flag' + ] +})}); + +ok (!eval { $repo -> merge($branch1, { + 'favor' => 'bogus', +})}); + +$repo -> merge($branch1, { + 'rename_threshold' => 50, + 'target_limit' => 200, + }, { + 'checkout_strategy' => { + 'force' => 1 + } + } +); + +is $repo -> index -> has_conflicts, 0; +is_deeply $repo -> status -> {'test1'}, {'flags' => ['index_modified']}; + +$master -> target($commit1); +$master = Git::Raw::Branch -> lookup ($repo, 'master', 1); + +is_deeply $repo -> status -> {'test1'}, undef; + +$repo -> checkout($repo -> head($branch2), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +write_file($file1, 'this is file1 on branch2'); +$index -> add('test1'); +$index -> write; + +my $commit2 = $repo -> commit("commit on branch2\n", $me, $me, [$branch2 -> target], + $repo -> lookup($index -> write_tree)); + +$repo -> checkout($repo -> head($master), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +is $branch2 -> target -> id, $repo -> merge_base($branch2, $commit2); +is $commit -> id, $repo -> merge_base($commit1, $commit2); + +$r = $repo ->merge_analysis($branch2); +is_deeply $r, ['normal']; + +Git::Raw::Graph -> is_descendant_of($repo, $branch1, $branch2), 0; +Git::Raw::Graph -> is_descendant_of($repo, $branch2, $branch1), 0; + +$repo -> merge($branch2); +is $index -> has_conflicts, 1; + +my @conflicts = $index -> conflicts; +is scalar(@conflicts), 1; + +my $conflict = shift @conflicts; +my $ancestor_entry = $conflict -> {'ancestor'}; +my $our_entry = $conflict -> {'ours'}; +my $their_entry = $conflict -> {'theirs'}; + +is $ancestor_entry -> path, 'test1'; +is $our_entry -> path, 'test1'; +is $their_entry -> path, 'test1'; + +is length($ancestor_entry -> id), 40; +is length($our_entry -> id), 40; +is length($their_entry -> id), 40; + +ok $ancestor_entry -> id ne $our_entry -> id; +ok $ancestor_entry -> id ne $their_entry -> id; +ok $our_entry -> id ne $their_entry -> id; + +$index -> remove_conflict('test1'); +is $index -> has_conflicts, 0; + +$index -> conflict_cleanup; +$repo -> state_cleanup; +write_file($file1, 'this is file1 on branch1'); +$index -> add('test1'); +$index -> write(); + +is $index -> has_conflicts, 0; +$repo -> merge($branch2); +is $index -> has_conflicts, 1; + +write_file($file1, 'this is file1 on branch1 and branch2'); +$index -> add('test1'); +$index -> write; + +my $merge_msg = $repo -> message(); +is $merge_msg, "Merge branch 'branch2'\n\nConflicts:\n\ttest1\n"; + +my $target = $master -> target; +$commit = $repo -> commit("Merge commit!", $me, $me, [$target, $commit2], + $repo -> lookup($index -> write_tree)); + +Git::Raw::Graph -> is_descendant_of($repo, $commit, $target), 1; +Git::Raw::Graph -> is_descendant_of($repo, $commit, $commit2), 1; +Git::Raw::Graph -> is_descendant_of($repo, $commit, 'refs/heads/branch2'), 1; +Git::Raw::Graph -> is_descendant_of($repo, $commit, 'branch2'), 1; +Git::Raw::Graph -> is_descendant_of($repo, $target, $commit), 0; +Git::Raw::Graph -> is_descendant_of($repo, $commit2, $commit), 0; + +is $repo -> state, "merge"; +$repo -> state_cleanup; +is $repo -> state, "none"; + +$r = $repo ->merge_analysis($branch2); +is_deeply $r, ['up_to_date']; + +$repo -> checkout($repo -> head($branch3), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +write_file($file1, 'this is file1 on branch3'); +$index -> add('test1'); +$index -> write; + +$commit = $repo -> commit("commit on branch3\n", $me, $me, [$branch3 -> target], + $repo -> lookup($index -> write_tree)); + +is (Git::Raw::Graph -> is_descendant_of($repo, $commit, $initial_head), 1); +is (Git::Raw::Graph -> is_descendant_of($repo, $commit -> id, $initial_head), 1); + +$repo -> checkout($repo -> head($master), { + checkout_strategy => { + 'force' => 1 +}}); + +$r = $repo -> merge_analysis($branch3); +is_deeply $r, ['normal']; + +$repo -> merge($branch3, { + 'favor' => 'theirs', + }, { + checkout_strategy => { + 'safe_create' => 1 + } +}); + +is $index -> has_conflicts, 0; + +my $content = read_file($file1); +chomp ($content); +is $content, 'this is file1 on branch3'; +is $repo -> state, "merge"; +$repo -> state_cleanup; +is $repo -> state, "none"; + +$repo -> checkout($repo -> head($master), { + checkout_strategy => { + 'force' => 1 + } +}); + +$r = $repo -> merge_analysis($branch3); +is_deeply $r, ['normal']; + +$repo -> merge($branch3, { + 'favor' => 'ours', +}); + +is $index -> has_conflicts, 0; + +$content = read_file($file1); +chomp ($content); +is $content, 'this is file1 on branch1 and branch2'; +is $repo -> state, "merge"; +$repo -> state_cleanup; +is $repo -> state, "none"; + +$master = $repo -> head; +my $head_commit = $master -> target; + +write_file($file1, 'pre-commit merge'); +$index -> add('test1'); +$index -> write; + +my $merge_commit1 = $repo -> commit("merge commit on branch1\n", $me, $me, [$head_commit], + $repo -> lookup($index -> write_tree)); + +write_file($file1, 'post-commit merge'); +$index -> add('test1'); +$index -> write; + +my $merge_commit2 = $repo -> commit("merge commit on branch1\n", $me, $me, [$merge_commit1], + $repo -> lookup($index -> write_tree)); + +my $merged_index = $merge_commit1 -> merge($merge_commit2, {}); +isa_ok $merged_index, 'Git::Raw::Index'; +is $merged_index -> path, undef; +is $merged_index -> has_conflicts, 0; +my @merged_index_entries = $merged_index -> entries; +ok (scalar(@merged_index_entries) > 0); +$merged_index -> clear; +@merged_index_entries = $merged_index -> entries; +is scalar(@merged_index_entries), 0; + +$merged_index = $merge_commit1 -> tree -> merge($head_commit -> tree, $merge_commit2 -> tree, {}); +isa_ok $merged_index, 'Git::Raw::Index'; +is $merged_index -> has_conflicts, 1; + +$repo = undef; +rmtree $path; +ok ! -e $path; + +done_testing; diff --git a/t/16-reflog.t b/t/16-reflog.t new file mode 100644 index 00000000..b5221746 --- /dev/null +++ b/t/16-reflog.t @@ -0,0 +1,76 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $master = Git::Raw::Branch -> lookup($repo, 'master', 1); +my $head = $master -> target; +isa_ok $head, 'Git::Raw::Commit'; + +my $branch_name = 'reflog_branch'; + +my $branch = $repo -> branch($branch_name, $head); +is $branch -> type, 'direct'; +is $branch -> name, "refs/heads/$branch_name"; + +my $reflog = $branch -> reflog; +my @entries = $reflog -> entries; +is scalar(@entries), 1; + +my $message = 'My entry'; +$reflog -> append ($message); +$reflog -> write; +@entries = $reflog -> entries; +is scalar(@entries), 2; + +is $entries[0] -> {'message'}, $message; +is $entries[0] -> {'new_id'}, $entries[0] -> {'old_id'}; +is $entries[0] -> {'old_id'}, $entries[1] -> {'new_id'}; +is $entries[0] -> {'committer'} -> name, $entries[1] -> {'committer'} -> name; +is $entries[0] -> {'committer'} -> email, $entries[1] -> {'committer'} -> email; +ok ($entries[0] -> {'committer'} -> time >= $entries[1] -> {'committer'} -> time); +is $entries[0] -> {'committer'} -> offset, $entries[1] -> {'committer'} -> offset; + +my $name = 'Committer'; +my $email = 'committer@example.com'; + +my $time = time(); +my $off = 120; +my $me = Git::Raw::Signature -> new($name, $email, $time, $off); + +$reflog -> append ($message, $me); +$reflog -> write; +@entries = $reflog -> entries; +is scalar(@entries), 3; +is $entries[0] -> {'committer'} -> name, $name; +is $entries[0] -> {'committer'} -> email, $email; +ok ($entries[0] -> {'committer'} -> time <= $time); +ok ($entries[0] -> {'committer'} -> time >= $time - 2); +is $entries[0] -> {'committer'} -> offset, $off; + +$reflog -> drop (1); +$reflog -> write; +@entries = $reflog -> entries; +is scalar(@entries), 2; +is $entries[0] -> {'old_id'}, $entries[1] -> {'new_id'}; + +$reflog -> delete; +$reflog = $branch -> reflog; +@entries = $reflog -> entries; +is scalar(@entries), 0; + +$reflog = Git::Raw::Reflog -> open($branch); +@entries = $reflog -> entries; +is scalar(@entries), 0; + +$reflog -> append ($message, $me); +$reflog -> write; +@entries = $reflog -> entries; +is scalar(@entries), 1; + +done_testing; diff --git a/t/17-filter.t b/t/17-filter.t new file mode 100644 index 00000000..c0e21a5b --- /dev/null +++ b/t/17-filter.t @@ -0,0 +1,233 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $old_head = $repo -> head; +my $branch_name = 'filter_branch'; +my $branch = $repo -> branch($branch_name, $old_head -> target); + +# switch to a new branch +$repo -> checkout($repo -> head($branch), { + 'checkout_strategy' => { + 'safe_create' => 1 + } +}); + +# odb filter +my $odb_filter = Git::Raw::Filter -> create ("odb", "text"); + +my $file = $repo -> workdir . 'filterfile'; +write_file($file, 'X:filter me:X'); + +my $initialize = 0; +my $shutdown = 0; +my $cleanup = 0; +my $check = 0; +my $apply = 0; + +ok (!eval { $odb_filter -> register(100) }); + +$odb_filter -> callbacks({ + 'initialize' => sub { + $initialize = 1; + return Git::Raw::Error -> OK; + }, + 'shutdown' => sub { + $shutdown = 1; + }, + 'cleanup' => sub { + $cleanup = 1; + }, + 'check' => sub { + my ($source) = @_; + isa_ok $source, 'Git::Raw::Filter::Source'; + is $source -> id, ''; + is $source -> path, 'filterfile'; + is $source -> mode, 'to_odb'; + is $source -> file_mode, 0; + + $check = 1; + return Git::Raw::Error -> OK; + }, + 'apply' => sub { + my ($source, $from, $to) = @_; + + isa_ok $source, 'Git::Raw::Filter::Source'; + isa_ok $to, 'SCALAR'; + + ok length ($from) > 0; + + $$to = (split (/:/, $from))[1]; + $apply = 1; + return Git::Raw::Error -> OK; + }, +}); + +$odb_filter -> register(100); + + +my $index = $repo -> index; +$index -> add('filterfile'); +$index -> write; + +is $initialize, 1; +is $check, 1; +is $apply, 1; +is $cleanup, 1; +is $shutdown, 0; + +my $content = ''; +my $diff = $repo -> diff({ 'tree' => $repo -> head -> target -> tree }); +$diff -> print ("patch", sub { + my ($ctx, $line) = @_; + + $content .= $line if ($line =~ /filter me/); +}); + +is $content, "filter me"; + +$odb_filter = undef; +is $shutdown, 1; + +$odb_filter = Git::Raw::Filter -> create ("odb", "text"); + +$odb_filter -> callbacks({ + 'apply' => sub { + return Git::Raw::Error -> ERROR; + } +}); + +$odb_filter -> register(100); + +write_file($file, 'X:filter me some more:X'); + +ok !eval { $index -> add('filterfile'); }; + +$content = ''; +$diff = $repo -> diff({ 'tree' => $repo -> head -> target -> tree }); +$diff -> print ("patch", sub { + my ($ctx, $line) = @_; + + $content .= $line if ($line =~ /filter me/); +}); + +# calling die() should be safe +is $content, "filter me"; + +$odb_filter -> callbacks({ + 'apply' => sub { + $apply = 1; + die "Throwing an exception here!\n"; + }, + 'shutdown' => sub { + $shutdown = 1; + }, +}); + +ok !eval { $index -> add('filterfile'); }; +is $@, "Throwing an exception here!\n"; + +$shutdown = 0; +$odb_filter -> unregister; +is $shutdown, 1; + +$apply = 0; +$index -> add('filterfile'); +$index -> write; +is $apply, 0; + +my $me = Git::Raw::Signature -> default($repo); +my $commit1 = $repo -> commit( + "Filter commit1\n", $me, $me, [$repo -> head -> target], $repo -> lookup($index -> write_tree) +); + +write_file($file, 'X:filter me some more and more:X'); +$index -> add('filterfile'); +$index -> write; + +my $commit2 = $repo -> commit( + "Filter commit2\n", $me, $me, [$commit1], $repo -> lookup($index -> write_tree) +); + +my $worktree_filter = Git::Raw::Filter -> create ("worktree", "text"); + +$worktree_filter -> callbacks({ + 'check' => sub { + my ($source) = @_; + is $source -> mode, 'to_worktree'; + + $check = 1; + 0; + }, + 'apply' => sub { + my ($source, $from, $to) = @_; + + $$to = (split (/:/, $from))[1]; + $apply = 1; + 0; + }, +}); + +$worktree_filter -> register(100); + +$apply = 0; +$check = 0; + +$repo -> checkout($commit1 -> tree, { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +is $check, 1; +is $apply, 1; + +is read_file($file), 'filter me some more'; + +$worktree_filter -> unregister; + +my $passthrough_filter = Git::Raw::Filter -> create ("passthrough", "text"); + +$passthrough_filter -> callbacks({ + 'check' => sub { + $check = 1; + return Git::Raw::Error -> PASSTHROUGH; + }, + 'apply' => sub { + $apply = 1; + return Git::Raw::Error -> PASSTHROUGH; + }, +}); + +$passthrough_filter -> register(100); + +$apply = 0; +$check = 0; + +$repo -> checkout($commit1 -> tree, { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +is $check, 1; +is $apply, 0; +is read_file($file), 'X:filter me some more:X'; + +$passthrough_filter -> unregister; + +# switch back to the previous branch +$repo -> checkout($repo -> head($old_head), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +done_testing; diff --git a/t/18-blame.t b/t/18-blame.t new file mode 100644 index 00000000..eb557783 --- /dev/null +++ b/t/18-blame.t @@ -0,0 +1,116 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $branch_name = 'blame_branch'; + +my $branch = $repo -> branch($branch_name, $repo -> head -> target); +is $branch -> type, 'direct'; +is $branch -> name, "refs/heads/$branch_name"; + +$repo -> checkout($repo -> head($branch), { + 'checkout_strategy' => { + 'safe' => 1 + } +}); + +my $file = $repo -> workdir . 'blame'; +my @lines = ('line1', 'line2', 'line3', 'line4'); +write_file($file, map { "$_\n" } @lines); + +my $index = $repo -> index; +$index -> add('blame'); +$index -> write; + +my $me = Git::Raw::Signature -> default($repo); +my $commit1 = $repo -> commit("commit1 on blame branch\n", $me, $me, [$repo -> head -> target], + $repo -> lookup($index -> write_tree)); + +@lines = ('line1', 'line2', 'line31', 'line4'); +write_file($file, map { "$_\n" } @lines); +$index -> add('blame'); +$index -> write; + +my $commit2 = $repo -> commit("commit2 on blame branch\n", $me, $me, [$repo -> head -> target], + $repo -> lookup($index -> write_tree)); + +@lines = ('line1', 'line2', 'line31', 'line41'); +write_file($file, map { "$_\n" } @lines); +$index -> add('blame'); +$index -> write; + +my $commit3 = $repo -> commit("commit3 on blame branch\n", $me, $me, [$repo -> head -> target], + $repo -> lookup($index -> write_tree)); + +my $blame = $repo -> blame('blame'); +isa_ok $blame, 'Git::Raw::Blame'; +is $blame -> hunk_count, 3; + +my @hunks = $blame -> hunks; +is scalar(@hunks), 3; +ok (!eval { $blame -> hunks("zzz") }); +ok (!eval { $blame -> hunks(3) }); +ok (!eval { $blame -> line(99999) }); + +my $hunk1 = shift @hunks; +is $hunk1 -> lines_in_hunk, 2; +is $hunk1 -> final_commit_id, $commit1 -> id; +is $hunk1 -> final_start_line_number, 1; +is $hunk1 -> orig_commit_id, $commit1 -> id; +is $hunk1 -> orig_start_line_number, 1; +is $hunk1 -> orig_path, 'blame'; +is $hunk1 -> boundary, 0; + +my $hunk2 = shift @hunks; +is $hunk2 -> lines_in_hunk, 1; +is $hunk2 -> final_commit_id, $commit2 -> id; +is $hunk2 -> final_start_line_number, 3; +is $hunk2 -> orig_commit_id, $commit2 -> id; +is $hunk2 -> orig_start_line_number, 3; +is $hunk2 -> orig_path, 'blame'; +is $hunk2 -> boundary, 0; + +my $hunk3 = shift @hunks; +is $hunk3 -> lines_in_hunk, 1; +is $hunk3 -> final_commit_id, $commit3 -> id; +is $hunk3 -> final_start_line_number, 4; +is $hunk3 -> orig_commit_id, $commit3 -> id; +is $hunk3 -> orig_start_line_number, 4; +is $hunk3 -> orig_path, 'blame'; +is $hunk3 -> boundary, 0; + +@hunks = $blame -> hunks(2); +is scalar(@hunks), 1; +is $hunks[0] -> final_commit_id, $hunk3 -> final_commit_id; + +my $line_hunk = $blame -> line(4); +is $line_hunk -> final_commit_id, $hunk3 -> final_commit_id; + +my $master = Git::Raw::Branch -> lookup($repo, 'master', 1); +$repo -> checkout($repo -> head($master), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +@lines = ('line11', 'line2', 'line31', 'line41'); +my $memory_blame = $blame -> buffer(join ("\n", @lines)); +my @memory_hunks = $memory_blame -> hunks(0); +is $memory_blame -> hunk_count, 4; + +my $memory_hunk = shift @memory_hunks; +is $memory_hunk -> lines_in_hunk, 1; +is $memory_hunk -> final_commit_id, '0' x 40; +is $memory_hunk -> final_start_line_number, 1; +is $memory_hunk -> orig_commit_id, '0' x 40; +is $memory_hunk -> orig_start_line_number, 0; +is $memory_hunk -> orig_path, 'blame'; + +done_testing; diff --git a/t/19-push.t b/t/19-push.t new file mode 100644 index 00000000..b32dd1a7 --- /dev/null +++ b/t/19-push.t @@ -0,0 +1,234 @@ +#!perl + +use Test::More; + +use Git::Raw; +use Cwd qw(abs_path); +use File::Slurp; +use File::Basename qw(dirname); +use File::Path 2.07 qw(make_path remove_tree); + +my $local_path = abs_path('t').'/local_bare_repo'; +my $local_repo = Git::Raw::Repository -> init($local_path, 1); +is $local_repo -> is_bare, 1; + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $remote = Git::Raw::Remote -> create_anonymous($repo, $local_path, undef); +isa_ok $remote, 'Git::Raw::Remote'; + +my $total_packed = 0; +my $push = Git::Raw::Push -> new($remote); +$push -> add_refspec("refs/heads/master:"); +$push -> callbacks({ + 'pack_progress' => sub { + my ($stage, $current, $total) = @_; + + is $stage, 0; + is $total, 0; + ok ($current > $total_packed); + $total_packed++; + } +}); + +$push -> finish; +is $push -> unpack_ok, 1; +ok ($total_packed > 0); + +$push = undef; +$remote = undef; +$local_repo = undef; + +remove_tree $local_path; +ok ! -e $local_path; + +my $local_url; +if ($^O eq 'MSWin32') { + $local_url = "file:///$local_path"; +} else { + $local_url = "file://$local_path"; +} +$local_repo = Git::Raw::Repository -> init($local_path, 1); +$remote = Git::Raw::Remote -> create_anonymous($repo, $local_url, undef); + +my $updated_ref; + +$push = Git::Raw::Push -> new($remote); +$push -> add_refspec("refs/heads/master:"); +$push -> callbacks({ + 'pack_progress' => sub { + my ($stage, $current, $total) = @_; + + is $stage, 0; + is $total, 0; + ok ($current > $total_packed); + $total_packed++; + }, + 'status' => sub { + my ($ref, $msg) = @_; + + ok (defined($ref)); + ok (!defined($msg)); + $updated_ref = $ref; + } +}); + +$total_packed = 0; +$push -> finish; +is $push -> unpack_ok, 1; +ok ($total_packed > 0); +is $updated_ref, "refs/heads/master"; + +$push -> update_tips; + +remove_tree $local_path; +ok ! -e $local_path; + +unless ($ENV{NETWORK_TESTING} or $ENV{RELEASE_TESTING}) { + diag('remote push tests require network'); + done_testing; + exit; +} + +my $remote_path = File::Spec -> rel2abs('t/test_repo'); +my $remote_url = "ssh://$ENV{USER}\@localhost$remote_path"; +$path = File::Spec -> rel2abs('t/test_repo_ssh'); + +my $credentials = sub { + my ($url, $user) = @_; + + my $ssh_dir = File::Spec -> catfile($ENV{HOME}, '.ssh'); + ok -e $ssh_dir; + + my $public_key = File::Spec -> catfile($ssh_dir, 'id_rsa.pub'); + my $private_key = File::Spec -> catfile($ssh_dir, 'id_rsa'); + ok -f $public_key; + ok -f $private_key; + + return Git::Raw::Cred -> sshkey($user, $public_key, $private_key); +}; + +$repo = Git::Raw::Repository -> clone($remote_url, $path, { + 'callbacks' => { + 'credentials' => $credentials + } +}); + +ok !$repo -> is_empty; +@remotes = $repo -> remotes; + +my $config = $repo -> config; +$config -> str('user.name', 'some user'); +$config -> str('user.email', 'someuser@somewhere.com'); + +my $branch = Git::Raw::Branch -> create($repo, "ssh_branch", $repo -> head -> target); +isa_ok $branch, 'Git::Raw::Branch'; + +$repo -> checkout($repo -> head($branch), { + 'checkout_strategy' => { + 'safe_create' => 1 + } +}); + +my $file = $repo -> workdir . 'file_on_ssh_branch'; +write_file($file, 'this is a test'); + +my $index = $repo -> index; +$index -> add('file_on_ssh_branch'); +$index -> write; + +my $me = Git::Raw::Signature -> default($repo); +my $commit = $repo -> commit("commit on file_on_ssh_branch\n", $me, $me, [$branch -> target], + $repo -> lookup($index -> write_tree)); + +is scalar(@remotes), 1; +$remote = shift @remotes; + +my ($credentials_fired, $sideband_fired, $update_tips_fired) = (0, 0, 0); +$remote -> callbacks({ + 'credentials' => sub { + $credentials_fired = 1; + return &{$credentials}(@_); + }, + 'sideband_progress' => sub { + my ($msg) = @_; + + like $msg, qr/pre-receive hook/; + $sideband_fired = 1; + }, + 'update_tips' => sub { + my ($ref, $a, $b) = @_; + + is $ref, 'refs/remotes/origin/ssh_branch'; + is $a, '0' x 40; + isnt $a, $b; + $update_tips_fired = 1; + } +}); + +$remote -> connect('push'); + +$push = Git::Raw::Push -> new($remote); +$push -> add_refspec("refs/heads/ssh_branch:"); + +my ($pack_progress_fired, $transfer_progress_fired, $status_fired) = (0, 0, 0); +$push -> callbacks({ + 'pack_progress' => sub { + my ($stage, $current, $total) = @_; + + $pack_progress_fired = 1; + }, + 'transfer_progress' => sub { + my ($current, $total, $bytes) = @_; + + $transfer_progress_fired = 1; + }, + 'status' => sub { + my ($ref, $msg) = @_; + + is $ref, 'refs/heads/ssh_branch'; + ok !defined($msg); + $status_fired = 1; + } +}); + +# setup a pre-receive hook that just print out a message +my $pre_receive_content = <<'EOS'; +#!/usr/bin/env perl + +$|++; + +print STDERR "This is from the pre-receive hook!"; +exit(0); +EOS + +my $pre_receive_file = File::Spec->catfile ($remote_path, '.git', 'hooks', 'pre-receive'); +make_path dirname($pre_receive_file); +ok -e dirname($pre_receive_file); + +write_file($pre_receive_file, $pre_receive_content); + +ok -e $pre_receive_file; +chmod 0755, $pre_receive_file; + +$push -> finish; +is $push -> unpack_ok, 1; + +is $sideband_fired, 1; +is $credentials_fired, 1; +is $pack_progress_fired, 1; +is $transfer_progress_fired, 1; +is $status_fired, 1; + +is $update_tips_fired, 0; +$push -> update_tips; +is $update_tips_fired, 1; + +@remotes = (); +$repo = undef; + +remove_tree $path; +ok ! -e $path; + +done_testing; diff --git a/t/20-pathspec.t b/t/20-pathspec.t new file mode 100644 index 00000000..5ec5163e --- /dev/null +++ b/t/20-pathspec.t @@ -0,0 +1,138 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Copy; +use File::Slurp; +use Cwd qw(abs_path); +use File::Path 2.07 qw(make_path remove_tree); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my @status = $repo->status(); + +ok (!eval { Git::Raw::PathSpec -> new }); +my $error = $@; +isa_ok $error, 'Git::Raw::Error'; +is $error -> code, Git::Raw::Error -> USAGE; +is $error -> category, Git::Raw::Error::Category -> INTERNAL; + +ok (!eval { Git::Raw::PathSpec -> new($repo) }); +$error = $@; +isa_ok $error, 'Git::Raw::Error'; + +my $spec = Git::Raw::PathSpec -> new('blah'); +isa_ok $spec, 'Git::Raw::PathSpec'; + +my $list; + +ok (!eval { $spec -> match('') }); +$error = $@; +isa_ok $error, 'Git::Raw::Error'; +is $error -> code, Git::Raw::Error -> USAGE; +is $error -> category, Git::Raw::Error::Category -> INTERNAL; + +ok (!eval { $list = $spec -> match($repo, { + 'flags' => { + 'no_match_error' => 1 + } +}) }); + +$list = $spec -> match($repo); +isa_ok $list, 'Git::Raw::PathSpec::MatchList'; + +is $list -> count, 0; +is $list -> failed_count, 0; + +$list = $spec -> match($repo, { + 'flags' => { + 'find_failures' => 1 + } +}); + +is $list -> count, 0; +is $list -> failed_count, 1; + +my @failures = $list -> failed_entries; +is scalar(@failures), 1; +my $failure = shift @failures; +is $failure, 'blah'; + +$spec = Git::Raw::PathSpec -> new('t*'); +$list = $spec -> match($repo); +is $list -> count, 2; + +my @entries = $list -> entries; +is scalar(@entries), 2; +is_deeply [ @entries ], ['test', 'test2']; + +$list = $spec -> match($repo -> index); +is $list -> count, 2; + +$spec = Git::Raw::PathSpec -> new('t*', 'untra*'); +$list = $spec -> match($repo, { + 'flags' => { + 'find_failures' => 1 + } +}); + +is $list -> count, 2; +is $list -> failed_count, 1; + +$spec = Git::Raw::PathSpec -> new('T*'); +$list = $spec -> match($repo, { + 'flags' => { + 'find_failures' => 1, + 'ignore_case' => 1 + } +}); + +is $list -> count, 2; + +my $filter_branch = Git::Raw::Branch -> lookup($repo, 'filter_branch', 1); +isa_ok $filter_branch, 'Git::Raw::Branch'; + +$spec = Git::Raw::PathSpec -> new('T*', 'f*'); +$list = $spec -> match($filter_branch -> target -> tree, { + 'flags' => { + 'ignore_case' => 1 + } +}); + +@entries = $list -> entries; +is $list -> count, 3; +is_deeply [ @entries ], ['filterfile', 'test', 'test2']; + +my $some_branch = Git::Raw::Branch -> lookup($repo, 'some_branch', 1); +isa_ok $some_branch, 'Git::Raw::Branch'; +isa_ok $some_branch, 'Git::Raw::Reference'; +my $commit = $some_branch -> target; +isa_ok $commit, 'Git::Raw::Commit'; + +$list = $spec -> match($commit -> tree, { + 'flags' => { + 'ignore_case' => 1 + } +}); +is $list -> count, 3; + +@entries = $list -> entries; +is_deeply [ @entries ], ['test', 'test2', 'test3/under/the/tree/test3']; + +$spec = Git::Raw::PathSpec -> new('*test*'); +$list = $spec -> match($commit -> tree); +is $list -> count, 3; + +@entries = $list -> entries; +is_deeply [ @entries ], ['test', 'test2', 'test3/under/the/tree/test3']; + +$spec = Git::Raw::PathSpec -> new('**/test*'); +$list = $spec -> match($commit -> tree); +is $list -> count, 3; + +@entries = $list -> entries; +is_deeply [ @entries ], ['test', 'test2', 'test3/under/the/tree/test3']; + +done_testing; diff --git a/t/21-cherrypick.t b/t/21-cherrypick.t new file mode 100644 index 00000000..5e258929 --- /dev/null +++ b/t/21-cherrypick.t @@ -0,0 +1,135 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $initial_head = $repo -> head; +my $branch = $repo -> branch('cbranch', $initial_head -> target); +my $cherry_pick_branch = $repo -> branch('cherry_pick_branch', $initial_head -> target); + +$repo -> checkout($repo -> head($branch), { + 'checkout_strategy' => { + 'safe' => 1 + } +}); + +my $file1 = $repo -> workdir . 'cherry_file'; +write_file($file1, 'this is cherry_file'); + +my $index = $repo -> index; +$index -> add('cherry_file'); +$index -> write; + +is_deeply $repo -> status -> {'cherry_file'} -> {'flags'}, ['index_new']; + +my $me = Git::Raw::Signature -> default($repo); +my $commit1 = $repo -> commit("commit1 on cbranch\n", $me, $me, [$branch -> target], + $repo -> lookup($index -> write_tree)); + +is $repo -> status -> {'cherry_file'}, undef; + +write_file($file1, "this is cherry_file\nwith some more modifications\nand some more"); +$index -> add('cherry_file'); +$index -> write; + +is_deeply $repo -> status -> {'cherry_file'} -> {'flags'}, ['index_modified']; + +my $commit2 = $repo -> commit("commit2 on cbranch\n", $me, $me, [$commit1], + $repo -> lookup($index -> write_tree)); + +is $repo -> status -> {'cherry_file'}, undef; + +$repo -> checkout($repo -> head($cherry_pick_branch), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +isnt -f $file1, 1; +is $repo -> status -> {'cherry_file'}, undef; + +$repo -> cherry_pick($commit1); + +is_deeply $repo -> status -> {'cherry_file'} -> {'flags'}, ['index_new']; +is $index -> has_conflicts, 0; + +ok (!eval { $repo -> cherry_pick($commit2) }); + +my $c_commit1 = $repo -> commit("commit1 on cbranch\n", $me, $me, [$cherry_pick_branch -> target], + $repo -> lookup($index -> write_tree)); + +is $repo -> status -> {'cherry_file'}, undef; + +my $cherry_pick_conflict_branch = $repo -> branch('cherry_pick_conflict_branch', $c_commit1); + +$repo -> cherry_pick($commit2); +is_deeply $repo -> status -> {'cherry_file'} -> {'flags'}, ['index_modified']; +is $index -> has_conflicts, 0; + +ok (!eval { $repo -> cherry_pick($commit2) }); + +my $c_commit2 = $repo -> commit("commit2 on cbranch\n", $me, $me, [$c_commit1], + $repo -> lookup($index -> write_tree)); + +is $branch -> target -> tree -> id, $cherry_pick_branch -> target -> tree -> id; + +$repo -> cherry_pick($commit2); +is $index -> has_conflicts, 0; +is $repo -> state, "cherry_pick"; +$repo -> state_cleanup; +is $repo -> state, "none"; + +my $head = $repo -> head($cherry_pick_conflict_branch); +$repo -> checkout($head -> target -> tree, { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +$index -> read(1); +is $repo -> status -> {'cherry_file'}, undef; + +write_file($file1, "this is cherry_file\nwith some conflict producing modifications"); +$index -> add('cherry_file'); +$index -> write; + +my $conflict_commit1 = $repo -> commit("conflict commit on cbranch\n", $me, $me, [$cherry_pick_conflict_branch -> target], + $repo -> lookup($index -> write_tree)); + +ok (!eval { $repo -> cherry_pick($commit2, {}, {}, 9999) }); +$repo -> cherry_pick($commit2, {}, {}, 0); +is $index -> has_conflicts, 1; + +write_file($file1, "resolved!"); +$index -> add('cherry_file'); +is $index -> has_conflicts, 0; + +my $conflict_commit2 = $repo -> commit("commit2 on cbranch\n", $me, $me, [$conflict_commit1], + $repo -> lookup($index -> write_tree)); + +is $index -> has_conflicts, 0; +is $repo -> status -> {'cherry_file'}, undef; +isnt $branch -> target -> tree -> id, $cherry_pick_conflict_branch -> target -> tree -> id; + +my $master = Git::Raw::Branch -> lookup($repo, 'master', 1); +$index -> read_tree($master -> target -> tree); +$index -> write; + +$repo -> checkout($master -> target -> tree, { + 'checkout_strategy' => { + 'safe' => 1 + } +}); + +$head = $repo -> head($master); + +is $index -> has_conflicts, 0; +is $repo -> status -> {'cherry_file'}, undef; + +done_testing; diff --git a/t/22-revert.t b/t/22-revert.t new file mode 100644 index 00000000..80f1feac --- /dev/null +++ b/t/22-revert.t @@ -0,0 +1,68 @@ +#!perl + +use Test::More; + +use Git::Raw; +use File::Slurp; +use Cwd qw(abs_path); + +my $path = abs_path('t/test_repo'); +my $repo = Git::Raw::Repository -> open($path); + +my $initial_head = $repo -> head; +my $branch = $repo -> branch('rbranch', $initial_head -> target); + +$repo -> checkout($repo -> head($branch), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +my $file1 = $repo -> workdir . 'revert_file'; +write_file($file1, 'this is revert_file'); + +my $index = $repo -> index; +is $index -> has_conflicts, 0; +$index -> add('revert_file'); +$index -> write; + +is_deeply $repo -> status -> {'revert_file'} -> {'flags'}, ['index_new']; + +my $me = Git::Raw::Signature -> default($repo); +my $commit1 = $repo -> commit("commit1 on rbranch\n", $me, $me, [$branch -> target], + $repo -> lookup($index -> write_tree)); + +is $repo -> status -> {'revert_file'}, undef; + +write_file($file1, "this is revert_file\nwith some more modifications\nand some more"); +$index -> add('revert_file'); +$index -> write; + +is_deeply $repo -> status -> {'revert_file'} -> {'flags'}, ['index_modified']; + +my $commit2 = $repo -> commit("commit2 on rbranch\n", $me, $me, [$commit1], + $repo -> lookup($index -> write_tree)); + +is $repo -> status -> {'revert_file'}, undef; + +my $revert_branch = $repo -> branch('revert_branch', $commit2); +$repo -> checkout($repo -> head($revert_branch), { + 'checkout_strategy' => { + 'force' => 1 + } +}); + +ok (!eval { $repo -> revert($commit2, {}, {}, 9999) }); +$repo -> revert($commit2, {}, {}, 0); + +is_deeply $repo -> status -> {'revert_file'} -> {'flags'}, ['index_modified']; + +is read_file($file1), 'this is revert_file'; + +my $revert_commit = $repo -> commit("revert commit1\n", $me, $me, [$commit2], + $repo -> lookup($index -> write_tree)); + +is_deeply $repo -> status -> {'revert_file'}, undef; +is $revert_commit -> tree -> id, $commit1 -> tree -> id; + +done_testing; diff --git a/t/23-diagnostics.t b/t/23-diagnostics.t new file mode 100644 index 00000000..29f2f3f6 --- /dev/null +++ b/t/23-diagnostics.t @@ -0,0 +1,48 @@ +#!perl + +use Test::More; + +use Git::Raw; + +my $count; +my %features; + +ok (eval { Git::Raw -> features }); + +ok (eval { $count = Git::Raw -> features }); +is $count, 3; + +ok (eval { %features = Git::Raw -> features }); +is scalar(keys %features), 3; + +ok exists $features{'threads'}; +ok exists $features{'https'}; +ok exists $features{'ssh'}; + +diag("Build info:"); +diag("Built with threads support: $features{'threads'}"); +diag("Built with HTTPS support: $features{'https'}"); +diag("Built with SSH support: $features{'ssh'}"); + +# constants +is 0, Git::Raw::Error->OK; +is -1, Git::Raw::Error->ERROR; +is -3, Git::Raw::Error->ENOTFOUND; +is -4, Git::Raw::Error->EEXISTS; +is -5, Git::Raw::Error->EAMBIGUOUS; +is -6, Git::Raw::Error->EBUFS; +is -7, Git::Raw::Error->EUSER; +is -8, Git::Raw::Error->EBAREREPO; +is -9, Git::Raw::Error->EUNBORNBRANCH; +is -10, Git::Raw::Error->EUNMERGED; +is -11, Git::Raw::Error->ENONFASTFORWARD; +is -12, Git::Raw::Error->EINVALIDSPEC; +is -13, Git::Raw::Error->EMERGECONFLICT; +is -14, Git::Raw::Error->ELOCKED; +is -15, Git::Raw::Error->EMODIFIED; +is -30, Git::Raw::Error->PASSTHROUGH; +is -31, Git::Raw::Error->ITEROVER; + +ok (!eval { Git::Raw::Error->RANDOM_CONSTANT }); + +done_testing; diff --git a/t/99-cleanup.t b/t/99-cleanup.t new file mode 100644 index 00000000..fac6f6a9 --- /dev/null +++ b/t/99-cleanup.t @@ -0,0 +1,13 @@ +#!perl + +use Test::More; + +use Cwd qw(abs_path); +use File::Path qw(rmtree); + +my $path = abs_path('t').'/test_repo'; + +rmtree $path; +ok ! -e $path; + +done_testing; diff --git a/typemap b/typemap new file mode 100644 index 00000000..d4af7b48 --- /dev/null +++ b/typemap @@ -0,0 +1,46 @@ +Blame T_GIT_REF +Blame_Hunk T_GIT_REF +Blob T_GIT_REF +Branch T_GIT_REF +Commit T_GIT_REF +Config T_GIT_REF +Cred T_GIT_REF +Diff T_GIT_REF +Diff_Delta T_GIT_REF +Diff_File T_GIT_REF +Diff_Hunk T_GIT_REF +Diff_Stats T_GIT_REF +Error T_GIT_REF +Filter T_GIT_REF +Filter_Source T_GIT_REF +Index T_GIT_REF +Index_Entry T_GIT_REF +Patch T_GIT_REF +PathSpec T_GIT_REF +PathSpec_MatchList T_GIT_REF +Push T_GIT_REF +Reflog T_GIT_REF +RefSpec T_GIT_REF +Reference T_GIT_REF +Remote T_GIT_REF +Repository T_GIT_REF +Signature T_GIT_REF +Tag T_GIT_REF +Tree T_GIT_REF +Tree_Builder T_GIT_REF +Tree_Entry T_GIT_REF +Walker T_GIT_REF + +OUTPUT +T_GIT_REF + sv_setref_pv($arg, \"Git::Raw::${(my $ntt = $ntype) =~ s/_/::/g;\$ntt}\", (void *) $var); + +INPUT +T_GIT_REF + if (sv_isobject($arg) && + sv_derived_from($arg, \"Git::Raw::${(my $ntt = $ntype) =~ s/_/::/g;\$ntt}\")) { + $var = INT2PTR($type, SvIV((SV *) SvRV($arg))); + } else { + $var = NULL; + croak_usage(\"$var is not of type Git::Raw::${(my $ntt = $ntype) =~ s/_/::/g;\$ntt}\"); + } diff --git a/xs/Blame.xs b/xs/Blame.xs new file mode 100644 index 00000000..6632a90e --- /dev/null +++ b/xs/Blame.xs @@ -0,0 +1,110 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Blame + +SV * +hunk_count(self) + Blame self + + CODE: + RETVAL = newSVuv(git_blame_get_hunk_count(self)); + + OUTPUT: RETVAL + +void +hunks(self, ...) + SV *self + + PROTOTYPE: $;$ + + PREINIT: + size_t start = 0, end, num_hunks; + + PPCODE: + num_hunks = git_blame_get_hunk_count(GIT_SV_TO_PTR(Blame, self)); + + if (items == 2) { + SV *index = ST(1); + + if (!SvIOK(index) || SvIV(index) < 0) + croak_usage("Invalid type for 'index'"); + + start = SvUV(index); + if (start >= num_hunks) + croak_usage("index %" PRIuZ " out of range", start); + + num_hunks = 1; + } + + end = start + num_hunks; + + for (; start < end; ++start) { + SV *hunk; + + const git_blame_hunk *h = + git_blame_get_hunk_byindex(GIT_SV_TO_PTR(Blame, self), + start); + + GIT_NEW_OBJ_WITH_MAGIC( + hunk, "Git::Raw::Blame::Hunk", + (Blame_Hunk) h, SvRV(self) + ); + + mXPUSHs(hunk); + } + + XSRETURN(num_hunks); + +SV * +buffer(self, buffer) + SV *self + SV *buffer + + PREINIT: + int rc; + + Blame blame; + + const char *text; + STRLEN len; + + CODE: + text = git_ensure_pv_with_len(buffer, "buffer", &len); + + rc = git_blame_buffer( + &blame, GIT_SV_TO_PTR(Blame, self), + text, len); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Blame", + blame, SvRV(self)); + OUTPUT: RETVAL + +SV * +line(self, line_no) + SV *self + size_t line_no + + PREINIT: + const git_blame_hunk *h; + + CODE: + if ((h = git_blame_get_hunk_byline( + GIT_SV_TO_PTR(Blame, self), line_no))) { + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Blame::Hunk", + (Blame_Hunk) h, SvRV(self) + ); + } else { + RETVAL = &PL_sv_undef; + } + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_blame_free(GIT_SV_TO_PTR(Blame, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Blame/Hunk.xs b/xs/Blame/Hunk.xs new file mode 100644 index 00000000..80909641 --- /dev/null +++ b/xs/Blame/Hunk.xs @@ -0,0 +1,71 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Blame::Hunk + +SV * +lines_in_hunk(self) + Blame_Hunk self + + CODE: + RETVAL = newSVuv(self -> lines_in_hunk); + + OUTPUT: RETVAL + +SV * +final_commit_id(self) + Blame_Hunk self + + CODE: + RETVAL = git_oid_to_sv(&self -> final_commit_id); + + OUTPUT: RETVAL + +SV * +final_start_line_number(self) + Blame_Hunk self + + CODE: + RETVAL = newSVuv(self -> final_start_line_number); + + OUTPUT: RETVAL + +SV * +orig_commit_id(self) + Blame_Hunk self + + CODE: + RETVAL = git_oid_to_sv(&self -> orig_commit_id); + + OUTPUT: RETVAL + +SV * +orig_start_line_number(self) + Blame_Hunk self + + CODE: + RETVAL = newSVuv(self -> orig_start_line_number); + + OUTPUT: RETVAL + +SV * +orig_path(self) + Blame_Hunk self + + CODE: + RETVAL = newSVpv(self -> orig_path, 0); + + OUTPUT: RETVAL + +SV * +boundary(self) + Blame_Hunk self + + CODE: + RETVAL = newSViv(self -> boundary); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Blob.xs b/xs/Blob.xs new file mode 100644 index 00000000..0198700e --- /dev/null +++ b/xs/Blob.xs @@ -0,0 +1,124 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Blob + +SV * +create(class, repo, buffer) + SV *class + SV *repo + SV *buffer + + PREINIT: + int rc; + + Blob blob; + git_oid oid; + + STRLEN len; + const char *buffer_str; + + Repository repo_ptr; + + CODE: + buffer_str = git_ensure_pv_with_len(buffer, "buffer", &len); + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + + rc = git_blob_create_frombuffer(&oid, repo_ptr -> repository, buffer_str, len); + git_check_error(rc); + + rc = git_blob_lookup(&blob, repo_ptr -> repository, &oid); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), blob, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +lookup(class, repo, id) + SV *class + SV *repo + SV *id + + PREINIT: + int rc; + + Blob blob; + git_oid oid; + + STRLEN len; + const char *id_str; + + Repository repo_ptr; + + CODE: + id_str = git_ensure_pv_with_len(id, "id", &len); + + rc = git_oid_fromstrn(&oid, id_str, len); + git_check_error(rc); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_blob_lookup_prefix(&blob, repo_ptr -> repository, &oid, len); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), blob, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +content(self) + Blob self + + PREINIT: + git_off_t len; + + CODE: + len = git_blob_rawsize(self); + RETVAL = newSVpv(git_blob_rawcontent(self), (STRLEN) len); + + OUTPUT: RETVAL + +SV * +size(self) + Blob self + + CODE: + RETVAL = newSVuv(git_blob_rawsize(self)); + + OUTPUT: RETVAL + +SV * +id(self) + Blob self + + CODE: + RETVAL = git_oid_to_sv(git_blob_id(self)); + + OUTPUT: RETVAL + +SV * +is_tree(self) + SV *self + + CODE: + RETVAL = newSVuv(0); + + OUTPUT: RETVAL + +SV * +is_blob(self) + SV *self + + CODE: + RETVAL = newSVuv(1); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_blob_free(GIT_SV_TO_PTR(Blob, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Branch.xs b/xs/Branch.xs new file mode 100644 index 00000000..a5bb60cb --- /dev/null +++ b/xs/Branch.xs @@ -0,0 +1,210 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Branch + +BOOT: +{ + AV *isa = get_av("Git::Raw::Branch::ISA", 1); + av_push(isa, newSVpv("Git::Raw::Reference", 0)); +} + +SV * +create(class, repo, name, target) + SV *class + SV *repo + SV *name + SV *target + + PREINIT: + int rc; + + Commit obj; + Reference ref; + Repository repo_ptr; + Signature sig; + + INIT: + obj = (Commit) git_sv_to_obj(target); + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_signature_default(&sig, repo_ptr -> repository); + git_check_error(rc); + + rc = git_branch_create( + &ref, repo_ptr -> repository, + SvPVbyte_nolen(name), obj, 0, sig, NULL + ); + + git_signature_free(sig); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), ref, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +lookup(class, repo, name, is_local) + SV *class + SV *repo + SV *name + bool is_local + + PREINIT: + int rc; + Reference branch; + Repository repo_ptr; + + git_branch_t type = is_local ? + GIT_BRANCH_LOCAL : + GIT_BRANCH_REMOTE ; + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_branch_lookup( + &branch, repo_ptr -> repository, + SvPVbyte_nolen(name), type + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), branch, SvRV(repo) + ); + + OUTPUT: RETVAL + +void +move(self, name, force) + SV *self + SV *name + bool force + + PREINIT: + int rc; + + Signature sig; + + Branch new_branch; + Branch old_branch; + + INIT: + old_branch = GIT_SV_TO_PTR(Branch, self); + + CODE: + rc = git_signature_default(&sig, git_reference_owner( + GIT_SV_TO_PTR(Reference, self))); + git_check_error(rc); + + rc = git_branch_move( + &new_branch, old_branch, SvPVbyte_nolen(name), force, + sig, NULL + ); + + git_signature_free(sig); + git_check_error(rc); + +SV * +upstream(self) + SV *self + + PREINIT: + int rc; + + Reference ref; + + CODE: + rc = git_branch_upstream(&ref, GIT_SV_TO_PTR(Branch, self)); + if (rc == GIT_ENOTFOUND) + XSRETURN_UNDEF; + + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Reference", ref, GIT_SV_TO_MAGIC(self) + ); + + OUTPUT: RETVAL + +SV * +upstream_name(self) + SV *self + + PREINIT: + int rc; + + Reference ref; + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + RETVAL = &PL_sv_undef; + + ref = GIT_SV_TO_PTR(Reference, self); + + rc = git_branch_upstream_name( + &buf, + git_reference_owner(ref), + git_reference_name(ref) + ); + + if (rc == GIT_OK) + RETVAL = newSVpv(buf.ptr, buf.size); + + git_buf_free(&buf); + git_check_error(rc); + + OUTPUT: RETVAL + +SV * +remote_name(self) + SV *self + + PREINIT: + int rc; + + Reference ref; + git_buf upstream = GIT_BUF_INIT_CONST(NULL, 0); + git_buf remote = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + RETVAL = &PL_sv_undef; + + ref = GIT_SV_TO_PTR(Reference, self); + + rc = git_branch_upstream_name( + &upstream, + git_reference_owner(ref), + git_reference_name(ref) + ); + + if (rc == GIT_OK) { + rc = git_branch_remote_name( + &remote, + git_reference_owner(ref), + upstream.ptr); + + if (rc == GIT_OK) + RETVAL = newSVpv(remote.ptr, remote.size); + } + + git_buf_free(&upstream); + git_buf_free(&remote); + git_check_error(rc); + + OUTPUT: RETVAL + +SV * +is_head(self) + Branch self + + CODE: + RETVAL = newSViv(git_branch_is_head(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_reference_free(GIT_SV_TO_PTR(Reference, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Commit.xs b/xs/Commit.xs new file mode 100644 index 00000000..f46f0ec1 --- /dev/null +++ b/xs/Commit.xs @@ -0,0 +1,329 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Commit + +SV * +create(class, repo, msg, author, committer, parents, tree, ...) + SV *class + SV *repo + SV *msg + Signature author + Signature committer + AV *parents + Tree tree + + PREINIT: + int rc; + + int count; + git_oid oid; + + Repository repo_ptr; + + const char *update_ref = "HEAD"; + + Commit commit, *commit_parents = NULL; + + CODE: + if (items > 7) { + SV *sv_update_ref = ST(7); + + if (SvOK(sv_update_ref)) + update_ref = git_ensure_pv(sv_update_ref, "update_ref"); + else + update_ref = NULL; + } + + count = av_len(parents) + 1; + + if (count > 0) { + int i; + SV *iter; + + Newx(commit_parents, count, git_commit *); + + for (i = 0; i < count; i++) { + iter = av_shift(parents); + + commit_parents[i] = GIT_SV_TO_PTR(Commit, iter); + } + } + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + + rc = git_commit_create( + &oid, repo_ptr -> repository, update_ref, author, committer, NULL, + git_ensure_pv(msg, "msg"), tree, count, + (const git_commit **) commit_parents + ); + + Safefree(commit_parents); + git_check_error(rc); + + rc = git_commit_lookup(&commit, repo_ptr -> repository, &oid); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), commit, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +lookup(class, repo, id) + SV *class + SV *repo + SV *id + + PREINIT: + int rc; + + git_oid oid; + + Commit commit; + Repository repo_ptr; + + STRLEN len; + const char *id_str; + + INIT: + id_str = git_ensure_pv_with_len(id, "id", &len); + + CODE: + rc = git_oid_fromstrn(&oid, id_str, len); + git_check_error(rc); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_commit_lookup_prefix(&commit, repo_ptr -> repository, &oid, len); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), commit, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +id(self) + Commit self + + CODE: + RETVAL = git_oid_to_sv(git_commit_id(self)); + + OUTPUT: RETVAL + +SV * +message(self) + Commit self + + PREINIT: + const char *msg; + + CODE: + msg = git_commit_message(self); + RETVAL = newSVpv(msg, 0); + + OUTPUT: RETVAL + +SV * +summary(self) + Commit self + + PREINIT: + const char *summary; + + CODE: + summary = git_commit_summary(self); + RETVAL = newSVpv(summary, 0); + + OUTPUT: RETVAL + +Signature +author(self) + Commit self + + PREINIT: + int rc; + Signature a, r; + + CODE: + a = (Signature) git_commit_author(self); + rc = git_signature_dup(&r, a); + git_check_error(rc); + + RETVAL = r; + + OUTPUT: RETVAL + +Signature +committer(self) + Commit self + + PREINIT: + int rc; + Signature c, r; + + CODE: + c = (Signature) git_commit_committer(self); + rc = git_signature_dup(&r, c); + git_check_error(rc); + + RETVAL = r; + + OUTPUT: RETVAL + +SV * +time(self) + Commit self + + PREINIT: + char *buf; + git_time_t time; + + CODE: + time = git_commit_time(self); + + Newx(buf, snprintf(NULL, 0, "%" PRId64, time) + 1, char); + sprintf(buf, "%" PRId64, time); + + RETVAL = newSVpv(buf, 0); + Safefree(buf); + + OUTPUT: RETVAL + +int +offset(self) + Commit self + + CODE: + RETVAL = git_commit_time_offset(self); + + OUTPUT: RETVAL + +SV * +tree(self) + SV *self + + PREINIT: + int rc; + + SV *repo; + Tree tree; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + + rc = git_commit_tree(&tree, GIT_SV_TO_PTR(Commit, self)); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC(RETVAL, "Git::Raw::Tree", tree, repo); + + OUTPUT: RETVAL + +AV * +parents(self) + SV *self + + PREINIT: + int rc; + + SV *repo; + int count, i; + + AV *parents; + Commit child; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + + child = GIT_SV_TO_PTR(Commit, self); + count = git_commit_parentcount(child); + + parents = newAV(); + + for (i = 0; i < count; i++) { + SV *tmp; + Commit parent; + + rc = git_commit_parent(&parent, child, i); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + tmp, "Git::Raw::Commit", parent, repo + ); + av_push(parents, tmp); + } + + RETVAL = parents; + + OUTPUT: RETVAL + +SV * +merge(self, commit, ...) + SV *self + Commit commit + + PROTOTYPE: $;$;$ + PREINIT: + int rc; + + SV *repo; + Repository repo_ptr; + + Index index; + git_merge_options merge_opts = GIT_MERGE_OPTIONS_INIT; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + repo_ptr = INT2PTR(Repository, SvIV((SV *) repo)); + + if (items == 3) { + HV *opts = git_ensure_hv(ST(2), "merge_opts"); + git_hv_to_merge_opts(opts, &merge_opts); + } + + rc = git_merge_commits( + &index, + repo_ptr -> repository, + GIT_SV_TO_PTR(Commit, self), + commit, &merge_opts); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Index", index, repo + ); + + OUTPUT: RETVAL + +SV * +ancestor(self, gen) + SV *self + unsigned int gen + + PREINIT: + int rc; + + SV *repo; + Commit anc; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + + rc = git_commit_nth_gen_ancestor( + &anc, + GIT_SV_TO_PTR(Commit, self), + gen + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Commit", anc, repo + ); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_commit_free(GIT_SV_TO_PTR(Commit, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Config.xs b/xs/Config.xs new file mode 100644 index 00000000..1280f7c1 --- /dev/null +++ b/xs/Config.xs @@ -0,0 +1,185 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Config + +Config +new(class) + SV *class + + PREINIT: + int rc; + Config cfg; + + CODE: + rc = git_config_new(&cfg); + git_check_error(rc); + + RETVAL = cfg; + + OUTPUT: RETVAL + +void +add_file(self, path, level) + Config self + SV *path + int level + + PREINIT: + int rc; + + CODE: + rc = git_config_add_file_ondisk( + self, git_ensure_pv(path, "path"), level, 0 + ); + git_check_error(rc); + +SV * +bool(self, name, ...) + Config self + SV *name + + PROTOTYPE: $$;$ + + PREINIT: + int rc, value; + + const char *id = NULL; + + CODE: + id = git_ensure_pv(name, "name"); + + if (items == 3) { + value = git_ensure_iv(ST(2), "value"); + + rc = git_config_set_bool(self, id, value); + } else { + if ((rc = git_config_get_bool(&value, self, id)) == GIT_ENOTFOUND) + XSRETURN_UNDEF; + } + + git_check_error(rc); + RETVAL = newSViv(value); + + OUTPUT: RETVAL + +SV * +int(self, name, ...) + Config self + SV *name + + PROTOTYPE: $$;$ + + PREINIT: + int rc, value; + + const char *id = NULL; + + CODE: + id = git_ensure_pv(name, "name"); + + if (items == 3) { + value = git_ensure_iv(ST(2), "value"); + + rc = git_config_set_int32(self, id, value); + } else { + if ((rc = git_config_get_int32(&value, self, id)) == GIT_ENOTFOUND) + XSRETURN_UNDEF; + } + + git_check_error(rc); + RETVAL = newSViv(value); + + OUTPUT: RETVAL + +SV * +str(self, name, ...) + Config self + SV *name + + PROTOTYPE: $$;$ + + PREINIT: + int rc; + const char *value; + + const char *id = NULL; + CODE: + id = git_ensure_pv(name, "name"); + + if (items == 3) { + value = git_ensure_pv(ST(2), "value"); + + rc = git_config_set_string(self, id, value); + } else { + if ((rc = git_config_get_string(&value, self, id)) == GIT_ENOTFOUND) + XSRETURN_UNDEF; + } + + git_check_error(rc); + RETVAL = newSVpv(value, 0); + + OUTPUT: RETVAL + +void +foreach(self, cb) + Config self + SV *cb + + PREINIT: + int rc; + + git_foreach_payload payload = { NULL, NULL, NULL, NULL }; + + CODE: + payload.cb = cb; + + rc = git_config_foreach( + self, git_config_foreach_cbb, &payload + ); + + if (rc != GIT_EUSER) + git_check_error(rc); + +void +refresh(self) + Config self + + PREINIT: + int rc; + + CODE: + rc = git_config_refresh(self); + git_check_error(rc); + +Config +default(class) + SV *class + + PREINIT: + int rc; + Config cfg; + + CODE: + rc = git_config_open_default(&cfg); + git_check_error(rc); + + RETVAL = cfg; + + OUTPUT: RETVAL + +void +delete(self, name) + Config self + SV *name + + PREINIT: + int rc; + + CODE: + rc = git_config_delete_entry(self, git_ensure_pv(name, "name")); + git_check_error(rc); + +void +DESTROY(self) + Config self + + CODE: + git_config_free(self); diff --git a/xs/Cred.xs b/xs/Cred.xs new file mode 100644 index 00000000..0d60a693 --- /dev/null +++ b/xs/Cred.xs @@ -0,0 +1,127 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Cred + +Cred +userpass(class, user, pass) + SV *class + SV *user + SV *pass + + PREINIT: + int rc; + + Cred out; + git_cred *cred; + + CODE: + rc = git_cred_userpass_plaintext_new( + &cred, + git_ensure_pv(user, "user"), + git_ensure_pv(pass, "pass") + ); + git_check_error(rc); + + Newxz(out, 1, git_raw_cred); + out -> cred = cred; + RETVAL = out; + + OUTPUT: RETVAL + +Cred +sshkey(class, user, public, private, ...) + SV *class + SV *user + SV *public + SV *private + + PROTOTYPE: $$$$;$ + PREINIT: + int rc; + + Cred out; + git_cred *cred; + const char *passphrase = NULL; + + CODE: + if (items == 5) + passphrase = git_ensure_pv(ST(4), "pass"); + + rc = git_cred_ssh_key_new( + &cred, + git_ensure_pv(user, "user"), + git_ensure_pv(public, "public"), + git_ensure_pv(private, "private"), + passphrase + ); + git_check_error(rc); + + Newxz(out, 1, git_raw_cred); + out -> cred = cred; + RETVAL = out; + + OUTPUT: RETVAL + +Cred +sshagent(class, user) + SV *class + SV *user + + PREINIT: + int rc; + + Cred out; + git_cred *cred; + + CODE: + rc = git_cred_ssh_key_from_agent( + &cred, + git_ensure_pv(user, "user") + ); + git_check_error(rc); + + Newxz(out, 1, git_raw_cred); + out -> cred = cred; + RETVAL = out; + + OUTPUT: RETVAL + +Cred +sshinteractive(class, user, callback) + SV *class + SV *user + SV *callback + + PREINIT: + int rc; + + Cred out; + git_cred *cred; + + CODE: + rc = git_cred_ssh_interactive_new( + &cred, + git_ensure_pv(user, "user"), + (git_cred_ssh_interactive_callback) git_ssh_interactive_cbb, + git_ensure_cv(callback, "callback")); + git_check_error(rc); + + Newxz(out, 1, git_raw_cred); + out -> cred = cred; + out -> callback = callback; + SvREFCNT_inc(out -> callback); + + RETVAL = out; + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + PREINIT: + Cred cred; + + CODE: + cred = GIT_SV_TO_PTR(Cred, self); + + SvREFCNT_dec(cred -> callback); + Safefree(cred); diff --git a/xs/Diff.xs b/xs/Diff.xs new file mode 100644 index 00000000..8fe449bc --- /dev/null +++ b/xs/Diff.xs @@ -0,0 +1,154 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Diff + +void +merge(self, from) + Diff self + Diff from + + PREINIT: + int rc; + + CODE: + rc = git_diff_merge(self, from); + git_check_error(rc); + +void +print(self, format, callback) + Diff self + SV *format + SV *callback + + PREINIT: + int rc; + + const char *fmt_str; + git_diff_format_t fmt = GIT_DIFF_FORMAT_PATCH; + + CODE: + fmt_str = SvPVbyte_nolen(format); + + if (!strcmp(fmt_str, "patch")) + fmt = GIT_DIFF_FORMAT_PATCH; + else if (!strcmp(fmt_str, "patch_header")) + fmt = GIT_DIFF_FORMAT_PATCH_HEADER; + else if (!strcmp(fmt_str, "raw")) + fmt = GIT_DIFF_FORMAT_RAW; + else if (!strcmp(fmt_str, "name_only")) + fmt = GIT_DIFF_FORMAT_NAME_ONLY; + else if (!strcmp(fmt_str, "name_status")) + fmt = GIT_DIFF_FORMAT_NAME_STATUS; + else + croak_usage("Invalid format"); + + rc = git_diff_print(self, fmt, git_diff_cb, callback); + git_check_error(rc); + +SV * +delta_count(self) + Diff self + + CODE: + RETVAL = newSVuv(git_diff_num_deltas(self)); + + OUTPUT: RETVAL + +void +find_similar(self, ...) + Diff self + + PROTOTYPE: $;$ + PREINIT: + int rc; + + git_diff_find_options find_opts = GIT_DIFF_FIND_OPTIONS_INIT; + + CODE: + if (items == 2) { + SV *opt; + HV *hopt; + HV *opts; + + opts = git_ensure_hv(ST(1), "options"); + + if ((hopt = git_hv_hash_entry(opts, "flags"))) + find_opts.flags |= git_hv_to_diff_find_flag(hopt); + + if ((opt = git_hv_int_entry(opts, "rename_threshold"))) + find_opts.rename_threshold = SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "rename_from_rewrite_threshold"))) + find_opts.rename_from_rewrite_threshold = SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "copy_threshold"))) + find_opts.copy_threshold = SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "break_rewrite_threshold"))) + find_opts.break_rewrite_threshold = SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "rename_limit"))) + find_opts.rename_limit = SvIV(opt); + } + + rc = git_diff_find_similar(self, &find_opts); + git_check_error(rc); + +SV * +stats(self) + SV *self + + PREINIT: + int rc; + + Diff_Stats stats; + + CODE: + rc = git_diff_get_stats(&stats, GIT_SV_TO_PTR(Diff, self)); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Diff::Stats", stats, SvRV(self) + ); + + OUTPUT: RETVAL + +void +patches(self) + SV *self + + PREINIT: + int rc; + + Diff diff_ptr; + + size_t i, count, num_patches = 0; + + PPCODE: + diff_ptr = GIT_SV_TO_PTR(Diff, self); + + count = git_diff_num_deltas(diff_ptr); + for (i = 0; i < count; ++i) { + Patch patch; + + rc = git_patch_from_diff(&patch, diff_ptr, i); + git_check_error(rc); + + if (patch) { + SV *p; + + GIT_NEW_OBJ_WITH_MAGIC( + p, "Git::Raw::Patch", patch, SvRV(self) + ); + + mXPUSHs(p); + ++num_patches; + } + } + + XSRETURN(num_patches); + +void +DESTROY(self) + Diff self + + CODE: + git_diff_free(self); diff --git a/xs/Diff/Delta.xs b/xs/Diff/Delta.xs new file mode 100644 index 00000000..edbb516c --- /dev/null +++ b/xs/Diff/Delta.xs @@ -0,0 +1,104 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Diff::Delta + +SV * +status(self) + Diff_Delta self + + PREINIT: + const char *status = NULL; + + CODE: + if (self -> status == GIT_DELTA_UNMODIFIED) + status = "unmodified"; + else if (self -> status == GIT_DELTA_ADDED) + status = "added"; + else if (self -> status == GIT_DELTA_DELETED) + status = "deleted"; + else if (self -> status == GIT_DELTA_MODIFIED) + status = "modified"; + else if (self -> status == GIT_DELTA_RENAMED) + status = "renamed"; + else if (self -> status == GIT_DELTA_COPIED) + status = "copied"; + else if (self -> status == GIT_DELTA_IGNORED) + status = "ignored"; + else if (self -> status == GIT_DELTA_UNTRACKED) + status = "untracked"; + else if (self -> status == GIT_DELTA_TYPECHANGE) + status = "type_change"; + + RETVAL = newSVpv (status, 0); + + OUTPUT: RETVAL + +SV * +flags(self) + Diff_Delta self + + PREINIT: + AV *flags = newAV(); + + CODE: + if (self -> flags & GIT_DIFF_FLAG_BINARY) + av_push(flags, newSVpv("binary", 0)); + if (self -> flags & GIT_DIFF_FLAG_VALID_ID) + av_push(flags, newSVpv("valid_id", 0)); + + RETVAL = newRV_noinc((SV *) flags); + + OUTPUT: RETVAL + +SV * +similarity(self) + Diff_Delta self + + CODE: + RETVAL = newSVuv(self -> similarity); + + OUTPUT: RETVAL + +SV * +file_count(self) + Diff_Delta self + + CODE: + RETVAL = newSVuv(self -> nfiles); + + OUTPUT: RETVAL + +SV * +old_file(self) + SV *self + + PREINIT: + Diff_Delta self_ptr; + + CODE: + self_ptr = GIT_SV_TO_PTR(Diff::Delta, self); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Diff::File", &self_ptr -> old_file, SvRV(self)); + + OUTPUT: RETVAL + +SV * +new_file(self) + SV *self + + PREINIT: + Diff_Delta self_ptr; + + CODE: + self_ptr = GIT_SV_TO_PTR(Diff::Delta, self); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Diff::File", &self_ptr -> new_file, SvRV(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Diff/File.xs b/xs/Diff/File.xs new file mode 100644 index 00000000..39763cd1 --- /dev/null +++ b/xs/Diff/File.xs @@ -0,0 +1,77 @@ +MODULE = Git::Raw::Diff PACKAGE = Git::Raw::Diff::File + +SV * +id(self) + Diff_File self + + CODE: + RETVAL = git_oid_to_sv(&self -> id); + + OUTPUT: RETVAL + +SV * +path(self) + Diff_File self + + CODE: + RETVAL = newSVpv(self -> path, 0); + + OUTPUT: RETVAL + +SV * +size(self) + Diff_File self + + CODE: + RETVAL = newSVuv((size_t) self -> size); + + OUTPUT: RETVAL + +SV * +flags(self) + Diff_File self + + PREINIT: + AV *flags = newAV(); + + CODE: + if (self -> flags & GIT_DIFF_FLAG_BINARY) + av_push(flags, newSVpv("binary", 0)); + if (self -> flags & GIT_DIFF_FLAG_VALID_ID) + av_push(flags, newSVpv("valid_id", 0)); + + RETVAL = newRV_noinc((SV *) flags); + + OUTPUT: RETVAL + +SV * +mode(self) + Diff_File self + + PREINIT: + const char *mode = NULL; + + CODE: + if (self -> mode == GIT_FILEMODE_NEW) + mode = "new"; + else if (self -> mode == GIT_FILEMODE_TREE) + mode = "tree"; + else if (self -> mode == GIT_FILEMODE_BLOB) + mode = "blob"; + else if (self -> mode == GIT_FILEMODE_BLOB_EXECUTABLE) + mode = "blob_executable"; + else if (self -> mode == GIT_FILEMODE_LINK) + mode = "link"; + else if (self -> mode == GIT_FILEMODE_COMMIT) + mode = "commit"; + + RETVAL = newSVpv (mode, 0); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Diff/Hunk.xs b/xs/Diff/Hunk.xs new file mode 100644 index 00000000..4043bb05 --- /dev/null +++ b/xs/Diff/Hunk.xs @@ -0,0 +1,66 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Diff::Hunk + +SV * +old_start(self) + Diff_Hunk self + + CODE: + RETVAL = newSVuv(self -> old_start); + + OUTPUT: RETVAL + +SV * +old_lines(self) + Diff_Hunk self + + CODE: + RETVAL = newSVuv(self -> old_lines); + + OUTPUT: RETVAL + +SV * +new_start(self) + Diff_Hunk self + + CODE: + RETVAL = newSVuv(self -> new_start); + + OUTPUT: RETVAL + +SV * +new_lines(self) + Diff_Hunk self + + CODE: + RETVAL = newSVuv(self -> new_lines); + + OUTPUT: RETVAL + +SV * +header(self) + Diff_Hunk self + + PREINIT: + size_t header_len = 0; + const char *header = NULL; + + CODE: + header_len = self -> header_len; + header = self -> header; + + for (header_len = self -> header_len; header_len != 0; --header_len) { + if (header[header_len-1] != '\r' && + header[header_len-1] != '\n') + break; + } + + RETVAL = newSVpv(header, header_len); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Diff/Stats.xs b/xs/Diff/Stats.xs new file mode 100644 index 00000000..e2e61556 --- /dev/null +++ b/xs/Diff/Stats.xs @@ -0,0 +1,75 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Diff::Stats + +SV * +deletions(self) + Diff_Stats self + + CODE: + RETVAL = newSVuv(git_diff_stats_deletions(self)); + + OUTPUT: RETVAL + +SV * +insertions(self) + Diff_Stats self + + CODE: + RETVAL = newSVuv(git_diff_stats_insertions(self)); + + OUTPUT: RETVAL + +SV * +files_changed(self) + Diff_Stats self + + CODE: + RETVAL = newSVuv(git_diff_stats_files_changed(self)); + + OUTPUT: RETVAL + +SV * +buffer(self, ...) + Diff_Stats self + + PROTOTYPE: $;$ + PREINIT: + int rc; + size_t width = 0; + + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + git_diff_stats_format_t format = GIT_DIFF_STATS_NONE; + + CODE: + if (items == 2) { + HV *opts = git_ensure_hv(ST(1), "options"); + HV *flags; + + if ((flags = git_hv_hash_entry(opts, "flags"))) { + unsigned out = 0; + + git_flag_opt(flags, "full", GIT_DIFF_STATS_FULL, &out); + git_flag_opt(flags, "short", GIT_DIFF_STATS_SHORT, &out); + git_flag_opt(flags, "number", GIT_DIFF_STATS_NUMBER, &out); + git_flag_opt(flags, "summary", GIT_DIFF_STATS_INCLUDE_SUMMARY, &out); + + format = out; + } + } + + rc = git_diff_stats_to_buf(&buf, self, format, width); + git_check_error(rc); + + RETVAL = newSVpv(buf.ptr, buf.size); + + git_buf_free(&buf); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_diff_stats_free(GIT_SV_TO_PTR(Diff::Stats, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Error.xs b/xs/Error.xs new file mode 100644 index 00000000..acfbfa1f --- /dev/null +++ b/xs/Error.xs @@ -0,0 +1,46 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Error + +INCLUDE: const-xs-error.inc + +SV * +message(self) + Error self + + CODE: + RETVAL = self -> message; + + OUTPUT: RETVAL + +SV * +code(self) + Error self + + CODE: + RETVAL = newSViv(self -> code); + + OUTPUT: RETVAL + +SV * +category(self) + Error self + + CODE: + RETVAL = newSViv(self -> category); + + OUTPUT: RETVAL + +SV * +_is_error(self) + Error self + + CODE: + RETVAL = newSViv(self -> code != 0); + + OUTPUT: RETVAL + +void +DESTROY(self) + Error self + + CODE: + Safefree(self); diff --git a/xs/Error/Category.xs b/xs/Error/Category.xs new file mode 100644 index 00000000..4777dce2 --- /dev/null +++ b/xs/Error/Category.xs @@ -0,0 +1,4 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Error::Category + +INCLUDE: const-xs-category.inc + diff --git a/xs/Filter.xs b/xs/Filter.xs new file mode 100644 index 00000000..a7a5dcd3 --- /dev/null +++ b/xs/Filter.xs @@ -0,0 +1,121 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Filter + +SV * +create(class, name, attributes) + SV *class + const char *name + const char *attributes + + PREINIT: + Filter filter; + + CODE: + Newx(filter, 1, git_raw_filter); + memset(filter, 0, sizeof(git_raw_filter)); + + Newx(filter -> name, strlen(name) + 1, char); + strcpy(filter -> name, name); + + Newx(filter -> attributes, strlen(attributes) + 1, char); + strcpy(filter -> attributes, attributes); + + filter -> filter.version = GIT_FILTER_VERSION; + filter -> filter.attributes = filter -> attributes; + + GIT_NEW_OBJ(RETVAL, SvPVbyte_nolen(class), filter); + + OUTPUT: RETVAL + +void +callbacks(self, callbacks) + Filter self + HV *callbacks + + PREINIT: + git_filter_callbacks *cbs = NULL; + + CODE: + cbs = &self -> callbacks; + + git_clean_filter_callbacks(cbs); + + self -> filter.initialize = NULL; + self -> filter.shutdown = NULL; + self -> filter.check = NULL; + self -> filter.apply = NULL; + self -> filter.cleanup = NULL; + + if ((cbs -> initialize = get_callback_option( + callbacks, "initialize"))) + self -> filter.initialize = git_filter_init_cbb; + + if ((cbs -> shutdown = get_callback_option( + callbacks,"shutdown"))) + self -> filter.shutdown = git_filter_shutdown_cbb; + + if ((cbs -> check = get_callback_option( + callbacks, "check"))) + self -> filter.check = git_filter_check_cbb; + + if ((cbs -> apply = get_callback_option( + callbacks, "apply"))) + self -> filter.apply = git_filter_apply_cbb; + + if ((cbs -> cleanup = get_callback_option( + callbacks, "cleanup"))) + self -> filter.cleanup = git_filter_cleanup_cbb; + +void +register(self, priority) + Filter self + int priority + + PREINIT: + int rc; + + CODE: + if (!self -> filter.initialize && + !self -> filter.shutdown && + !self -> filter.check && + !self -> filter.apply && + !self -> filter.cleanup) + croak_usage("No callbacks registered for filter '%s'", self -> name); + + rc = git_filter_register( + self -> name, (git_filter *) self, priority + ); + git_check_error(rc); + +void +unregister(self) + Filter self + + PREINIT: + int rc; + + CODE: + rc = git_filter_unregister(self -> name); + git_check_error(rc); + +void +DESTROY(self) + Filter self + + PREINIT: + int rc = 0; + + git_filter_callbacks *cbs = NULL; + + CODE: + cbs = &self -> callbacks; + + if (git_filter_lookup(self -> name)) + rc = git_filter_unregister(self -> name); + + git_clean_filter_callbacks(cbs); + + Safefree(self -> attributes); + Safefree(self -> name); + Safefree(self); + + git_check_error(rc); diff --git a/xs/Filter/Source.xs b/xs/Filter/Source.xs new file mode 100644 index 00000000..47fed8af --- /dev/null +++ b/xs/Filter/Source.xs @@ -0,0 +1,49 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Filter::Source + + +SV * +id(self) + Filter_Source self + + CODE: + RETVAL = git_oid_to_sv(git_filter_source_id(self)); + + OUTPUT: RETVAL + +SV * +path(self) + Filter_Source self + + CODE: + RETVAL = newSVpv(git_filter_source_path(self), 0); + + OUTPUT: RETVAL + +SV * +file_mode(self) + Filter_Source self + + CODE: + RETVAL = newSViv(git_filter_source_filemode(self)); + + OUTPUT: RETVAL + +SV * +mode(self) + Filter_Source self + + PREINIT: + git_filter_mode_t mode; + const char *result = NULL; + + CODE: + mode = git_filter_source_mode(self); + + if (mode == GIT_FILTER_TO_WORKTREE) + result = "to_worktree"; + else if (mode == GIT_FILTER_TO_ODB) + result = "to_odb"; + + RETVAL = newSVpv(result, 0); + + OUTPUT: RETVAL diff --git a/xs/Graph.xs b/xs/Graph.xs new file mode 100644 index 00000000..130a75ef --- /dev/null +++ b/xs/Graph.xs @@ -0,0 +1,26 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Graph + +SV * +is_descendant_of(class, repo, commitish, ancestor) + SV *class + Repository repo + SV *commitish + SV *ancestor + + PREINIT: + int result = 0; + + git_oid commitish_id, ancestor_id; + + CODE: + if (git_sv_to_commitish(repo -> repository, commitish, &commitish_id) == NULL) + croak_resolve("Could not resolve 'commitish' to a commit id"); + + if (git_sv_to_commitish(repo -> repository, ancestor, &ancestor_id) == NULL) + croak_resolve("Could not resolve 'ancestor' to a commit id"); + + result = git_graph_descendant_of(repo -> repository, &commitish_id, &ancestor_id); + + RETVAL = newSViv(result); + + OUTPUT: RETVAL diff --git a/xs/Index.xs b/xs/Index.xs new file mode 100644 index 00000000..7e84c21c --- /dev/null +++ b/xs/Index.xs @@ -0,0 +1,394 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Index + +void +add(self, entry) + Index self + SV *entry + + PREINIT: + int rc = 0; + + CODE: + if (SvPOK(entry)) + rc = git_index_add_bypath(self, SvPVbyte_nolen(entry)); + else + rc = git_index_add(self, GIT_SV_TO_PTR(Index::Entry, entry)); + + git_check_error(rc); + +void +add_all(self, opts) + Index self + HV *opts + + PREINIT: + int rc; + + SV *callback; + AV *lopt; + HV *hopt; + git_strarray paths = {0, 0}; + + unsigned int flags = GIT_INDEX_ADD_DEFAULT; + + CODE: + if ((lopt = git_hv_list_entry(opts, "paths"))) + git_list_to_paths(lopt, &paths); + + if ((hopt = git_hv_hash_entry(opts, "flags"))) { + git_flag_opt(hopt, "force", GIT_INDEX_ADD_FORCE, &flags); + git_flag_opt(hopt, "disable_pathspec_match", GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH, &flags); + git_flag_opt(hopt, "check_pathspec", GIT_INDEX_ADD_CHECK_PATHSPEC, &flags); + } + + callback = get_callback_option(opts, "notification"); + + rc = git_index_add_all( + self, + &paths, + flags, + git_index_matched_path_cbb, + callback); + Safefree(paths.strings); + git_check_error(rc); + +void +clear(self) + Index self + + CODE: + git_index_clear(self); + +void +read(self, ...) + Index self + + PROTOTYPE: $;$ + PREINIT: + int rc, force = 0; + + CODE: + if (items == 2) + force = git_ensure_iv(ST(1), "force"); + + rc = git_index_read(self, force); + git_check_error(rc); + +void +write(self) + Index self + + PREINIT: + int rc; + + CODE: + rc = git_index_write(self); + git_check_error(rc); + +void +read_tree(self, tree) + Index self + Tree tree + + PREINIT: + int rc; + + CODE: + rc = git_index_read_tree(self, tree); + git_check_error(rc); + +SV * +write_tree(self, ...) + Index self + + PROTOTYPE: $;$ + PREINIT: + int rc; + git_oid oid; + + CODE: + if (items == 2) { + Repository repo = GIT_SV_TO_PTR(Repository, ST(1)); + rc = git_index_write_tree_to( + &oid, self, repo -> repository + ); + } else { + rc = git_index_write_tree(&oid, self); + } + git_check_error(rc); + + RETVAL = git_oid_to_sv(&oid); + + OUTPUT: RETVAL + +void +remove(self, path) + Index self + SV *path + + PREINIT: + int rc; + + CODE: + rc = git_index_remove_bypath(self, SvPVbyte_nolen(path)); + git_check_error(rc); + +void +remove_all(self, opts) + Index self + HV *opts + + PREINIT: + int rc; + + SV *callback; + AV *lopt; + git_strarray paths = {0, 0}; + + CODE: + if ((lopt = git_hv_list_entry(opts, "paths"))) + git_list_to_paths(lopt, &paths); + + callback = get_callback_option(opts, "notification"); + + rc = git_index_remove_all( + self, + &paths, + git_index_matched_path_cbb, + callback); + Safefree(paths.strings); + git_check_error(rc); + +SV * +path(self) + Index self + + PREINIT: + const char *path = NULL; + + CODE: + if ((path = git_index_path(self)) == NULL) + XSRETURN_UNDEF; + + RETVAL = newSVpv(path, 0); + + OUTPUT: RETVAL + +void +checkout(self, ...) + SV *self + + PROTOTYPE: $;$ + PREINIT: + int rc; + + SV *repo; + Repository repo_ptr; + + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + repo_ptr = INT2PTR(Repository, SvIV((SV *) repo)); + + if (items == 2) { + git_hv_to_checkout_opts((HV *) SvRV(ST(1)), &checkout_opts); + } + + rc = git_checkout_index( + repo_ptr -> repository, + GIT_SV_TO_PTR(Index, self), + &checkout_opts + ); + git_check_error(rc); + +void +entries(self) + SV *self + + PREINIT: + size_t i, count; + + Index index_ptr = NULL; + + PPCODE: + index_ptr = GIT_SV_TO_PTR(Index, self); + count = git_index_entrycount(index_ptr); + + if (count > 0) { + SV *repo = GIT_SV_TO_MAGIC(self); + + for (i = 0; i < count; ++i) { + const git_index_entry *e = + git_index_get_byindex(index_ptr, i); + + if (e != NULL) { + SV *entry = NULL; + GIT_NEW_OBJ_WITH_MAGIC( + entry, "Git::Raw::Index::Entry", + (Index_Entry) e, repo + ); + mXPUSHs(entry); + } + } + } + + XSRETURN(count); + +void +remove_conflict(self, path) + Index self + SV *path + + PREINIT: + int rc; + + CODE: + rc = git_index_conflict_remove(self, SvPVbyte_nolen(path)); + git_check_error(rc); + +void +conflict_cleanup(self) + Index self + + CODE: + git_index_conflict_cleanup(self); + +SV * +has_conflicts(self) + Index self + + CODE: + RETVAL = newSViv(git_index_has_conflicts(self)); + + OUTPUT: RETVAL + +void +conflicts(self) + SV *self + + PREINIT: + int rc; + + SV *repo; + + git_index_conflict_iterator *iter; + const git_index_entry *ancestor, *ours, *theirs; + + size_t num_conflicts = 0; + + PPCODE: + rc = git_index_conflict_iterator_new( + &iter, GIT_SV_TO_PTR(Index, self) + ); + git_check_error(rc); + + repo = GIT_SV_TO_MAGIC(self); + + while ((rc = git_index_conflict_next( + &ancestor, &ours, &theirs, iter)) == GIT_OK) { + HV *entries = newHV(); + + if (ancestor != NULL) { + SV *entry = NULL; + + GIT_NEW_OBJ_WITH_MAGIC( + entry, "Git::Raw::Index::Entry", + (Index_Entry) ancestor, repo + ); + + hv_stores(entries, "ancestor", entry); + } + + if (ours != NULL) { + SV *entry = NULL; + + GIT_NEW_OBJ_WITH_MAGIC( + entry, "Git::Raw::Index::Entry", + (Index_Entry) ours, repo + ); + + hv_stores(entries, "ours", entry); + } + + if (theirs != NULL) { + SV *entry = NULL; + + GIT_NEW_OBJ_WITH_MAGIC( + entry, "Git::Raw::Index::Entry", + (Index_Entry) theirs, repo + ); + + hv_stores(entries, "theirs", entry); + } + + num_conflicts++; + + mXPUSHs(newRV_noinc((SV *) entries)); + } + + git_index_conflict_iterator_free(iter); + git_check_error(rc); + + XSRETURN(num_conflicts); + +void +update_all(self, opts) + Index self + HV *opts + + PREINIT: + int rc; + + SV *callback; + AV *lopt; + git_strarray paths = {0, 0}; + + CODE: + if ((lopt = git_hv_list_entry(opts, "paths"))) + git_list_to_paths(lopt, &paths); + + callback = get_callback_option(opts, "notification"); + + rc = git_index_update_all( + self, + &paths, + git_index_matched_path_cbb, + callback); + Safefree(paths.strings); + git_check_error(rc); + +void +capabilities(self) + Index self + + PREINIT: + int ctx = GIMME_V; + + PPCODE: + if (ctx != G_VOID) { + if (ctx == G_ARRAY) { + int caps = git_index_caps(self); + + mXPUSHs(newSVpv("ignore_case", 0)); + mXPUSHs(newSViv((caps & GIT_INDEXCAP_IGNORE_CASE) ? 1 : 0)); + mXPUSHs(newSVpv("no_filemode", 0)); + mXPUSHs(newSViv((caps & GIT_INDEXCAP_NO_FILEMODE) ? 1 : 0)); + mXPUSHs(newSVpv("no_symlinks", 0)); + mXPUSHs(newSViv((caps & GIT_INDEXCAP_NO_SYMLINKS) ? 1 : 0)); + + XSRETURN(6); + } else { + mXPUSHs(newSViv(3)); + XSRETURN(1); + } + } else + XSRETURN_EMPTY; + +void +DESTROY(self) + SV* self + + CODE: + git_index_free(GIT_SV_TO_PTR(Index, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Index/Entry.xs b/xs/Index/Entry.xs new file mode 100644 index 00000000..90a4e13d --- /dev/null +++ b/xs/Index/Entry.xs @@ -0,0 +1,44 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Index::Entry + +SV * +id(self) + Index_Entry self + + CODE: + RETVAL = git_oid_to_sv(&self -> id); + + OUTPUT: RETVAL + +SV * +path(self) + Index_Entry self + + CODE: + RETVAL = newSVpv(self -> path, 0); + + OUTPUT: RETVAL + +SV * +size(self) + Index_Entry self + + CODE: + RETVAL = newSVuv((size_t) self -> file_size); + + OUTPUT: RETVAL + +SV * +stage(self) + Index_Entry self + + CODE: + RETVAL = newSViv(git_index_entry_stage(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV* self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Patch.xs b/xs/Patch.xs new file mode 100644 index 00000000..67417176 --- /dev/null +++ b/xs/Patch.xs @@ -0,0 +1,125 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Patch + +SV * +buffer(self) + Patch self + + PREINIT: + int rc; + + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + rc = git_patch_to_buf(&buf, self); + git_check_error(rc); + + RETVAL = newSVpv(buf.ptr, buf.size); + + git_buf_free(&buf); + + OUTPUT: RETVAL + +SV * +hunk_count(self) + Patch self + + CODE: + RETVAL = newSVuv(git_patch_num_hunks(self)); + + OUTPUT: RETVAL + +void +hunks(self, ...) + SV *self + + PROTOTYPE: $;$ + + PREINIT: + size_t start = 0, end, num_hunks; + + PPCODE: + num_hunks = git_patch_num_hunks(GIT_SV_TO_PTR(Patch, self)); + + if (items == 2) { + SV *index = ST(1); + + if (!SvIOK(index) || SvIV(index) < 0) + croak_usage("Invalid type for 'index'"); + + start = SvUV(index); + if (start >= num_hunks) + croak_usage("index %" PRIuZ " out of range", start); + + num_hunks = 1; + } + + end = start + num_hunks; + + for (; start < end; ++start) { + SV *hunk; + const git_diff_hunk *h; + + int rc = git_patch_get_hunk( + &h, NULL, GIT_SV_TO_PTR(Patch, self), start + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + hunk, "Git::Raw::Diff::Hunk", + (Diff_Hunk) h, SvRV(self) + ); + + mXPUSHs(hunk); + } + + XSRETURN(num_hunks); + +SV * +line_stats(self) + Patch self + + PREINIT: + int rc; + + size_t total_context, total_additions, total_deletions; + + HV *stats; + + CODE: + rc = git_patch_line_stats( + &total_context, &total_additions, &total_deletions, self + ); + git_check_error(rc); + + stats = newHV(); + + hv_stores(stats, "context", newSVuv(total_context)); + hv_stores(stats, "additions", newSVuv(total_additions)); + hv_stores(stats, "deletions", newSVuv(total_deletions)); + + RETVAL = newRV_noinc((SV *) stats); + + OUTPUT: RETVAL + +SV * +delta(self) + SV *self + + CODE: + const git_diff_delta *delta = + git_patch_get_delta(GIT_SV_TO_PTR(Patch, self) + ); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Diff::Delta", + (Diff_Delta) delta, SvRV(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_patch_free(GIT_SV_TO_PTR(Patch, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/PathSpec.xs b/xs/PathSpec.xs new file mode 100644 index 00000000..289da569 --- /dev/null +++ b/xs/PathSpec.xs @@ -0,0 +1,113 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::PathSpec + +SV * +new(class, ...) + SV *class + + PROTOTYPE: $;@ + PREINIT: + int i, count, rc; + + git_strarray paths = {NULL, 0}; + + PathSpec ps; + + CODE: + if (items == 1) + croak_usage("No 'paths' provided"); + + count = items - 1; + Newxz(paths.strings, count, char *); + for (i = 0; i < count; ++i) { + if (!SvPOK(ST(i + 1))) { + Safefree(paths.strings); + croak_usage("Expected a string for 'path'"); + } + paths.strings[i] = SvPVbyte_nolen(ST(i + 1)); + } + + paths.count = (size_t) count; + + rc = git_pathspec_new(&ps, &paths); + Safefree(paths.strings); + git_check_error(rc); + + GIT_NEW_OBJ( + RETVAL, SvPVbyte_nolen(class), ps + ); + + OUTPUT: RETVAL + +SV * +match(self, obj, ...) + PathSpec self + SV *obj + + PROTOTYPE: $$;$ + PREINIT: + unsigned flags = 0; + + git_pathspec_match_list *list = NULL; + + CODE: + if (items == 3) { + HV *hopt, *opts = git_ensure_hv(ST(2), "options"); + + if ((hopt = git_hv_hash_entry(opts, "flags"))) { + git_flag_opt(hopt, "ignore_case", GIT_PATHSPEC_IGNORE_CASE, &flags); + git_flag_opt(hopt, "use_case", GIT_PATHSPEC_USE_CASE, &flags); + git_flag_opt(hopt, "no_glob", GIT_PATHSPEC_NO_GLOB, &flags); + git_flag_opt(hopt, "no_match_error", GIT_PATHSPEC_NO_MATCH_ERROR, &flags); + git_flag_opt(hopt, "find_failures", GIT_PATHSPEC_FIND_FAILURES, &flags); + git_flag_opt(hopt, "failures_only", GIT_PATHSPEC_FAILURES_ONLY, &flags); + } + } + + if (sv_isobject(obj)) { + int rc = 0; + + if (sv_derived_from(obj, "Git::Raw::Repository")) { + Repository repo = GIT_SV_TO_PTR(Repository, obj); + rc = git_pathspec_match_workdir( + &list, + repo -> repository, + flags, self); + } else if (sv_derived_from(obj, "Git::Raw::Index")) { + rc = git_pathspec_match_index( + &list, + GIT_SV_TO_PTR(Index, obj), + flags, self); + } else if (sv_derived_from(obj, "Git::Raw::Tree")) { + rc = git_pathspec_match_tree( + &list, + GIT_SV_TO_PTR(Tree, obj), + flags, self); + } else if (sv_derived_from(obj, "Git::Raw::Diff")) { + rc = git_pathspec_match_diff( + &list, + GIT_SV_TO_PTR(Diff, obj), + flags, self); + } + git_check_error(rc); + } + + if (list == NULL) + croak_usage("Expected a 'Git::Raw::Repository', 'Git::Raw::Index', " + "'Git::Raw::Tree' or 'Git::Raw::Diff' object"); + + GIT_NEW_OBJ( + RETVAL, "Git::Raw::PathSpec::MatchList", list + ); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + PREINIT: + PathSpec ps; + + CODE: + ps = GIT_SV_TO_PTR(PathSpec, self); + git_pathspec_free(ps); diff --git a/xs/PathSpec/MatchList.xs b/xs/PathSpec/MatchList.xs new file mode 100644 index 00000000..6463153c --- /dev/null +++ b/xs/PathSpec/MatchList.xs @@ -0,0 +1,64 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::PathSpec::MatchList + +SV * +count(self) + PathSpec_MatchList self; + + CODE: + RETVAL = newSVuv(git_pathspec_match_list_entrycount(self)); + + OUTPUT: RETVAL + +void +entries(self) + PathSpec_MatchList self; + + PREINIT: + size_t i, count; + + PPCODE: + count = git_pathspec_match_list_entrycount(self); + + for (i = 0; i < count; ++i) { + SV *path = newSVpv(git_pathspec_match_list_entry(self, i), 0); + mXPUSHs(path); + } + + XSRETURN(count); + +SV * +failed_count(self) + PathSpec_MatchList self; + + CODE: + RETVAL = newSVuv(git_pathspec_match_list_failed_entrycount(self)); + + OUTPUT: RETVAL + +void +failed_entries(self) + PathSpec_MatchList self; + + PREINIT: + size_t i, count; + + PPCODE: + count = git_pathspec_match_list_failed_entrycount(self); + + for (i = 0; i < count; ++i) { + SV *path = newSVpv(git_pathspec_match_list_failed_entry(self, i), 0); + mXPUSHs(path); + } + + XSRETURN(count); + +void +DESTROY(self) + SV *self + + PREINIT: + PathSpec_MatchList list; + + CODE: + list = GIT_SV_TO_PTR(PathSpec::MatchList, self); + git_pathspec_match_list_free(list); diff --git a/xs/Push.xs b/xs/Push.xs new file mode 100644 index 00000000..7a1f90f3 --- /dev/null +++ b/xs/Push.xs @@ -0,0 +1,149 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Push + +SV * +new(class, remote) + SV *class + SV *remote + + PREINIT: + int rc; + + git_push *p = NULL; + Push push = NULL; + + Remote r = NULL; + + CODE: + r = GIT_SV_TO_PTR(Remote, remote); + + rc = git_push_new(&p, r -> remote); + git_check_error(rc); + + Newx(push, 1, git_raw_push); + git_init_push_callbacks(&push -> callbacks); + push -> push = p; + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), push, SvRV(remote) + ); + + OUTPUT: RETVAL + +void +add_refspec(self, refspec) + Push self + SV *refspec + + PREINIT: + int rc; + + CODE: + rc = git_push_add_refspec(self -> push, SvPVbyte_nolen(refspec)); + git_check_error(rc); + +void +finish(self) + Push self + + PREINIT: + int rc; + + CODE: + rc = git_push_finish(self -> push); + git_check_error(rc); + + if (self -> callbacks.status != NULL) { + rc = git_push_status_foreach( + self -> push, + git_push_status_cbb, + &self -> callbacks); + git_check_error(rc); + } + +SV * +unpack_ok(self) + Push self + + CODE: + RETVAL = newSViv(git_push_unpack_ok(self -> push)); + + OUTPUT: RETVAL + +void +update_tips(self) + SV *self + + PREINIT: + int rc; + + SV *remote; + + Push push; + Remote remote_ptr; + Signature sig; + + CODE: + push = GIT_SV_TO_PTR(Push, self); + remote = GIT_SV_TO_MAGIC(self); + remote_ptr = INT2PTR(Remote, SvIV((SV *) remote)); + + rc = git_signature_default(&sig, git_remote_owner(remote_ptr -> remote)); + git_check_error(rc); + + rc = git_push_update_tips(push -> push, sig, NULL); + git_signature_free(sig); + git_check_error(rc); + +void +callbacks(self, callbacks) + SV *self + HV *callbacks + + PREINIT: + int rc; + + Push push; + + git_packbuilder_progress pack_progress = NULL; + git_push_transfer_progress transfer_progress = NULL; + + CODE: + push = GIT_SV_TO_PTR(Push, self); + + git_clean_push_callbacks(&push -> callbacks); + + if ((push -> callbacks.transfer_progress = + get_callback_option(callbacks, "transfer_progress"))) { + + transfer_progress = git_push_transfer_progress_cbb; + } + + if ((push -> callbacks.packbuilder_progress = + get_callback_option(callbacks, "pack_progress"))) { + + pack_progress = git_packbuilder_progress_cbb; + } + + push -> callbacks.status = get_callback_option(callbacks, "status"); + + rc = git_push_set_callbacks( + push -> push, + pack_progress, + &push -> callbacks, + transfer_progress, + &push -> callbacks); + git_check_error(rc); + +void +DESTROY(self) + SV *self + + PREINIT: + Push push; + + CODE: + push = GIT_SV_TO_PTR(Push, self); + git_push_free(push -> push); + git_clean_push_callbacks(&push -> callbacks); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); + Safefree(push); diff --git a/xs/RefSpec.xs b/xs/RefSpec.xs new file mode 100644 index 00000000..9d2f8474 --- /dev/null +++ b/xs/RefSpec.xs @@ -0,0 +1,142 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::RefSpec + +SV * +dst(self) + RefSpec self + + CODE: + RETVAL = newSVpv(git_refspec_dst(self), 0); + + OUTPUT: RETVAL + +SV * +dst_matches(self, ref) + RefSpec self + SV *ref + + PREINIT: + const char *ref_name; + + CODE: + ref_name = git_ensure_pv(ref, "name"); + + RETVAL = newSViv(git_refspec_dst_matches(self, ref_name)); + + OUTPUT: RETVAL + +SV * +src(self) + RefSpec self + + CODE: + RETVAL = newSVpv(git_refspec_src(self), 0); + + OUTPUT: RETVAL + +SV * +src_matches(self, ref) + RefSpec self + SV *ref + + PREINIT: + const char *ref_name; + + CODE: + ref_name = git_ensure_pv(ref, "name"); + + RETVAL = newSViv(git_refspec_src_matches(self, ref_name)); + + OUTPUT: RETVAL + +SV * +string(self) + RefSpec self + + CODE: + RETVAL = newSVpv(git_refspec_string(self), 0); + + OUTPUT: RETVAL + +SV * +direction(self) + RefSpec self + + PREINIT: + git_direction dir; + + CODE: + dir = git_refspec_direction(self); + if (dir == GIT_DIRECTION_FETCH) + RETVAL = newSVpv("fetch", 0); + else if (dir == GIT_DIRECTION_PUSH) + RETVAL = newSVpv("push", 0); + else + RETVAL = &PL_sv_undef; + + OUTPUT: RETVAL + +SV * +transform(self, ref) + RefSpec self + SV *ref + + PREINIT: + int rc; + + const char *ref_name; + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + RETVAL = &PL_sv_undef; + + ref_name = git_ensure_pv(ref, "name"); + + rc = git_refspec_transform(&buf, self, ref_name); + if (rc == GIT_OK) + RETVAL = newSVpv(buf.ptr, buf.size); + + git_buf_free(&buf); + git_check_error(rc); + + OUTPUT: RETVAL + +SV * +rtransform(self, ref) + RefSpec self + SV *ref + + PREINIT: + int rc; + + const char *ref_name; + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + RETVAL = &PL_sv_undef; + + ref_name = git_ensure_pv(ref, "name"); + + rc = git_refspec_rtransform(&buf, self, ref_name); + if (rc == GIT_OK) + RETVAL = newSVpv(buf.ptr, buf.size); + + git_buf_free(&buf); + git_check_error(rc); + + OUTPUT: RETVAL + +SV * +is_force(self) + RefSpec self + + CODE: + RETVAL = newSViv(git_refspec_force(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Reference.xs b/xs/Reference.xs new file mode 100644 index 00000000..1f30e91d --- /dev/null +++ b/xs/Reference.xs @@ -0,0 +1,282 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Reference + +SV * +create(class, name, repo, object, ...) + const char *class + const char *name + SV *repo + SV *object + + PREINIT: + int rc, force = 0; + + Repository repo_ptr; + Reference ref; + Signature sig; + const git_oid *oid; + + CODE: + if (items > 4) + force = SvTRUE(ST(4)); + + if (sv_isobject(object) && + sv_derived_from(object, "Git::Raw::Blob")) + oid = git_blob_id(GIT_SV_TO_PTR(Blob, object)); + else if (sv_isobject(object) && + sv_derived_from(object, "Git::Raw::Commit")) + oid = git_commit_id(GIT_SV_TO_PTR(Commit, object)); + else + oid = git_tree_id(GIT_SV_TO_PTR(Tree, object)); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_signature_default(&sig, repo_ptr -> repository); + git_check_error(rc); + + rc = git_reference_create( + &ref, repo_ptr -> repository, + name, oid, force, sig, NULL + ); + git_signature_free(sig); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC(RETVAL, class, ref, SvRV(repo)); + + OUTPUT: RETVAL + +SV * +lookup(class, name, repo) + SV *class + SV *name + SV *repo + + PREINIT: + int rc; + + Repository repo_ptr; + Reference ref; + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_reference_lookup( + &ref, repo_ptr -> repository, + SvPVbyte_nolen(name) + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), ref, SvRV(repo) + ); + + OUTPUT: RETVAL + +void +delete(self) + SV *self + + PREINIT: + int rc; + + CODE: + rc = git_reference_delete(GIT_SV_TO_PTR(Reference, self)); + git_check_error(rc); + + sv_setiv(SvRV(self), 0); + +SV * +name(self) + Reference self + + PREINIT: + const char *msg; + + CODE: + msg = git_reference_name(self); + RETVAL = newSVpv(msg, 0); + + OUTPUT: RETVAL + +SV * +type(self) + Reference self + + PREINIT: + SV *type = NULL; + git_ref_t rt; + + CODE: + rt = git_reference_type(self); + + switch (rt) { + case GIT_REF_OID: + type = newSVpv("direct", 0); + break; + + case GIT_REF_SYMBOLIC: + type = newSVpv("symbolic", 0); + break; + + default: + croak_assert("Invalid reference type: %d", (int) rt); + break; + } + + RETVAL = type; + + OUTPUT: RETVAL + +SV * +owner(self) + SV *self + + PREINIT: + Reference ref; + SV *repo; + + CODE: + ref = GIT_SV_TO_PTR(Reference, self); + repo = GIT_SV_TO_MAGIC(self); + + if (!repo) + croak_assert("No owner attached"); + + RETVAL = newRV_inc(repo); + + OUTPUT: RETVAL + +SV * +target(self, ...) + SV *self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + Reference ref; + Signature sig; + + CODE: + ref = GIT_SV_TO_PTR(Reference, self); + + if (items == 2) { + Reference new_ref; + + Commit commit = GIT_SV_TO_PTR(Commit, ST(1)); + + rc = git_signature_default(&sig, git_reference_owner(ref)); + git_check_error(rc); + + rc = git_reference_set_target(&new_ref, ref, git_commit_id(commit), sig, NULL); + git_signature_free(sig); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Reference", + new_ref, GIT_SV_TO_MAGIC(self) + ); + } else { + git_ref_t rt = git_reference_type(ref); + switch (rt) { + case GIT_REF_OID: { + git_object *obj; + const git_oid *oid; + + oid = git_reference_target(ref); + + rc = git_object_lookup( + &obj, git_reference_owner(ref), + oid, GIT_OBJ_ANY + ); + git_check_error(rc); + + RETVAL = git_obj_to_sv( + obj, GIT_SV_TO_MAGIC(self) + ); + break; + } + + case GIT_REF_SYMBOLIC: { + Reference linked_ref; + const char *target; + + target = git_reference_symbolic_target(ref); + + rc = git_reference_lookup( + &linked_ref, + git_reference_owner(ref), + target + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Reference", + linked_ref, GIT_SV_TO_MAGIC(self) + ); + break; + } + + default: + RETVAL = &PL_sv_undef; + croak_assert("Invalid reference type: %d", (int) rt); + } + } + + OUTPUT: RETVAL + +SV * +shorthand(self) + Reference self + + CODE: + RETVAL = newSVpv(git_reference_shorthand(self), 0); + + OUTPUT: RETVAL + +SV * +is_branch(self) + Reference self + + CODE: + RETVAL = newSViv(git_reference_is_branch(self)); + + OUTPUT: RETVAL + +SV * +is_remote(self) + Reference self + + CODE: + RETVAL = newSViv(git_reference_is_remote(self)); + + OUTPUT: RETVAL + +SV * +is_tag(self) + Reference self + + PREINIT: + int rc; + + CODE: + rc = git_reference_is_tag(self); + git_check_error(rc); + + RETVAL = newSViv(rc); + + OUTPUT: RETVAL + +SV * +is_note(self) + Reference self + + CODE: + RETVAL = newSViv(git_reference_is_note(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_reference_free(GIT_SV_TO_PTR(Reference, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Reflog.xs b/xs/Reflog.xs new file mode 100644 index 00000000..b7ce16d1 --- /dev/null +++ b/xs/Reflog.xs @@ -0,0 +1,155 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Reflog + +SV * +open(class, reference) + SV *class + SV *reference + + PREINIT: + int rc; + + Reference ref; + Reflog reflog; + + CODE: + ref = GIT_SV_TO_PTR(Reference, reference); + + rc = git_reflog_read( + &reflog, + git_reference_owner(ref), + git_reference_name(ref) + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), reflog, reference + ); + + OUTPUT: RETVAL + +void +delete(self) + SV *self + + PREINIT: + int rc; + + Reference ref; + + CODE: + ref = GIT_SV_TO_PTR(Reference, GIT_SV_TO_MAGIC(self)); + + rc = git_reflog_delete( + git_reference_owner(ref), git_reference_name(ref) + ); + git_check_error(rc); + +void +append(self, message, ...) + SV *self + const char *message + + PROTOTYPE: $$;$ + + PREINIT: + int rc; + + git_oid id; + Signature sig; + Reference ref; + git_repository *ref_owner; + + CODE: + ref = GIT_SV_TO_PTR(Reference, GIT_SV_TO_MAGIC(self)); + ref_owner = git_reference_owner(ref); + + rc = git_reference_name_to_id( + &id, ref_owner, git_reference_name(ref) + ); + git_check_error(rc); + + if (items == 3) { + sig = GIT_SV_TO_PTR(Signature, ST(2)); + } else { + rc = git_signature_default(&sig, ref_owner); + git_check_error(rc); + } + + rc = git_reflog_append( + GIT_SV_TO_PTR(Reflog, self), + &id, sig, message + ); + + if (items != 3) + git_signature_free(sig); + + git_check_error(rc); + +void +drop(self, index) + Reflog self + size_t index + + PREINIT: + int rc; + + CODE: + rc = git_reflog_drop(self, index, 1); + git_check_error(rc); + +void +write(self) + Reflog self + + PREINIT: + int rc; + + CODE: + rc = git_reflog_write(self); + git_check_error(rc); + +void +entries(self) + SV *self + + PREINIT: + int rc; + size_t i, entry_count; + + Reflog reflog; + Signature sig; + + PPCODE: + reflog = GIT_SV_TO_PTR(Reflog, self); + + entry_count = git_reflog_entrycount (reflog); + for (i = 0; i < entry_count; ++i) { + SV *committer; + + const git_reflog_entry *e = + git_reflog_entry_byindex(reflog, i); + + HV *entry = newHV(); + + rc = git_signature_dup(&sig, git_reflog_entry_committer(e)); + git_check_error(rc); + + GIT_NEW_OBJ(committer, "Git::Raw::Signature", sig); + + hv_stores(entry, "committer", committer); + hv_stores(entry, "message", newSVpv(git_reflog_entry_message(e), 0)); + hv_stores(entry, "new_id", git_oid_to_sv(git_reflog_entry_id_new(e))); + hv_stores(entry, "old_id", git_oid_to_sv(git_reflog_entry_id_old(e))); + + mXPUSHs(newRV_noinc((SV *) entry)); + } + + XSRETURN(entry_count); + +void +DESTROY(self) + SV *self + + CODE: + git_reflog_free(GIT_SV_TO_PTR(Reflog, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Remote.xs b/xs/Remote.xs new file mode 100644 index 00000000..27cfda2f --- /dev/null +++ b/xs/Remote.xs @@ -0,0 +1,496 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Remote + +SV * +create(class, repo, name, url) + SV *class + SV *repo + SV *name + SV *url + + PREINIT: + int rc; + + git_remote *r = NULL; + Remote remote = NULL; + Repository repo_ptr = NULL; + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_remote_create( + &r, repo_ptr -> repository, + git_ensure_pv(name, "name"), git_ensure_pv(url, "url") + ); + git_check_error(rc); + + Newxz(remote, 1, git_raw_remote); + git_init_remote_callbacks(&remote -> callbacks); + remote -> remote = r; + remote -> owned = 1; + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), remote, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +create_anonymous(class, repo, url, fetch) + SV *class + SV *repo + SV *url + SV *fetch + + PREINIT: + int rc; + + git_remote *r = NULL; + Remote remote = NULL; + Repository repo_ptr = NULL; + + const char *f = NULL; + + CODE: + if (SvOK(fetch)) + f = git_ensure_pv(fetch, "fetch"); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_remote_create_anonymous( + &r, repo_ptr -> repository, + git_ensure_pv(url, "url"), f + ); + git_check_error(rc); + + Newx(remote, 1, git_raw_remote); + git_init_remote_callbacks(&remote -> callbacks); + remote -> remote = r; + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), remote, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +load(class, repo, name) + SV *class + SV *repo + SV *name + + PREINIT: + int rc; + + git_remote *r = NULL; + Remote remote = NULL; + Repository repo_ptr = NULL; + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_remote_load( + &r, repo_ptr -> repository, + git_ensure_pv(name, "name")); + git_check_error(rc); + + Newx(remote, 1, git_raw_remote); + git_init_remote_callbacks(&remote -> callbacks); + remote -> remote = r; + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), remote, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +name(self, ...) + Remote self + + PROTOTYPE: $;$$ + + PREINIT: + int rc; + const char *name; + + git_strarray problems = {NULL, 0}; + + CODE: + if (items > 1) { + AV *p = NULL; + name = git_ensure_pv(ST(1), "name"); + + if (items > 2) + p = git_ensure_av(ST(2), "problems"); + + rc = git_remote_rename(&problems, self -> remote, name); + git_check_error(rc); + + if (p != NULL && problems.count > 0) { + size_t i; + for (i = 0; i < problems.count; ++i) + av_push(p, newSVpv(problems.strings[i], 0)); + } + git_strarray_free(&problems); + } + + RETVAL = newSVpv(git_remote_name(self -> remote), 0); + + OUTPUT: RETVAL + +SV * +url(self, ...) + Remote self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + const char *url; + + CODE: + if (items == 2) { + url = git_ensure_pv(ST(1), "url"); + + rc = git_remote_set_url(self -> remote, url); + git_check_error(rc); + + rc = git_remote_save(self -> remote); + git_check_error(rc); + } + + if ((url = git_remote_url(self -> remote))) + RETVAL = newSVpv(url, 0); + else + RETVAL = &PL_sv_undef; + + OUTPUT: RETVAL + +SV * +pushurl(self, ...) + Remote self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + const char *pushurl; + + CODE: + if (items == 2) { + pushurl = git_ensure_pv(ST(1), "pushurl"); + + rc = git_remote_set_pushurl(self -> remote, pushurl); + git_check_error(rc); + + rc = git_remote_save(self -> remote); + git_check_error(rc); + } + + if ((pushurl = git_remote_pushurl(self -> remote))) + RETVAL = newSVpv(pushurl, 0); + else + RETVAL = &PL_sv_undef; + + OUTPUT: RETVAL + +void +add_fetch(self, spec) + Remote self + SV *spec + + PREINIT: + int rc; + + CODE: + rc = git_remote_add_fetch(self -> remote, git_ensure_pv(spec, "spec")); + git_check_error(rc); + +void +add_push(self, spec) + Remote self + SV *spec + + PREINIT: + int rc; + + CODE: + rc = git_remote_add_push(self -> remote, git_ensure_pv(spec, "spec")); + git_check_error(rc); + +void +clear_refspecs(self) + Remote self + + CODE: + git_remote_clear_refspecs(self -> remote); + +void +refspecs(self) + SV *self + + PREINIT: + size_t i, count; + + Remote remote_ptr; + + PPCODE: + remote_ptr = GIT_SV_TO_PTR(Remote, self); + + count = git_remote_refspec_count(remote_ptr -> remote); + + for (i = 0; i < count; ++i) { + const git_refspec *refspec; + SV *tmp; + + refspec = git_remote_get_refspec( + remote_ptr -> remote, + i + ); + + GIT_NEW_OBJ_WITH_MAGIC( + tmp, "Git::Raw::RefSpec", (git_refspec *) refspec, SvRV(self) + ); + + mXPUSHs(tmp); + } + + XSRETURN(count); + +SV * +refspec_count(self) + Remote self + + CODE: + RETVAL = newSVuv(git_remote_refspec_count(self -> remote)); + + OUTPUT: RETVAL + +void +check_cert(self, value) + Remote self + SV *value + + CODE: + git_remote_check_cert(self -> remote, git_ensure_iv(value, "value")); + +void +fetch(self) + Remote self + + PREINIT: + int rc; + + Signature sig; + + CODE: + rc = git_signature_default(&sig, git_remote_owner(self -> remote)); + git_check_error(rc); + + rc = git_remote_fetch(self -> remote, sig, NULL); + git_signature_free(sig); + git_check_error(rc); + +void +connect(self, direction) + Remote self + SV *direction + + PREINIT: + int rc; + + const char *dir; + git_direction direct = GIT_DIRECTION_FETCH; + + CODE: + dir = git_ensure_pv(direction, "direction"); + + if (strcmp(dir, "fetch") == 0) + direct = GIT_DIRECTION_FETCH; + else if (strcmp(dir, "push") == 0) + direct = GIT_DIRECTION_PUSH; + else + croak_usage("Invalid direction '%s'. " + "Valid values: 'fetch' or 'push'", dir); + + rc = git_remote_connect(self -> remote, direct); + git_check_error(rc); + +void +disconnect(self) + Remote self + + CODE: + git_remote_disconnect(self -> remote); + +void +download(self) + Remote self + + PREINIT: + int rc; + + CODE: + rc = git_remote_download(self -> remote); + git_check_error(rc); + +void +save(self) + Remote self + + PREINIT: + int rc; + + CODE: + rc = git_remote_save(self -> remote); + git_check_error(rc); + +void +update_tips(self) + Remote self + + PREINIT: + int rc; + Signature sig; + + CODE: + rc = git_signature_default(&sig, git_remote_owner(self -> remote)); + git_check_error(rc); + + rc = git_remote_update_tips(self -> remote, sig, NULL); + git_signature_free(sig); + git_check_error(rc); + +void +callbacks(self, callbacks) + SV *self + HV *callbacks + + PREINIT: + int rc; + + Remote remote; + + git_remote_callbacks rcallbacks = GIT_REMOTE_CALLBACKS_INIT; + + CODE: + remote = GIT_SV_TO_PTR(Remote, self); + + git_clean_remote_callbacks(&remote -> callbacks); + + if ((remote -> callbacks.credentials = + get_callback_option(callbacks, "credentials"))) + rcallbacks.credentials = git_credentials_cbb; + + if ((remote -> callbacks.progress = + get_callback_option(callbacks, "sideband_progress"))) + rcallbacks.sideband_progress = git_progress_cbb; + + if ((remote -> callbacks.transfer_progress = + get_callback_option(callbacks, "transfer_progress"))) + rcallbacks.transfer_progress = git_transfer_progress_cbb; + + if ((remote -> callbacks.update_tips = + get_callback_option(callbacks, "update_tips"))) + rcallbacks.update_tips = git_update_tips_cbb; + + rcallbacks.payload = &remote -> callbacks; + + rc = git_remote_set_callbacks(remote -> remote, &rcallbacks); + git_check_error(rc); + +SV * +ls(self) + Remote self + + PREINIT: + int rc; + + size_t i, count; + const char *peel = "^{}"; + const git_remote_head **refs; + + HV *r; + + CODE: + rc = git_remote_ls(&refs, &count, self -> remote); + git_check_error(rc); + + r = newHV(); + + for (i = 0; i < count; ++i) { + size_t len; + const char *ref_name; + + HV *entry = newHV(); + int local = refs[i] -> local; + + hv_stores(entry, "local", newSViv(local)); + + hv_stores(entry, "id", git_oid_to_sv(&refs[i] -> oid)); + + if (local) + hv_stores(entry, "lid", + git_oid_to_sv(&refs[i] -> loid)); + + ref_name = refs[i] -> name; + len = strlen(ref_name) - (strstr(ref_name, peel) == NULL ? + 0 : strlen(peel)); + + hv_store(r, refs[i] -> name, len, + newRV_noinc((SV *) entry), 0); + } + + RETVAL = newRV_noinc((SV *) r); + + OUTPUT: RETVAL + +SV * +is_connected(self) + Remote self + + CODE: + RETVAL = newSViv(git_remote_connected(self -> remote)); + + OUTPUT: RETVAL + +SV * +is_url_valid(class, url) + SV *class + SV *url + + PREINIT: + int r; + + CODE: + r = git_remote_valid_url(git_ensure_pv(url, "url")); + RETVAL = newSViv(r); + + OUTPUT: RETVAL + +SV * +is_url_supported(class, url) + SV *class + SV *url + + PREINIT: + int r; + + CODE: + r = git_remote_supported_url(git_ensure_pv(url, "url")); + RETVAL = newSViv(r); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + PREINIT: + Remote remote; + + CODE: + remote = GIT_SV_TO_PTR(Remote, self); + + git_clean_remote_callbacks(&remote -> callbacks); + if (remote -> owned) + git_remote_free(remote -> remote); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); + Safefree(remote); diff --git a/xs/Repository.xs b/xs/Repository.xs new file mode 100644 index 00000000..0de73590 --- /dev/null +++ b/xs/Repository.xs @@ -0,0 +1,1131 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Repository + +Repository +init(class, path, is_bare) + SV *class + SV *path + unsigned is_bare + + PREINIT: + int rc; + git_repository *r = NULL; + Repository repo = NULL; + + CODE: + rc = git_repository_init( + &r, git_ensure_pv(path, "path"), is_bare + ); + git_check_error(rc); + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 1; + + RETVAL = repo; + + OUTPUT: RETVAL + +Repository +clone(class, url, path, opts) + SV *class + SV *url + SV *path + HV *opts + + PREINIT: + int rc; + + SV *opt; + HV *callbacks; + git_repository *r = NULL; + Repository repo = NULL; + + SV *remote_cb = NULL; + git_raw_remote_callbacks cbs = {0, 0, 0, 0}; + git_clone_options clone_opts = GIT_CLONE_OPTIONS_INIT; + + CODE: + clone_opts.remote_callbacks.payload = &cbs; + + if ((opt = git_hv_int_entry(opts, "bare")) && SvIV(opt)) + clone_opts.bare = 1; + + if ((opt = git_hv_string_entry(opts, "checkout_branch"))) + clone_opts.checkout_branch = git_ensure_pv(opt, "checkout_branch"); + + if ((opt = git_hv_int_entry(opts, "disable_checkout")) && SvIV(opt)) + clone_opts.checkout_opts.checkout_strategy = GIT_CHECKOUT_NONE; + + /* Callbacks */ + if ((callbacks = git_hv_hash_entry(opts, "callbacks"))) { + /* Clone callbacks */ + if ((remote_cb = get_callback_option(callbacks, "remote_create"))) { + clone_opts.remote_cb = git_remote_create_cbb; + clone_opts.remote_cb_payload = remote_cb; + } + + /* Remote callbacks */ + if ((cbs.credentials = + get_callback_option(callbacks, "credentials"))) + clone_opts.remote_callbacks.credentials = + git_credentials_cbb; + + if ((cbs.progress = + get_callback_option(callbacks, "sideband_progress"))) + clone_opts.remote_callbacks.sideband_progress = + git_progress_cbb; + + if ((cbs.transfer_progress = + get_callback_option(callbacks, "transfer_progress"))) + clone_opts.remote_callbacks.transfer_progress = + git_transfer_progress_cbb; + + if ((cbs.update_tips = + get_callback_option(callbacks, "update_tips"))) + clone_opts.remote_callbacks.update_tips = + git_update_tips_cbb; + } + + rc = git_clone( + &r, git_ensure_pv(url, "url"), git_ensure_pv(path, "path"), + &clone_opts + ); + + git_clean_remote_callbacks(&cbs); + SvREFCNT_dec(remote_cb); + git_check_error(rc); + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 1; + + RETVAL = repo; + + OUTPUT: RETVAL + +Repository +open(class, path) + SV *class + SV *path + + PREINIT: + int rc; + git_repository *r = NULL; + Repository repo = NULL; + + CODE: + rc = git_repository_open(&r, git_ensure_pv(path, "path")); + git_check_error(rc); + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 1; + + RETVAL = repo; + + OUTPUT: RETVAL + +Repository +discover(class, path) + SV *class + SV *path + + PREINIT: + int rc; + + git_repository *r = NULL; + Repository repo = NULL; + + CODE: + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + rc = git_buf_grow(&buf, GIT_PATH_MAX); + git_check_error(rc); + + rc = git_repository_discover( + &buf, git_ensure_pv(path, "path"), 1, NULL + ); + + if (rc == GIT_OK) + rc = git_repository_open(&r, (const char*) buf.ptr); + + git_buf_free(&buf); + git_check_error(rc); + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 1; + + RETVAL = repo; + + OUTPUT: RETVAL + +Repository +new(class) + SV *class + + PREINIT: + int rc; + git_repository *r = NULL; + Repository repo = NULL; + + CODE: + rc = git_repository_new(&r); + git_check_error(rc); + + Newxz(repo, 1, git_raw_repository); + repo -> repository = r; + repo -> owned = 1; + + RETVAL = repo; + + OUTPUT: RETVAL + +Config +config(self) + Repository self + + PREINIT: + int rc; + Config cfg; + + CODE: + rc = git_repository_config(&cfg, self -> repository); + git_check_error(rc); + + RETVAL = cfg; + + OUTPUT: RETVAL + +SV * +index(self) + SV *self + + PREINIT: + int rc; + Index index; + + Repository repo = NULL; + + CODE: + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_repository_index(&index, repo -> repository); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Index", index, SvRV(self) + ); + + OUTPUT: RETVAL + +SV * +head(self, ...) + SV *self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + + Reference head; + Repository repo; + Signature sig; + + CODE: + repo = GIT_SV_TO_PTR(Repository, self); + + if (items == 2) { + Reference new_head = GIT_SV_TO_PTR(Reference, ST(1)); + + rc = git_signature_default(&sig, repo -> repository); + git_check_error(rc); + + rc = git_repository_set_head( + repo -> repository, git_reference_name(new_head), + sig, NULL + ); + git_signature_free(sig); + git_check_error(rc); + } + + rc = git_repository_head(&head, repo -> repository); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Reference", head, SvRV(self) + ); + + OUTPUT: RETVAL + +SV * +lookup(self, id) + SV *self + SV *id + + PREINIT: + int rc; + + git_oid oid; + git_object *obj; + + STRLEN len; + const char *id_str; + + Repository repo = NULL; + + CODE: + id_str = git_ensure_pv_with_len(id, "id", &len); + + rc = git_oid_fromstrn(&oid, id_str, len); + git_check_error(rc); + + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_object_lookup_prefix( + &obj, repo -> repository, &oid, len, GIT_OBJ_ANY + ); + git_check_error(rc); + + RETVAL = git_obj_to_sv(obj, SvRV(self)); + + OUTPUT: RETVAL + +void +checkout(self, target, opts) + Repository self + SV *target + HV *opts + + PREINIT: + int rc; + + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + + CODE: + git_hv_to_checkout_opts(opts, &checkout_opts); + + rc = git_checkout_tree( + self -> repository, git_sv_to_obj(target), &checkout_opts + ); + + Safefree(checkout_opts.paths.strings); + git_check_error(rc); + +void +reset(self, target, opts) + Repository self + SV *target + HV *opts + + PREINIT: + int rc; + + Signature sig; + SV *opt; + AV *lopt; + + CODE: + if ((lopt = git_hv_list_entry(opts, "paths"))) { + SV **path; + + size_t i = 0, count = 0; + git_strarray paths = {0, 0}; + + while ((path = av_fetch(lopt, i++, 0))) { + if (!SvOK(*path)) + continue; + + Renew(paths.strings, count + 1, char *); + paths.strings[count++] = SvPVbyte_nolen(*path); + } + + paths.count = count; + + rc = git_reset_default(self -> repository, git_sv_to_obj(target), &paths); + Safefree(paths.strings); + git_check_error(rc); + } else if ((opt = git_hv_string_entry(opts, "type"))) { + git_reset_t reset = GIT_RESET_SOFT; + const char *type_str = SvPVbyte_nolen(opt); + + if (strcmp(type_str, "soft") == 0) + reset = GIT_RESET_SOFT; + else if (strcmp(type_str, "mixed") == 0) + reset = GIT_RESET_MIXED; + else if (strcmp(type_str, "hard") == 0) + reset = GIT_RESET_HARD; + else + croak_usage("Invalid type '%s'. " + "Valid values: 'soft', 'mixed' or 'hard'", + type_str); + + rc = git_signature_default(&sig, self -> repository); + git_check_error(rc); + + rc = git_reset(self -> repository, git_sv_to_obj(target), reset, sig, NULL); + git_signature_free(sig); + git_check_error(rc); + } + +HV * +status(self, ...) + Repository self + + PROTOTYPE: $;@ + + PREINIT: + int rc, i, count; + + HV *status_hv; + + git_status_list *list; + git_status_options opt = GIT_STATUS_OPTIONS_INIT; + + CODE: + opt.flags |= GIT_STATUS_OPT_DEFAULTS | + GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX | + GIT_STATUS_OPT_RENAMES_FROM_REWRITES; + + /* + * Core git does not recurse untracked dirs, it merely informs + * the user that the directory is untracked. + */ + opt.flags &= ~GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS; + + /* + * GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR seems to be broken + * if files are renamed in both the index and in the working + * tree. Core git does not tell you if the file was renamed in + * the worktree anyway. + */ + if (items > 1) { + opt.flags |= GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH; + + Newx(opt.pathspec.strings, items - 1, char *); + + for (i = 1; i < items; i++) { + size_t index = (size_t) i - 1; + opt.pathspec.strings[index] = + SvPVbyte_nolen(ST(i)); + opt.pathspec.count = index; + } + } + + rc = git_status_list_new(&list, self -> repository, &opt); + Safefree(opt.pathspec.strings); + git_check_error(rc); + + count = (int) git_status_list_entrycount(list); + + status_hv = newHV(); + for (i = 0; i < count; i++) { + AV *flags; + HV *file_status_hv; + + const char *path = NULL; + const git_status_entry *entry = + git_status_byindex(list, i); + + flags = newAV(); + + if (entry -> status & GIT_STATUS_INDEX_NEW) + av_push(flags, newSVpv("index_new", 0)); + + if (entry -> status & GIT_STATUS_INDEX_MODIFIED) + av_push(flags, newSVpv("index_modified", 0)); + + if (entry -> status & GIT_STATUS_INDEX_DELETED) + av_push(flags, newSVpv("index_deleted", 0)); + + if (entry -> status & GIT_STATUS_INDEX_RENAMED) + av_push(flags, newSVpv("index_renamed", 0)); + + if (entry -> status & GIT_STATUS_WT_NEW) + av_push(flags, newSVpv("worktree_new", 0)); + + if (entry -> status & GIT_STATUS_WT_MODIFIED) + av_push(flags, newSVpv("worktree_modified", 0)); + + if (entry -> status & GIT_STATUS_WT_DELETED) + av_push(flags, newSVpv("worktree_deleted", 0)); + + if (entry -> status & GIT_STATUS_WT_RENAMED) + av_push(flags, newSVpv("worktree_renamed", 0)); + + if (entry -> status & GIT_STATUS_IGNORED) + av_push(flags, newSVpv("ignored", 0)); + + file_status_hv = newHV(); + + if (entry -> index_to_workdir) { + if (entry -> status & GIT_STATUS_WT_RENAMED) { + HV *worktree_status_hv = newHV(); + + hv_stores(worktree_status_hv, "old_file", + newSVpv(entry -> index_to_workdir -> old_file.path, 0)); + hv_stores(file_status_hv, "worktree", newRV_noinc((SV *) worktree_status_hv)); + } + + path = entry -> index_to_workdir -> new_file.path; + } + + if (entry -> head_to_index) { + if (entry -> status & GIT_STATUS_INDEX_RENAMED) { + HV *index_status_hv = newHV(); + + hv_stores(index_status_hv, "old_file", + newSVpv(entry -> head_to_index -> old_file.path, 0)); + hv_stores(file_status_hv, "index", newRV_noinc((SV *) index_status_hv)); + } + + if (!path) + path = entry -> head_to_index -> new_file.path; + } + + hv_stores(file_status_hv, "flags", newRV_noinc((SV *) flags)); + hv_store(status_hv, path, strlen(path), newRV_noinc((SV *) file_status_hv), 0); + } + + git_status_list_free(list); + + RETVAL = status_hv; + + OUTPUT: RETVAL + +SV * +path_is_ignored(self, path) + Repository self + const char *path + + PREINIT: + int rc, ignore; + + CODE: + rc = git_ignore_path_is_ignored(&ignore, self -> repository, path); + git_check_error(rc); + + RETVAL = newSViv(ignore); + + OUTPUT: RETVAL + +void +ignore(self, rules) + Repository self + SV *rules + + PREINIT: + int rc; + + CODE: + rc = git_ignore_add_rule(self -> repository, git_ensure_pv(rules, "rules")); + git_check_error(rc); + +Diff +diff(self, ...) + Repository self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + + Diff diff; + Index index; + + char **paths = NULL; + Tree tree = NULL; + + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + + CODE: + rc = git_repository_index(&index, self -> repository); + git_check_error(rc); + + if (items == 2) { + SV *opt; + AV *lopt; + HV *hopt; + HV *opts; + + opts = git_ensure_hv(ST(1), "options"); + + if ((opt = git_hv_sv_entry(opts, "tree")) && SvOK(opt)) + tree = GIT_SV_TO_PTR(Tree, opt); + + if ((hopt = git_hv_hash_entry(opts, "flags"))) + diff_opts.flags |= git_hv_to_diff_flag(hopt); + + if ((hopt = git_hv_hash_entry(opts, "prefix"))) { + SV *ab; + + if ((ab = git_hv_string_entry(hopt, "a"))) + diff_opts.old_prefix = SvPVbyte_nolen(ab); + + if ((ab = git_hv_string_entry(hopt, "b"))) + diff_opts.new_prefix = SvPVbyte_nolen(ab); + } + + if ((opt = git_hv_int_entry(opts, "context_lines"))) + diff_opts.context_lines = (uint16_t) SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "interhunk_lines"))) + diff_opts.interhunk_lines = (uint16_t) SvIV(opt); + + if ((lopt = git_hv_list_entry(opts, "paths"))) { + SV **path; + size_t i = 0, count = 0; + + while ((path = av_fetch(lopt, i++, 0))) { + if (!SvOK(*path)) + continue; + + Renew(paths, count + 1, char *); + paths[count++] = SvPVbyte_nolen(*path); + } + + if (count > 0) { + diff_opts.flags |= GIT_DIFF_DISABLE_PATHSPEC_MATCH; + diff_opts.pathspec.strings = paths; + diff_opts.pathspec.count = count; + } + } + } + + if (tree) { + rc = git_diff_tree_to_index( + &diff, self -> repository, tree, index, &diff_opts + ); + } else { + rc = git_diff_index_to_workdir( + &diff, self -> repository, index, &diff_opts + ); + } + + git_index_free(index); + Safefree(paths); + git_check_error(rc); + + RETVAL = diff; + + OUTPUT: RETVAL + +SV * +merge_base(self, ...) + Repository self + + PROTOTYPE: $;@ + + PREINIT: + int i, rc, count; + + git_oid merge_base, *oids = NULL; + + CODE: + if (items < 3) + croak_usage("At least 2 arguments needed"); + + count = items - 1; + Renew(oids, count, git_oid); + for (i = 0; i < count; ++i) { + if (git_sv_to_commitish(self -> repository, ST(i + 1), oids + i) == NULL) { + Safefree(oids); + croak_resolve("Could not resolve 'object' to a commit id"); + } + } + + rc = git_merge_base_many( + &merge_base, self -> repository, (size_t) count, oids); + Safefree(oids); + git_check_error(rc); + + RETVAL = git_oid_to_sv(&merge_base); + + OUTPUT: RETVAL + +SV * +merge_analysis(self, ref) + Repository self + Reference ref + + PREINIT: + int rc; + + git_merge_head *merge_head; + git_merge_preference_t pref; + git_merge_analysis_t analysis; + + AV *result; + CODE: + rc = git_merge_head_from_ref(&merge_head, self -> repository, ref); + git_check_error(rc); + + rc = git_merge_analysis(&analysis, &pref, + self -> repository, (const git_merge_head **) &merge_head, 1); + git_merge_head_free(merge_head); + git_check_error(rc); + + result = newAV(); + if (analysis & GIT_MERGE_ANALYSIS_NORMAL) + av_push(result, newSVpv("normal", 0)); + if (analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) + av_push(result, newSVpv("up_to_date", 0)); + if (analysis & GIT_MERGE_ANALYSIS_FASTFORWARD) + av_push(result, newSVpv("fast_forward", 0)); + if (analysis & GIT_MERGE_ANALYSIS_UNBORN) + av_push(result, newSVpv("unborn", 0)); + + RETVAL = newRV_noinc((SV *) result); + + OUTPUT: RETVAL + +void +merge(self, ref, ...) + Repository self + Reference ref + + PROTOTYPE: $$;$;$ + PREINIT: + int rc; + + git_merge_head *merge_head; + + git_merge_options merge_opts = GIT_MERGE_OPTIONS_INIT; + git_checkout_options checkout_opts = GIT_CHECKOUT_OPTIONS_INIT; + + CODE: + rc = git_merge_head_from_ref(&merge_head, self -> repository, ref); + git_check_error(rc); + + if (items >= 3) { + HV *opts = git_ensure_hv(ST(2), "merge_opts"); + git_hv_to_merge_opts(opts, &merge_opts); + } + + if (items >= 4) { + HV *opts = git_ensure_hv(ST(3), "checkout_opts"); + git_hv_to_checkout_opts(opts, &checkout_opts); + } + + rc = git_merge( + self -> repository, (const git_merge_head **) &merge_head, + 1, &merge_opts, &checkout_opts + ); + Safefree(checkout_opts.paths.strings); + git_merge_head_free(merge_head); + git_check_error(rc); + +void +branches(self, ...) + SV *self + + PROTOTYPE: $;$ + PREINIT: + int rc; + + Branch branch; + int num_branches = 0; + + git_branch_t type; + git_branch_iterator *itr; + + Repository repo; + + PPCODE: + type = GIT_BRANCH_ALL; + + if (items == 2) { + const char *type_str = git_ensure_pv(ST(1), "type"); + + if (strcmp(type_str, "local") == 0) + type = GIT_BRANCH_LOCAL; + else if (strcmp(type_str, "remote") == 0) + type = GIT_BRANCH_REMOTE; + else if (strcmp(type_str, "all") == 0) + type = GIT_BRANCH_ALL; + else + croak_usage("Invalid branch type '%s'. ", + "Valid values: 'local', 'remote' or 'all'", + type_str); + } + + repo = GIT_SV_TO_PTR(Repository, self); + + rc = git_branch_iterator_new(&itr, repo -> repository, type); + git_check_error(rc); + + while ((rc = git_branch_next(&branch, &type, itr)) == 0) { + SV *perl_ref; + + GIT_NEW_OBJ_WITH_MAGIC( + perl_ref, "Git::Raw::Branch", branch, SvRV(self) + ); + + mXPUSHs(perl_ref); + + num_branches++; + } + + git_branch_iterator_free(itr); + git_check_error(rc); + + XSRETURN(num_branches); + +void +remotes(self) + SV *self + + PREINIT: + int rc; + size_t i; + + int num_remotes = 0; + git_strarray remotes; + + Repository repo; + + PPCODE: + repo = GIT_SV_TO_PTR(Repository, self); + + rc = git_remote_list(&remotes, repo -> repository); + git_check_error(rc); + + for (i = 0; i < remotes.count; i++) { + SV *perl_ref; + git_remote *r = NULL; + Remote remote = NULL; + + rc = git_remote_load(&r, repo -> repository, remotes.strings[i]); + git_check_error(rc); + + Newxz(remote, 1, git_raw_remote); + git_init_remote_callbacks(&remote -> callbacks); + remote -> remote = r; + + GIT_NEW_OBJ_WITH_MAGIC( + perl_ref, "Git::Raw::Remote", remote, SvRV(self) + ); + + mXPUSHs(perl_ref); + + num_remotes++; + } + + git_strarray_free(&remotes); + + XSRETURN(num_remotes); + +void +refs(self) + SV *self + + PREINIT: + int rc; + + Reference ref; + int num_refs = 0; + + git_reference_iterator *itr; + + Repository repo = NULL; + + PPCODE: + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_reference_iterator_new(&itr, repo -> repository); + git_check_error(rc); + + while ((rc = git_reference_next(&ref, itr)) == 0) { + SV *perl_ref; + + GIT_NEW_OBJ_WITH_MAGIC( + perl_ref, "Git::Raw::Reference", ref, SvRV(self) + ); + + mXPUSHs(perl_ref); + + num_refs++; + } + + git_reference_iterator_free(itr); + git_check_error(rc); + + XSRETURN(num_refs); + +SV * +path(self) + Repository self + + PREINIT: + const char *path; + + CODE: + path = git_repository_path(self -> repository); + RETVAL = newSVpv(path, 0); + + OUTPUT: RETVAL + +SV * +workdir(self, ...) + Repository self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + const char *path; + + CODE: + if (items == 2) { + const char *new_dir = git_ensure_pv(ST(1), "new_dir"); + + rc = git_repository_set_workdir(self -> repository, new_dir, 1); + git_check_error(rc); + } + + path = git_repository_workdir(self -> repository); + RETVAL = newSVpv(path, 0); + + OUTPUT: RETVAL + +SV * +blame(self, file) + SV *self + const char *file + + PREINIT: + int rc; + Blame blame; + + Repository repo = NULL; + git_blame_options options = GIT_BLAME_OPTIONS_INIT; + + CODE: + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_blame_file( + &blame, repo -> repository, file, &options); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Blame", blame, SvRV(self) + ); + + OUTPUT: RETVAL + +void +cherry_pick(self, commit, ...) + SV *self + Commit commit + + PROTOTYPE: $$;$;$;$ + PREINIT: + int rc; + + Repository repo = NULL; + git_cherry_pick_options opts = GIT_CHERRY_PICK_OPTIONS_INIT; + + CODE: + if (items >= 3) { + HV *hopts = git_ensure_hv(ST(2), "merge_opts"); + git_hv_to_merge_opts(hopts, &opts.merge_opts); + } + + if (items >= 4) { + HV *hopts = git_ensure_hv(ST(3), "checkout_opts"); + git_hv_to_checkout_opts(hopts, &opts.checkout_opts); + } + + if (items >= 5) { + unsigned int parents = git_commit_parentcount(commit); + int mainline = git_ensure_iv(ST(4), "mainline"); + + if (mainline < 0 || mainline > (int) git_commit_parentcount(commit) - 1) + croak_usage("'mainline' out of range, should be between 0 and %d", + (int) parents - 1); + + opts.mainline = (unsigned int) mainline; + } + + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_cherry_pick( + repo -> repository, + commit, + &opts + ); + git_check_error(rc); + +void +revert(self, commit, ...) + SV *self + Commit commit + + PROTOTYPE: $$;$;$;$ + PREINIT: + int rc; + + Repository repo = NULL; + git_revert_options opts = GIT_CHERRY_PICK_OPTIONS_INIT; + + CODE: + if (items >= 3) { + HV *hopts = git_ensure_hv(ST(2), "merge_opts"); + git_hv_to_merge_opts(hopts, &opts.merge_opts); + } + + if (items >= 4) { + HV *hopts = git_ensure_hv(ST(3), "checkout_opts"); + git_hv_to_checkout_opts(hopts, &opts.checkout_opts); + } + + if (items >= 5) { + unsigned int parents = git_commit_parentcount(commit); + int mainline = git_ensure_iv(ST(4), "mainline"); + + if (mainline < 0 || mainline > (int) git_commit_parentcount(commit) - 1) + croak_usage("'mainline' out of range, should be between 0 and %d", + (int) parents - 1); + + opts.mainline = (unsigned int) mainline; + } + + repo = GIT_SV_TO_PTR(Repository, self); + rc = git_revert( + repo -> repository, + commit, + &opts + ); + git_check_error(rc); + +SV * +state(self) + Repository self + + PREINIT: + int rc; + const char *s = NULL; + + CODE: + rc = git_repository_state(self -> repository); + + switch (rc) { + case GIT_REPOSITORY_STATE_NONE: + s = "none"; + break; + + case GIT_REPOSITORY_STATE_MERGE: + s = "merge"; + break; + + case GIT_REPOSITORY_STATE_REVERT: + s = "revert"; + break; + + case GIT_REPOSITORY_STATE_CHERRY_PICK: + s = "cherry_pick"; + break; + + case GIT_REPOSITORY_STATE_BISECT: + s = "bisect"; + break; + + case GIT_REPOSITORY_STATE_REBASE: + s = "rebase"; + break; + + case GIT_REPOSITORY_STATE_REBASE_INTERACTIVE: + s = "rebase_interactive"; + break; + + case GIT_REPOSITORY_STATE_REBASE_MERGE: + s = "rebase_merge"; + break; + + case GIT_REPOSITORY_STATE_APPLY_MAILBOX: + s = "apply_mailbox"; + break; + + case GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE: + s = "mailbox_or_rebase"; + break; + + default: + croak_assert("Unknown state: %i", rc); + } + + RETVAL = newSVpv(s, 0); + + OUTPUT: RETVAL + +void +state_cleanup(self) + Repository self + + PREINIT: + int rc; + + CODE: + rc = git_repository_state_cleanup(self -> repository); + git_check_error(rc); + +SV * +message(self) + Repository self + + PREINIT: + int rc; + + git_buf buf = GIT_BUF_INIT_CONST(NULL, 0); + + CODE: + RETVAL = &PL_sv_undef; + + rc = git_repository_message(&buf, self -> repository); + if (rc == GIT_OK) + RETVAL = newSVpv(buf.ptr, 0); + + git_buf_free(&buf); + git_check_error(rc); + + OUTPUT: RETVAL + +SV * +is_bare(self) + Repository self + + CODE: + RETVAL = newSViv(git_repository_is_bare(self -> repository)); + + OUTPUT: RETVAL + +SV * +is_empty(self) + Repository self + + CODE: + RETVAL = newSViv(git_repository_is_empty(self -> repository)); + + OUTPUT: RETVAL + +SV * +is_shallow(self) + Repository self + + CODE: + RETVAL = newSViv(git_repository_is_shallow(self -> repository)); + + OUTPUT: RETVAL + +SV * +is_head_detached(self) + Repository self + + CODE: + RETVAL = newSViv(git_repository_head_detached(self -> repository)); + + OUTPUT: RETVAL + +void +DESTROY(self) + Repository self + + CODE: + if (self -> owned) + git_repository_free(self -> repository); + Safefree(self); diff --git a/xs/Signature.xs b/xs/Signature.xs new file mode 100644 index 00000000..61f0f47d --- /dev/null +++ b/xs/Signature.xs @@ -0,0 +1,117 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Signature + +Signature +new(class, name, email, time, off) + SV *class + SV *name + SV *email + SV *time + unsigned off + + PREINIT: + int rc; + Signature sig; + + git_time_t git_time; + + CODE: + sscanf(SvPVbyte_nolen(time), "%" PRId64, &git_time); + + rc = git_signature_new( + &sig, git_ensure_pv(name, "name"), + git_ensure_pv(email, "email"), git_time, off + ); + git_check_error(rc); + + RETVAL = sig; + + OUTPUT: RETVAL + +Signature +now(class, name, email) + SV *class + SV *name + SV *email + + PREINIT: + int rc; + Signature sig; + + CODE: + rc = git_signature_now( + &sig, git_ensure_pv(name, "name"), git_ensure_pv(email, "email") + ); + git_check_error(rc); + + RETVAL = sig; + + OUTPUT: RETVAL + +Signature +default(class, repo) + SV *class + Repository repo + + PREINIT: + int rc; + Signature sig; + + CODE: + rc = git_signature_default(&sig, repo -> repository); + git_check_error(rc); + + RETVAL = sig; + + OUTPUT: RETVAL + +SV * +name(self) + Signature self + + CODE: + RETVAL = newSVpv(self -> name, 0); + + OUTPUT: RETVAL + +SV * +email(self) + Signature self + + CODE: + RETVAL = newSVpv(self -> email, 0); + + OUTPUT: RETVAL + +SV * +time(self) + Signature self + + PREINIT: + char *buf; + git_time_t time; + + CODE: + time = self -> when.time; + + Newx(buf, snprintf(NULL, 0, "%" PRId64, time)+1, char); + sprintf(buf, "%" PRId64, time); + + RETVAL = newSVpv(buf, 0); + Safefree(buf); + + OUTPUT: RETVAL + +int +offset(self) + Signature self + + CODE: + RETVAL = self -> when.offset; + + OUTPUT: RETVAL + +void DESTROY(self) + Signature self + + CODE: + git_signature_free(self); diff --git a/xs/Stash.xs b/xs/Stash.xs new file mode 100644 index 00000000..e4a314d6 --- /dev/null +++ b/xs/Stash.xs @@ -0,0 +1,80 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Stash + +void +save(class, repo, stasher, msg, ...) + SV *class + Repository repo + Signature stasher + SV *msg + + PROTOTYPE: $$$$;$ + + PREINIT: + int rc; + + git_oid oid; + unsigned int stash_flags = GIT_STASH_DEFAULT; + + CODE: + if (items == 5) { + AV *flags; + SV **flag; + size_t i = 0, count = 0; + + flags = git_ensure_av(ST(4), "opts"); + + while ((flag = av_fetch(flags, i++, 0))) { + const char *opt = NULL; + if (!SvPOK(*flag)) + continue; + + opt = SvPVbyte_nolen(*flag); + + if (strcmp(opt, "keep_index") == 0) + stash_flags |= GIT_STASH_KEEP_INDEX; + else if (strcmp(opt, "include_untracked") == 0) + stash_flags |= GIT_STASH_INCLUDE_UNTRACKED; + else if (strcmp(opt, "include_ignored") == 0) + stash_flags |= GIT_STASH_INCLUDE_IGNORED; + ++count; + } + } + + rc = git_stash_save(&oid, repo -> repository, stasher, git_ensure_pv(msg, "msg"), stash_flags); + git_check_error(rc); + +void +foreach(class, repo, cb) + SV *class + SV *repo + SV *cb + + PREINIT: + int rc; + + CODE: + git_foreach_payload payload = { + GIT_SV_TO_PTR(Repository, repo), + repo, + cb, + NULL + }; + + rc = git_stash_foreach( + payload.repo_ptr -> repository, git_stash_foreach_cb, &payload + ); + + git_check_error(rc); + +void +drop(class, repo, index) + SV *class + Repository repo + size_t index + + PREINIT: + int rc; + + CODE: + rc = git_stash_drop(repo -> repository, index); + git_check_error(rc); diff --git a/xs/Tag.xs b/xs/Tag.xs new file mode 100644 index 00000000..cf111b13 --- /dev/null +++ b/xs/Tag.xs @@ -0,0 +1,190 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Tag + +SV * +create(class, repo, name, msg, tagger, target) + SV *class + SV *repo + SV *name + SV *msg + Signature tagger + SV *target + + PREINIT: + int rc; + Tag tag; + + git_oid oid; + git_object *obj; + Repository repo_ptr; + + CODE: + obj = git_sv_to_obj(target); + + if (obj == NULL) + croak_usage("Invalid type for '%s', expected a commitish", "target"); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + + rc = git_tag_create( + &oid, repo_ptr -> repository, git_ensure_pv(name, "name"), + obj, tagger, git_ensure_pv(msg, "msg"), 0 + ); + git_check_error(rc); + + rc = git_tag_lookup(&tag, repo_ptr -> repository, &oid); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), tag, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +lookup(class, repo, id) + SV *class + SV *repo + SV *id + + PREINIT: + int rc; + + Tag tag; + git_oid oid; + Repository repo_ptr; + + STRLEN len; + const char *id_str; + + CODE: + id_str = git_ensure_pv_with_len(id, "id", &len); + + rc = git_oid_fromstrn(&oid, id_str, len); + git_check_error(rc); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_tag_lookup_prefix(&tag, repo_ptr -> repository, &oid, len); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), tag, SvRV(repo) + ); + + OUTPUT: RETVAL + +void +foreach(class, repo, cb) + SV *class + SV *repo + SV *cb + + PREINIT: + int rc; + + CODE: + git_foreach_payload payload = { + GIT_SV_TO_PTR(Repository, repo), + repo, + cb, + SvPVbyte_nolen(class) + }; + + rc = git_tag_foreach(payload.repo_ptr -> repository, git_tag_foreach_cbb, &payload); + + if (rc != GIT_EUSER) + git_check_error(rc); + +void +delete(self) + SV *self + + PREINIT: + int rc; + + Tag tag_ptr; + Repository repo; + + CODE: + tag_ptr = GIT_SV_TO_PTR(Tag, self); + + repo = INT2PTR( + Repository, SvIV((SV *) GIT_SV_TO_MAGIC(self)) + ); + + rc = git_tag_delete(repo -> repository, git_tag_name(tag_ptr)); + git_check_error(rc); + + git_tag_free(tag_ptr); + sv_setiv(SvRV(self), 0); + +SV * +id(self) + Tag self + + CODE: + RETVAL = git_oid_to_sv(git_tag_id(self)); + + OUTPUT: RETVAL + +SV * +name(self) + Tag self + + CODE: + RETVAL = newSVpv(git_tag_name(self), 0); + + OUTPUT: RETVAL + +SV * +message(self) + Tag self + + CODE: + RETVAL = newSVpv(git_tag_message(self), 0); + + OUTPUT: RETVAL + +SV * +tagger(self) + Tag self + + PREINIT: + int rc; + Signature tagger, result; + + CODE: + if ((tagger = (Signature) git_tag_tagger(self)) != NULL) { + rc = git_signature_dup(&result, tagger); + git_check_error(rc); + + GIT_NEW_OBJ( + RETVAL, "Git::Raw::Signature", result + ); + } else + RETVAL = &PL_sv_undef; + + OUTPUT: RETVAL + +SV * +target(self) + SV *self + + PREINIT: + int rc; + git_object *obj; + + CODE: + rc = git_tag_target(&obj, GIT_SV_TO_PTR(Tag, self)); + git_check_error(rc); + + RETVAL = git_obj_to_sv(obj, GIT_SV_TO_MAGIC(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_tag_free(GIT_SV_TO_PTR(Tag, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Tree.xs b/xs/Tree.xs new file mode 100644 index 00000000..4537b386 --- /dev/null +++ b/xs/Tree.xs @@ -0,0 +1,292 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Tree + +SV * +lookup(class, repo, id) + SV *class + SV *repo + SV *id + + PREINIT: + int rc; + + Tree tree; + git_oid oid; + + STRLEN len; + const char *id_str; + + Repository repo_ptr; + + INIT: + len = 0; + id_str = git_ensure_pv_with_len(id, "id", &len); + + CODE: + rc = git_oid_fromstrn(&oid, id_str, len); + git_check_error(rc); + + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + + rc = git_tree_lookup_prefix(&tree, repo_ptr -> repository, &oid, len); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), tree, SvRV(repo) + ); + + OUTPUT: RETVAL + +SV * +id(self) + Tree self + + CODE: + RETVAL = git_oid_to_sv(git_tree_id(self)); + + OUTPUT: RETVAL + +AV * +entries(self) + SV *self + + PREINIT: + int rc; + int i, count; + + Tree self_ptr; + Tree_Entry entry; + AV *entries = newAV(); + + CODE: + self_ptr = GIT_SV_TO_PTR(Tree, self); + + count = git_tree_entrycount(self_ptr); + + for (i = 0; i < count; i++) { + SV *tmp; + + Tree_Entry tmp_entry = (Tree_Entry) + git_tree_entry_byindex(self_ptr, i); + + rc = git_tree_entry_dup(&entry, tmp_entry); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + tmp, "Git::Raw::Tree::Entry", + entry, GIT_SV_TO_MAGIC(self) + ); + + av_push(entries, tmp); + } + + RETVAL = entries; + + OUTPUT: RETVAL + +SV * +entry_byname(self, name) + SV *self + SV *name + + PREINIT: + int rc; + + Tree_Entry tmp_entry, entry; + + CODE: + tmp_entry = (Tree_Entry) git_tree_entry_byname( + GIT_SV_TO_PTR(Tree, self), + git_ensure_pv(name, "name") + ); + + if (!tmp_entry) + croak_usage("Invalid name"); + + rc = git_tree_entry_dup(&entry, tmp_entry); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Tree::Entry", + entry, GIT_SV_TO_MAGIC(self) + ); + + OUTPUT: RETVAL + +SV * +entry_bypath(self, path) + SV *self + SV *path + + PREINIT: + int rc; + + Tree_Entry entry; + + CODE: + rc = git_tree_entry_bypath( + &entry, GIT_SV_TO_PTR(Tree, self), + git_ensure_pv(path, "path") + ); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Tree::Entry", entry, GIT_SV_TO_MAGIC(self) + ); + + OUTPUT: RETVAL + +Diff +diff(self, ...) + Tree self + + PROTOTYPE: $;$ + + PREINIT: + int rc; + + Diff diff; + + char **paths = NULL; + Tree tree = NULL; + + git_diff_options diff_opts = GIT_DIFF_OPTIONS_INIT; + + CODE: + if (items == 2) { + SV *opt; + AV *lopt; + HV *hopt; + + HV *opts; + + opts = git_ensure_hv(ST(1), "options"); + + if ((opt = git_hv_sv_entry(opts, "tree"))) + tree = GIT_SV_TO_PTR(Tree, opt); + + if ((hopt = git_hv_hash_entry(opts, "flags"))) + diff_opts.flags |= git_hv_to_diff_flag(hopt); + + if ((hopt = git_hv_hash_entry(opts, "prefix"))) { + SV *ab; + + if ((ab = git_hv_string_entry(hopt, "a"))) + diff_opts.old_prefix = SvPVbyte_nolen(ab); + + if ((ab = git_hv_string_entry(hopt, "b"))) + diff_opts.new_prefix = SvPVbyte_nolen(ab); + } + + if ((opt = git_hv_int_entry(opts, "context_lines"))) + diff_opts.context_lines = (uint16_t) SvIV(opt); + + if ((opt = git_hv_int_entry(opts, "interhunk_lines"))) + diff_opts.interhunk_lines = (uint16_t) SvIV(opt); + + if ((lopt = git_hv_list_entry(opts, "paths"))) { + SV **path; + size_t i = 0, count = 0; + + while ((path = av_fetch(lopt, i++, 0))) { + if (!SvOK(*path)) + continue; + + Renew(paths, count + 1, char *); + paths[count++] = SvPVbyte_nolen(*path); + } + + if (count > 0) { + diff_opts.flags |= GIT_DIFF_DISABLE_PATHSPEC_MATCH; + diff_opts.pathspec.strings = paths; + diff_opts.pathspec.count = count; + } + } + } + + if (tree) { + rc = git_diff_tree_to_tree( + &diff, git_tree_owner(self), self, tree, &diff_opts + ); + } else { + rc = git_diff_tree_to_workdir( + &diff, git_tree_owner(self), self, &diff_opts + ); + } + + Safefree(paths); + git_check_error(rc); + + RETVAL = diff; + + OUTPUT: RETVAL + +SV * +merge(self, ancestor_tree, their_tree, ...) + SV *self + SV *ancestor_tree + SV *their_tree + + PROTOTYPE: $$$;$ + PREINIT: + int rc; + + SV *repo; + Repository repo_ptr; + + Tree ancestor = NULL, ours = NULL, theirs = NULL; + + Index index; + git_merge_options merge_opts = GIT_MERGE_OPTIONS_INIT; + + CODE: + if (items == 4) { + HV *opts = git_ensure_hv(ST(3), "options"); + git_hv_to_merge_opts(opts, &merge_opts); + } + + if (SvOK(ancestor_tree)) + ancestor = GIT_SV_TO_PTR(Tree, ancestor_tree); + + if (SvOK(their_tree)) + theirs = GIT_SV_TO_PTR(Tree, their_tree); + + ours = GIT_SV_TO_PTR(Tree, self); + + repo = GIT_SV_TO_MAGIC(self); + repo_ptr = INT2PTR(Repository, SvIV((SV *) repo)); + + rc = git_merge_trees(&index, repo_ptr -> repository, + ancestor, ours, theirs, &merge_opts); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Index", index, repo + ); + + OUTPUT: RETVAL + +SV * +is_tree(self) + SV *self + + CODE: + RETVAL = newSVuv(1); + + OUTPUT: RETVAL + +SV * +is_blob(self) + SV *self + + CODE: + RETVAL = newSVuv(0); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_tree_free(GIT_SV_TO_PTR(Tree, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Tree/Builder.xs b/xs/Tree/Builder.xs new file mode 100644 index 00000000..be83f906 --- /dev/null +++ b/xs/Tree/Builder.xs @@ -0,0 +1,167 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Tree::Builder + +SV * +new(class, repo, ...) + const char *class + SV *repo + + PREINIT: + int rc; + + Tree source = NULL; + Tree_Builder builder; + + CODE: + if (items > 2) + source = GIT_SV_TO_PTR(Tree, ST(2)); + + rc = git_treebuilder_create(&builder, source); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC(RETVAL, class, builder, SvRV(repo)); + + OUTPUT: RETVAL + +void +clear(self) + Tree_Builder self + + CODE: + git_treebuilder_clear(self); + +unsigned int +entry_count(self) + Tree_Builder self + + CODE: + RETVAL = git_treebuilder_entrycount(self); + + OUTPUT: RETVAL + +SV * +get(self, filename) + SV *self + const char *filename + + PREINIT: + int rc; + + CODE: + const Tree_Entry tmp_entry = (const Tree_Entry) + git_treebuilder_get( + GIT_SV_TO_PTR(Tree::Builder, self), filename + ); + + if (tmp_entry) { + Tree_Entry entry; + + rc = git_tree_entry_dup(&entry, tmp_entry); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Tree::Entry", + entry, GIT_SV_TO_MAGIC(self) + ); + } + else + RETVAL = &PL_sv_undef; + + OUTPUT: RETVAL + +void +insert(self, filename, object, mode) + SV *self + const char *filename + SV *object + int mode + + PREINIT: + int rc; + + const git_oid *oid; + const Tree_Entry tmp_entry; + Tree_Entry entry; + + int is_returning = GIMME_V != G_VOID; + + PPCODE: + if (sv_isobject(object) && sv_derived_from(object, "Git::Raw::Blob")) + oid = git_blob_id(GIT_SV_TO_PTR(Blob, object)); + else + oid = git_tree_id(GIT_SV_TO_PTR(Tree, object)); + + rc = git_treebuilder_insert( + is_returning ? (const git_tree_entry **) &tmp_entry : NULL, + GIT_SV_TO_PTR(Tree::Builder, self), + filename, oid, mode + ); + git_check_error(rc); + + if (is_returning) { + rc = git_tree_entry_dup(&entry, tmp_entry); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + ST(0), "Git::Raw::Tree::Entry", entry, + GIT_SV_TO_MAGIC(self) + ); + + sv_2mortal(ST(0)); + XSRETURN(1); + } else XSRETURN_EMPTY; + +void +remove(self, filename) + Tree_Builder self + const char *filename + + PREINIT: + int rc; + + CODE: + rc = git_treebuilder_remove(self, filename); + git_check_error(rc); + +void +write(self) + SV *self + + PREINIT: + int rc; + + Tree tree; + git_oid oid; + + SV *repo; + Repository repo_ptr; + + int is_returning = GIMME_V != G_VOID; + + PPCODE: + repo = GIT_SV_TO_MAGIC(self); + repo_ptr = INT2PTR(Repository, SvIV((SV *) repo)); + + rc = git_treebuilder_write( + &oid, repo_ptr -> repository, GIT_SV_TO_PTR(Tree::Builder, self) + ); + git_check_error(rc); + + if (is_returning) { + rc = git_tree_lookup(&tree, repo_ptr -> repository, &oid); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + ST(0), "Git::Raw::Tree", tree, repo + ); + sv_2mortal(ST(0)); + + XSRETURN(1); + } else XSRETURN_EMPTY; + +void +DESTROY(self) + SV *self + + CODE: + git_treebuilder_free(GIT_SV_TO_PTR(Tree::Builder, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Tree/Entry.xs b/xs/Tree/Entry.xs new file mode 100644 index 00000000..6d155103 --- /dev/null +++ b/xs/Tree/Entry.xs @@ -0,0 +1,68 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Tree::Entry + +SV * +id(self) + Tree_Entry self + + PREINIT: + const git_oid *oid; + + CODE: + oid = git_tree_entry_id(self); + RETVAL = git_oid_to_sv((git_oid *) oid); + + OUTPUT: RETVAL + +SV * +name(self) + Tree_Entry self + + PREINIT: + const char *name; + + CODE: + name = git_tree_entry_name(self); + RETVAL = newSVpv(name, 0); + + OUTPUT: RETVAL + +SV * +file_mode(self) + Tree_Entry self + + CODE: + RETVAL = newSViv(git_tree_entry_filemode(self)); + + OUTPUT: RETVAL + +SV * +object(self) + SV *self + + PREINIT: + int rc; + + git_object *obj; + Repository repo; + + Tree_Entry entry; + + CODE: + repo = INT2PTR(Repository, SvIV((SV *) GIT_SV_TO_MAGIC(self))); + + entry = GIT_SV_TO_PTR(Tree::Entry, self); + + rc = git_tree_entry_to_object(&obj, repo -> repository, entry); + git_check_error(rc); + + RETVAL = git_obj_to_sv(obj, GIT_SV_TO_MAGIC(self)); + + OUTPUT: RETVAL + +void +DESTROY(self) + SV *self + + CODE: + git_tree_entry_free(GIT_SV_TO_PTR(Tree::Entry, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self)); diff --git a/xs/Walker.xs b/xs/Walker.xs new file mode 100644 index 00000000..8daad8b3 --- /dev/null +++ b/xs/Walker.xs @@ -0,0 +1,205 @@ +MODULE = Git::Raw PACKAGE = Git::Raw::Walker + +SV * +create(class, repo) + SV *class + SV *repo + + PREINIT: + int rc; + + Repository repo_ptr; + Walker walk; + + CODE: + repo_ptr = GIT_SV_TO_PTR(Repository, repo); + rc = git_revwalk_new(&walk, repo_ptr -> repository); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, SvPVbyte_nolen(class), walk, SvRV(repo) + ); + + OUTPUT: RETVAL + +void +push(self, commit) + Walker self + Commit commit + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_push(self, git_commit_id(commit)); + git_check_error(rc); + +void +push_glob(self, glob) + Walker self + const char* glob + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_push_glob(self, glob); + git_check_error(rc); + +void +push_ref(self, ref) + Walker self + const char* ref + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_push_ref(self, ref); + git_check_error(rc); + +void +push_head(self) + Walker self + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_push_head(self); + git_check_error(rc); + +void +push_range(self, ...) + SV *self + + PROTOTYPE: $;@ + PREINIT: + int rc, free_buffer = 0; + + git_repository *repo; + Walker walk; + + char *range = NULL; + + CODE: + walk = GIT_SV_TO_PTR(Walker, self); + repo = git_revwalk_repository(walk); + + if (items == 3) { + git_oid start, end; + + if (git_sv_to_commitish(repo, ST(1), &start) == NULL) + croak_resolve("Could not resolve 'start' to a commit id"); + if (git_sv_to_commitish(repo, ST(2), &end) == NULL) + croak_resolve("Could not resolve 'end' to a commit id"); + + Newx(range, 2 * GIT_OID_HEXSZ + 2 + 1, char); + free_buffer = 1; + + git_oid_tostr(range, GIT_OID_HEXSZ + 1, &start); + strncpy(range + GIT_OID_HEXSZ, "..", 2); + git_oid_tostr(range + GIT_OID_HEXSZ + 2, GIT_OID_HEXSZ + 1, &end); + } else if (items == 2) { + range = (char *) git_ensure_pv(ST(1), "range"); + } else + croak_usage("'range' not provided"); + + rc = git_revwalk_push_range(walk, range); + if (free_buffer) + Safefree(range); + git_check_error(rc); + +void +hide(self, commit) + Walker self + Commit commit + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_hide(self, git_commit_id(commit)); + git_check_error(rc); + +void +hide_glob(self, glob) + Walker self + char* glob + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_hide_glob(self, glob); + git_check_error(rc); + +void +hide_ref(self, ref) + Walker self + char* ref + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_hide_ref(self, ref); + git_check_error(rc); + +void +hide_head(self) + Walker self + + PREINIT: + int rc; + + CODE: + rc = git_revwalk_hide_head(self); + git_check_error(rc); + +SV * +next(self) + SV *self + + PREINIT: + int rc; + + SV *repo; + + Walker walk; + + git_oid oid; + Commit commit = NULL; + + CODE: + repo = GIT_SV_TO_MAGIC(self); + walk = GIT_SV_TO_PTR(Walker, self); + + rc = git_revwalk_next(&oid, walk); + if (rc == GIT_ITEROVER) + XSRETURN_UNDEF; + git_check_error(rc); + + rc = git_commit_lookup(&commit, git_revwalk_repository(walk), &oid); + git_check_error(rc); + + GIT_NEW_OBJ_WITH_MAGIC( + RETVAL, "Git::Raw::Commit", commit, repo + ); + + OUTPUT: RETVAL + +void +reset(self) + Walker self + + CODE: + git_revwalk_reset(self); + +void +DESTROY(self) + SV *self + + CODE: + git_revwalk_free(GIT_SV_TO_PTR(Walker, self)); + SvREFCNT_dec(GIT_SV_TO_MAGIC(self));