@ -59,27 +59,28 @@ func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diff
ctx , _ , finished := process . GetManager ( ) . AddContext ( repo . Ctx , fmt . Sprintf ( "GetRawDiffForFile: [repo_path: %s]" , repo . Path ) )
defer finished ( )
var cmd * exec . Cmd
cmd := exec . CommandContext ( ctx , GitExecutable , GlobalCommandArgs ... )
switch diffType {
case RawDiffNormal :
if len ( startCommit ) != 0 {
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "diff" , "-M" , startCommit , endCommit } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "diff" , "-M" , startCommit , endCommit } , fileArgs ... ) ... )
} else if commit . ParentCount ( ) == 0 {
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "show" , endCommit } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "show" , endCommit } , fileArgs ... ) ... )
} else {
c , _ := commit . Parent ( 0 )
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "diff" , "-M" , c . ID . String ( ) , endCommit } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "diff" , "-M" , c . ID . String ( ) , endCommit } , fileArgs ... ) ... )
}
case RawDiffPatch :
if len ( startCommit ) != 0 {
query := fmt . Sprintf ( "%s...%s" , endCommit , startCommit )
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , "--root" , query } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , "--root" , query } , fileArgs ... ) ... )
} else if commit . ParentCount ( ) == 0 {
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , "--root" , endCommit } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , "--root" , endCommit } , fileArgs ... ) ... )
} else {
c , _ := commit . Parent ( 0 )
query := fmt . Sprintf ( "%s...%s" , endCommit , c . ID . String ( ) )
cmd = exec . CommandContext ( ctx , GitExecutable , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , query } , fileArgs ... ) ... )
cmd . Args = append ( cmd . Args , append ( [ ] string { "format-patch" , "--no-signature" , "--stdout" , query } , fileArgs ... ) ... )
}
default :
return fmt . Errorf ( "invalid diffType: %s" , diffType )