From 3d2aaa169ea7cfa8d416103c70711a440c716dd9 Mon Sep 17 00:00:00 2001
From: Headless <skv-headless@yandex.ru>
Date: Mon, 19 Jan 2015 16:07:37 +0300
Subject: [PATCH] show diff in submodules

---
 app/helpers/diff_helper.rb                        | 15 +++++++++++++++
 app/helpers/submodule_helper.rb                   |  4 ++--
 app/views/projects/diffs/_file.html.haml          |  3 +++
 app/views/projects/tree/_submodule_item.html.haml | 10 +---------
 4 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb
index a15af0be01a..8c921cba543 100644
--- a/app/helpers/diff_helper.rb
+++ b/app/helpers/diff_helper.rb
@@ -135,4 +135,19 @@ module DiffHelper
       'Side-by-side'
     end
   end
+
+  def submodule_link(blob, ref)
+    tree, commit = submodule_links(blob, ref)
+    commit_id = if commit.nil?
+                  blob.id[0..10]
+                else
+                  link_to "#{blob.id[0..10]}", commit
+                end
+
+    [
+      content_tag(:span, link_to(truncate(blob.name, length: 40), tree)),
+      '@',
+      content_tag(:span, commit_id, class: 'monospace'),
+    ].join(' ').html_safe
+  end
 end
diff --git a/app/helpers/submodule_helper.rb b/app/helpers/submodule_helper.rb
index 09e5c08e621..841e7fd17f6 100644
--- a/app/helpers/submodule_helper.rb
+++ b/app/helpers/submodule_helper.rb
@@ -2,8 +2,8 @@ module SubmoduleHelper
   include Gitlab::ShellAdapter
 
   # links to files listing for submodule if submodule is a project on this server
-  def submodule_links(submodule_item)
-    url = @repository.submodule_url_for(@ref, submodule_item.path)
+  def submodule_links(submodule_item, ref = nil)
+    url = @repository.submodule_url_for(ref, submodule_item.path)
 
     return url, nil unless url =~ /([^\/:]+\/[^\/]+\.git)\Z/
 
diff --git a/app/views/projects/diffs/_file.html.haml b/app/views/projects/diffs/_file.html.haml
index 34d13502231..8d080f710d8 100644
--- a/app/views/projects/diffs/_file.html.haml
+++ b/app/views/projects/diffs/_file.html.haml
@@ -9,6 +9,9 @@
       .diff-btn-group
         - if @commit.parent_ids.present?
           = view_file_btn(@commit.parent_id, diff_file, project)
+    - elsif diff_file.diff.submodule?
+      - submodule_item = project.repository.blob_at(@commit.id, diff_file.file_path)
+      = submodule_link(submodule_item, @commit.id)
     - else
       - if diff_file.renamed_file
         %span= "#{diff_file.old_path} renamed to #{diff_file.new_path}"
diff --git a/app/views/projects/tree/_submodule_item.html.haml b/app/views/projects/tree/_submodule_item.html.haml
index 46e9be4af83..20c70cac699 100644
--- a/app/views/projects/tree/_submodule_item.html.haml
+++ b/app/views/projects/tree/_submodule_item.html.haml
@@ -1,14 +1,6 @@
-- tree, commit = submodule_links(submodule_item)
 %tr{ class: "tree-item" }
   %td.tree-item-file-name
     %i.fa.fa-archive
-    %span
-      = link_to truncate(submodule_item.name, length: 40), tree
-    @
-    %span.monospace
-      - if commit.nil?
-        #{truncate_sha(submodule_item.id)}
-      - else
-        = link_to "#{truncate_sha(submodule_item.id)}", commit
+    = submodule_link(submodule_item, @ref)
   %td
   %td.hidden-xs
-- 
GitLab