diff --git a/templates/repo/view_file.tmpl b/templates/repo/view_file.tmpl
index e6591df7e3..854ae962c6 100644
--- a/templates/repo/view_file.tmpl
+++ b/templates/repo/view_file.tmpl
@@ -59,9 +59,15 @@
{{svg "octicon-download"}}
{{svg "octicon-copy" 14}}
{{if .EnableFeed}}
-
- {{svg "octicon-rss" 14}}
-
+ {{if .IsViewBranch}}
+
+ {{svg "octicon-rss" 14}}
+
+ {{else}}
+
+ {{svg "octicon-rss" 14}}
+
+ {{end}}
{{end}}
{{if .Repository.CanEnableEditor}}
{{if .CanEditFile}}
diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go
index 15292bbec1..3f2755870e 100644
--- a/tests/integration/repo_test.go
+++ b/tests/integration/repo_test.go
@@ -407,6 +407,40 @@ func TestViewFileInRepo(t *testing.T) {
assert.EqualValues(t, 0, repoSummary.Length())
}
+func TestViewFileInRepoRSSFeed(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ hasFileRSSFeed := func(t *testing.T, ref string) bool {
+ t.Helper()
+
+ req := NewRequestf(t, "GET", "/user2/repo1/src/%s/README.md", ref)
+ resp := MakeRequest(t, req, http.StatusOK)
+
+ htmlDoc := NewHTMLParser(t, resp.Body)
+ fileFeed := htmlDoc.doc.Find(`a[href*="/user2/repo1/rss/"]`)
+
+ return fileFeed.Length() != 0
+ }
+
+ t.Run("branch", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ assert.True(t, hasFileRSSFeed(t, "branch/master"))
+ })
+
+ t.Run("tag", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ assert.False(t, hasFileRSSFeed(t, "tag/v1.1"))
+ })
+
+ t.Run("commit", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ assert.False(t, hasFileRSSFeed(t, "commit/65f1bf27bc3bf70f64657658635e66094edbcb4d"))
+ })
+}
+
// TestBlameFileInRepo repo description, topics and summary should not be displayed when running blame on a file
func TestBlameFileInRepo(t *testing.T) {
defer tests.PrepareTestEnv(t)()