77 const wxString& aBaseRef,
78 const wxString& aHeadRef )
80 std::vector<CHANGED_FILE>
result;
88 if( !baseTree || !headTree )
91 git_diff* diff =
nullptr;
92 git_diff_options opts;
93 git_diff_options_init( &opts, GIT_DIFF_OPTIONS_VERSION );
95 if( git_diff_tree_to_tree( &diff, aRepo, baseTree.get(), headTree.get(), &opts ) != 0 )
97 wxLogTrace(
traceGit,
"git_diff_tree_to_tree failed: %s",
105 git_diff_find_options findOpts;
106 git_diff_find_options_init( &findOpts, GIT_DIFF_FIND_OPTIONS_VERSION );
107 findOpts.flags = GIT_DIFF_FIND_RENAMES | GIT_DIFF_FIND_COPIES;
108 git_diff_find_similar( diff, &findOpts );
110 result.reserve( git_diff_num_deltas( diff ) );
113 [&
result](
const git_diff_delta& aDelta )
116 entry.
status = deltaStatusToEnum( aDelta.status );
117 entry.
path = wxString::FromUTF8( aDelta.new_file.path
118 ? aDelta.new_file.path
119 : aDelta.old_file.path );
121 if( aDelta.status == GIT_DELTA_RENAMED || aDelta.status == GIT_DELTA_COPIED )
122 entry.
oldPath = wxString::FromUTF8( aDelta.old_file.path );
124 result.push_back( std::move( entry ) );