diff options
author | marmis85 <marmis85@gmail.com> | 2014-12-31 03:15:04 +0100 |
---|---|---|
committer | marmis85 <marmis85@gmail.com> | 2014-12-31 03:15:04 +0100 |
commit | 021cff67f3514b4c2cb1f7b859cbfc314afa0a0c (patch) | |
tree | 47253adc2352071bc09754ae12903e1364026c5a | |
parent | ac1584249c262e447a6360734597fa17fe077718 (diff) | |
download | gitlab-ce-021cff67f3514b4c2cb1f7b859cbfc314afa0a0c.tar.gz |
Flatten the directory hierarchy while there is only one directory descendant
-rw-r--r-- | app/helpers/tree_helper.rb | 10 | ||||
-rw-r--r-- | app/views/projects/tree/_tree_item.html.haml | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb index e32aeba5f8f..5a96a208e93 100644 --- a/app/helpers/tree_helper.rb +++ b/app/helpers/tree_helper.rb @@ -113,6 +113,16 @@ module TreeHelper tree_join(@ref, file) end + # returns the relative path of the first subdir that doesn't have only one directory descendand + def flatten_tree(tree) + subtree = Gitlab::Git::Tree.where(@repository, @commit.id, tree.path) + if subtree.count == 1 && subtree.first.dir? + return tree_join(tree.name, flatten_tree(subtree.first)) + else + return tree.name + end + end + def leave_edit_message "Leave edit mode?\nAll unsaved changes will be lost." end diff --git a/app/views/projects/tree/_tree_item.html.haml b/app/views/projects/tree/_tree_item.html.haml index f8cecf9be1f..5adbf93ff8f 100644 --- a/app/views/projects/tree/_tree_item.html.haml +++ b/app/views/projects/tree/_tree_item.html.haml @@ -2,7 +2,8 @@ %td.tree-item-file-name = tree_icon(type) %span.str-truncated - = link_to tree_item.name, project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name)) + - path = flatten_tree(tree_item) + = link_to path, project_tree_path(@project, tree_join(@id || @commit.id, path)) %td.tree_time_ago.cgray = render 'spinner' %td.hidden-xs.tree_commit |