@@ -683,6 +683,8 @@ func ViewPullCommits(ctx *context.Context) {
683
683
684
684
// ViewPullFiles render pull request changed files list page
685
685
func ViewPullFiles (ctx * context.Context ) {
686
+ commitToShow := ctx .Params ("sha" )
687
+
686
688
ctx .Data ["PageIsPullList" ] = true
687
689
ctx .Data ["PageIsPullFiles" ] = true
688
690
@@ -719,8 +721,16 @@ func ViewPullFiles(ctx *context.Context) {
719
721
}
720
722
721
723
startCommitID = prInfo .MergeBase
722
- endCommitID = headCommitID
723
724
725
+ if len (commitToShow ) > 0 {
726
+ endCommitID = commitToShow
727
+ ctx .Data ["IsShowingAllCommits" ] = false
728
+ } else {
729
+ endCommitID = headCommitID
730
+ ctx .Data ["IsShowingAllCommits" ] = true
731
+ }
732
+
733
+ ctx .Data ["Commits" ] = prInfo .Commits
724
734
ctx .Data ["Username" ] = ctx .Repo .Owner .Name
725
735
ctx .Data ["Reponame" ] = ctx .Repo .Repository .Name
726
736
ctx .Data ["AfterCommitID" ] = endCommitID
@@ -732,14 +742,30 @@ func ViewPullFiles(ctx *context.Context) {
732
742
if fileOnly && (len (files ) == 2 || len (files ) == 1 ) {
733
743
maxLines , maxFiles = - 1 , - 1
734
744
}
735
- diffOptions := & gitdiff.DiffOptions {
736
- BeforeCommitID : startCommitID ,
737
- AfterCommitID : endCommitID ,
738
- SkipTo : ctx .FormString ("skip-to" ),
739
- MaxLines : maxLines ,
740
- MaxLineCharacters : setting .Git .MaxGitDiffLineCharacters ,
741
- MaxFiles : maxFiles ,
742
- WhitespaceBehavior : gitdiff .GetWhitespaceFlag (ctx .Data ["WhitespaceBehavior" ].(string )),
745
+
746
+ var diffOptions * gitdiff.DiffOptions
747
+
748
+ // show only a single commit for this pr
749
+ if len (commitToShow ) > 0 {
750
+ diffOptions = & gitdiff.DiffOptions {
751
+ AfterCommitID : endCommitID ,
752
+ SkipTo : ctx .FormString ("skip-to" ),
753
+ MaxLines : maxLines ,
754
+ MaxLineCharacters : setting .Git .MaxGitDiffLineCharacters ,
755
+ MaxFiles : maxFiles ,
756
+ WhitespaceBehavior : gitdiff .GetWhitespaceFlag (ctx .Data ["WhitespaceBehavior" ].(string )),
757
+ }
758
+ } else {
759
+ // show full PR diff
760
+ diffOptions = & gitdiff.DiffOptions {
761
+ BeforeCommitID : startCommitID ,
762
+ AfterCommitID : endCommitID ,
763
+ SkipTo : ctx .FormString ("skip-to" ),
764
+ MaxLines : maxLines ,
765
+ MaxLineCharacters : setting .Git .MaxGitDiffLineCharacters ,
766
+ MaxFiles : maxFiles ,
767
+ WhitespaceBehavior : gitdiff .GetWhitespaceFlag (ctx .Data ["WhitespaceBehavior" ].(string )),
768
+ }
743
769
}
744
770
745
771
var methodWithError string
0 commit comments