From 44f192e5a65772099219f0c27633347d30fdea2d Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 23 Feb 2016 13:02:37 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=80=BB=E6=95=B0=E4=B8=BA=E8=B4=9F=E6=95=B0=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/attachment.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/models/attachment.rb b/app/models/attachment.rb index ea9ad2cc0..0bbbd9a54 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -643,8 +643,13 @@ class Attachment < ActiveRecord::Base def decrease_attchments_count if self.container_type == "Project" && !self.project.project_score.nil? - aatach_count = self.container.project_score.attach_num - 1 - self.container.project_score.update_attribute(:attach_num, aatach_count) + attach_count = self.container.project_score.attach_num - 1 + if attach_count < 0 + self.container.project_score.update_attribute(:attach_num, 0) + else + self.container.project_score.update_attribute(:attach_num, attach_count) + end + end end end From 90208e166f5ba09146c00c2d9477f1bfe894de44 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 23 Feb 2016 13:24:20 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E5=B0=8F=E4=BA=8E0=E6=83=85=E5=86=B5=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/attachment.rb | 7 +------ app/models/issue.rb | 2 +- app/models/journal.rb | 5 +++-- app/models/message.rb | 4 ++-- app/models/news.rb | 2 +- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 0bbbd9a54..588ee144d 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -644,12 +644,7 @@ class Attachment < ActiveRecord::Base def decrease_attchments_count if self.container_type == "Project" && !self.project.project_score.nil? attach_count = self.container.project_score.attach_num - 1 - if attach_count < 0 - self.container.project_score.update_attribute(:attach_num, 0) - else - self.container.project_score.update_attribute(:attach_num, attach_count) - end - + self.container.project_score.update_attribute(:attach_num, attach_count < 0 ? 0 : attach_count) end end end diff --git a/app/models/issue.rb b/app/models/issue.rb index e1de4cd9e..c82f6f0be 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -184,7 +184,7 @@ class Issue < ActiveRecord::Base def decrease_issues_count unless self.project.project_score.nil? issue_count = self.project.project_score.issue_num - 1 - self.project.project_score.update_attribute(:issue_num, issue_count) + self.project.project_score.update_attribute(:issue_num, issue_count < 0 ? 0 : issue_count) end end diff --git a/app/models/journal.rb b/app/models/journal.rb index b184c82e6..c37b8d2c5 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -219,8 +219,9 @@ class Journal < ActiveRecord::Base # 减少留言数量统计 def decrease_issues_journal_count unless self.issue.project.nil? - project = self.issue.project - project.project_score.update_attribute(:issue_journal_num, project.project_score.issue_journal_num - 1) + journal_count = self.issue.project.project_score.issue_journal_num - 1 + # project = self.issue.project + self.issue.project.project_score.update_attribute(:issue_journal_num, journal_count < 0 ? 0 : journal_count) end end diff --git a/app/models/message.rb b/app/models/message.rb index 675d37790..6381f444f 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -146,10 +146,10 @@ class Message < ActiveRecord::Base # 讨论区 if self.parent_id.nil? count = self.project.project_score.board_num - 1 - self.project.project_score.update_attribute(:board_num, count) + self.project.project_score.update_attribute(:board_num, count < 0 ? 0 : count) else # 回复 count = self.project.project_score.board_message_num - 1 - self.project.project_score.update_attribute(:board_message_num, count) + self.project.project_score.update_attribute(:board_message_num, count < 0 ? 0 : count) end end end diff --git a/app/models/news.rb b/app/models/news.rb index fee5d2801..d0fccae17 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -126,7 +126,7 @@ class News < ActiveRecord::Base def decrease_news_count if self.project && !self.project.project_score.nil? count = self.project.project_score.news_num - 1 - self.project.project_score.update_attribute(:news_num, count) + self.project.project_score.update_attribute(:news_num, count < 0 ? 0 : count) end end From 40fb140b6d52c7bb662ce283afbc0ac8f5c692f9 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 23 Feb 2016 15:09:15 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E8=AE=B0=E5=BD=95diff=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 6 ++++++ app/views/repositories/_revisions.html.erb | 2 +- config/routes.rb | 8 ++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 707e87fd1..95e9acc80 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -521,6 +521,12 @@ update end end + # 没次提交对应的文件差异 + def commit_diff + + end + + def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) diff --git a/app/views/repositories/_revisions.html.erb b/app/views/repositories/_revisions.html.erb index 4d6e39f88..6de04b1d2 100644 --- a/app/views/repositories/_revisions.html.erb +++ b/app/views/repositories/_revisions.html.erb @@ -40,7 +40,7 @@ <%= textilizable(truncate_at_line_break(changeset.message)) %>
- <%= h truncate(changeset.short_id.to_s, :length => 20) %> + <%= link_to truncate(changeset.short_id.to_s, :length => 20), :controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev %>
diff --git a/config/routes.rb b/config/routes.rb index 7060e4eb6..310fe29dd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -831,7 +831,7 @@ RedmineApp::Application.routes.draw do :controller => 'repositories', :format => false, :constraints => { - :action => /(browse|show|entry|raw|annotate|diff)/, + :action => /(browse|show|entry|raw|annotate|diff|commit_diff)/, :rev => /[a-z0-9\.\-_]+/ } @@ -850,15 +850,15 @@ RedmineApp::Application.routes.draw do :controller => 'repositories', :format => false, :constraints => { - :action => /(browse|show|entry|raw|annotate|diff)/, + :action => /(browse|show|entry|raw|annotate|diff|commit_diff)/, :rev => /[a-z0-9\.\-_]+/ } get 'projects/:id/repository/:repository_id/:action(/*path(.:ext))', :controller => 'repositories', - :action => /(browse|show|entry|raw|changes|annotate|diff)/ + :action => /(browse|show|entry|raw|changes|annotate|diff|commit_diff)/ get 'projects/:id/repository/:action(/*path(.:ext))', :controller => 'repositories', - :action => /(browse|show|entry|raw|changes|annotate|diff)/ + :action => /(browse|show|entry|raw|changes|annotate|diff|commit_diff)/ get 'projects/:id/repository/:repository_id', :to => 'repositories#show', :path => nil get 'projects/:id/repository', :to => 'repositories#show', :path => nil From ea2033eb30c03beb221285cebdb785fc37b171b0 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 24 Feb 2016 11:24:05 +0800 Subject: [PATCH 4/6] =?UTF-8?q?Git=E6=96=87=E4=BB=B6=E8=AF=86=E5=88=AB?= =?UTF-8?q?=EF=BC=8C=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/project.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 11c01aa09..2ca1d56d8 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -694,7 +694,7 @@ p.other-formats { text-align: right; font-size:0.9em; color: #666; } /*pre标签换行*/ .break_word{word-break: break-all;word-wrap: break-word;} -.break_word_firefox{white-space: pre-wrap;word-break: break-all;} +.break_word_firefox{white-space: pre-wrap !important;word-break: break-all;} /*问题跟踪attachment显示*/ div.attachments { margin-top: 12px; } From aef2dd8d1a83b82cc48f5a55073799a5fc92a767 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 25 Feb 2016 11:06:10 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=BA=93=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E4=BF=AE=E8=AE=A2=E5=A5=BD=EF=BC=8C=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E6=96=87=E4=BB=B6=EF=BC=8C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=AF=B9=E5=BA=94=E5=86=85=E5=AE=B9=20=E9=AB=98?= =?UTF-8?q?=E4=BA=AE=E6=98=BE=E7=A4=BA=E5=86=85=E5=AE=B9=20=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E4=BF=AE=E8=AE=A2=E5=AF=B9=E6=AF=94=20=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 9 +-- app/helpers/repositories_helper.rb | 10 ++++ app/views/common/_file.html.erb | 2 +- .../repositories/_commit_details.html.erb | 15 +++++ .../repositories/_dir_list_content.html.erb | 8 +-- app/views/repositories/_revisions.html.erb | 18 +----- app/views/repositories/changes.html.erb | 2 +- app/views/repositories/commit_diff.html.erb | 55 ++++++++++++++++++ public/images/vlicon/file.png | Bin 0 -> 1167 bytes public/stylesheets/project.css | 19 +++++- 10 files changed, 110 insertions(+), 28 deletions(-) create mode 100644 app/views/repositories/_commit_details.html.erb create mode 100644 app/views/repositories/commit_diff.html.erb create mode 100644 public/images/vlicon/file.png diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 95e9acc80..7655f1eb4 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -34,7 +34,7 @@ class RepositoriesController < ApplicationController before_filter :find_repository, :only => [:edit, :update, :destroy, :committers] before_filter :find_project_repository, :except => [:new, :create, :newcreate, :edit, :update, :destroy, :committers, :newrepo, :to_gitlab, :forked] before_filter :find_changeset, :only => [:revision, :add_related_issue, :remove_related_issue] - before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked] + before_filter :authorize , :except => [:newrepo,:newcreate,:fork, :to_gitlab, :forked, :commit_diff] accept_rss_auth :revisions # hidden repositories filter // 隐藏代码过滤器 before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ] @@ -521,12 +521,13 @@ update end end - # 没次提交对应的文件差异 + # 每次提交对应的文件差异 def commit_diff - + @commit_diff = $g.commit_diff(@project.gpid, params[:changeset]) + @commit_details = $g.commit(@project.gpid, params[:changeset]) + render :layout => 'base_projects' end - def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index ff4aa61fb..36187b460 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -41,6 +41,16 @@ module RepositoriesHelper identifiers.include?(iden) ? false :true end + # 获取diff内容行号 + def diff_line_num content + content.scan(/@@ -(\d+),\d+ \+\d+,\d+ @@/).first.join("").to_i + end + + # 处理内容 + def diff_content content + content.gsub!(/.*@@ -\d+,\d+ \+\d+,\d+ @@\n/m,'') + end + def format_revision(revision) if revision.respond_to? :format_identifier revision.format_identifier diff --git a/app/views/common/_file.html.erb b/app/views/common/_file.html.erb index 97443beea..486c760f1 100644 --- a/app/views/common/_file.html.erb +++ b/app/views/common/_file.html.erb @@ -8,7 +8,7 @@ <%= line_num %> -
<%= line.html_safe %>
+
<%= line.html_safe %>
<% line_num += 1 %> diff --git a/app/views/repositories/_commit_details.html.erb b/app/views/repositories/_commit_details.html.erb new file mode 100644 index 000000000..ef8faecd7 --- /dev/null +++ b/app/views/repositories/_commit_details.html.erb @@ -0,0 +1,15 @@ +
+ <% if !user_commit_rep(changeset.author_email).nil? %> + + <%= image_tag(url_to_avatar(user_commit_rep(changeset.author_email)), :width => "20", :height => "20", :class => "fl portraitRadius mt2 ml4 mr5") %> + <%= link_to user_commit_rep(changeset.author_email), user_path(user_commit_rep(changeset.author_email)), :length => 30 %>提交于 +
+   +
+ <% else %> + <%= changeset.author_email %>提交于 +
+   +
+ <% end %> +
\ No newline at end of file diff --git a/app/views/repositories/_dir_list_content.html.erb b/app/views/repositories/_dir_list_content.html.erb index 81706c25e..dda0cddbd 100644 --- a/app/views/repositories/_dir_list_content.html.erb +++ b/app/views/repositories/_dir_list_content.html.erb @@ -24,10 +24,10 @@ <% if @repository.report_last_commit %> -<%= link_to_revision(entry.changeset, @repository) if entry.changeset %> -<%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %> -<%= entry.author %> -<%=h truncate(entry.changeset.comments, :length => 50) if entry.changeset %> + <%= link_to_revision(entry.changeset, @repository) if entry.changeset %> + <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %> + <%= entry.author %> + <%=h truncate(entry.changeset.comments, :length => 50) if entry.changeset %> <% end %> <% end %> diff --git a/app/views/repositories/_revisions.html.erb b/app/views/repositories/_revisions.html.erb index 6de04b1d2..a27789dc1 100644 --- a/app/views/repositories/_revisions.html.erb +++ b/app/views/repositories/_revisions.html.erb @@ -20,27 +20,13 @@
  • -
    - <% if !user_commit_rep(changeset.author_email).nil? %> - - <%= image_tag(url_to_avatar(user_commit_rep(changeset.author_email)), :width => "20", :height => "20", :class => "fl portraitRadius mt2 ml4 mr5") %> - <%= link_to user_commit_rep(changeset.author_email), user_path(user_commit_rep(changeset.author_email)), :length => 30 %>提交于 -
    -   -
    - <% else %> - <%= changeset.author_email %>提交于 -
    -   -
    - <% end %> -
    + <%= render :partial => 'commit_details', :locals => {:changeset => changeset} %>
    <%= textilizable(truncate_at_line_break(changeset.message)) %>
    - <%= link_to truncate(changeset.short_id.to_s, :length => 20), :controller => 'repositories', :action => 'revision', :id => repository.project, :repository_id => repository.identifier_param, :rev => rev %> + <%= link_to truncate(changeset.short_id.to_s, :length => 20), {:controller => 'repositories', :action => 'commit_diff', :id => project.id, :changeset => changeset.id} %>
    diff --git a/app/views/repositories/changes.html.erb b/app/views/repositories/changes.html.erb index 3780df172..726d5d19d 100644 --- a/app/views/repositories/changes.html.erb +++ b/app/views/repositories/changes.html.erb @@ -15,7 +15,7 @@
    - <%= render(:partial => 'revisions', :locals => {:project => @project, :path => @path ,:revisions => @commits, :entry => @entry ,:commits_pages =>@commits_pages , :commits_count => @commits_count}) unless @commits.empty? %> + <%= render(:partial => 'revisions', :locals => {:project => @project, :path => @path , :revisions => @commits, :entry => @entry , :commits_pages => @commits_pages , :commits_count => @commits_count}) unless @commits.empty? %>
    <% content_for :header_tags do %> diff --git a/app/views/repositories/commit_diff.html.erb b/app/views/repositories/commit_diff.html.erb new file mode 100644 index 000000000..c0308fea3 --- /dev/null +++ b/app/views/repositories/commit_diff.html.erb @@ -0,0 +1,55 @@ +
    +

    <%= render :partial => 'breadcrumbs', :locals => {:path => @path, :kind => 'dir', :revision => @rev} %>

    +
    + + + + + + + +
  • + <%= render :partial => 'commit_details', :locals => {:changeset => @commit_details} %> +
  • +
+
<%= @commit_details.message %>
+ + + + + + + + +<% @commit_diff.each do |cd| %> + +
+ + + <% line_num = diff_line_num(cd.diff) %> + <% diff_content = diff_content(cd.diff) %> + <% syntax_highlight_lines(cd.new_path, Redmine::CodesetUtil.to_utf8_by_setting(diff_content)).each do |line| %> + + + <% if line[0,1] == "-" %> + + <% elsif line[0,1] == "+" %> + + <% else%> + + <% end %> + + <% line_num += 1 %> + <% end %> + +
+ <%= line_num %> +
<%= line.html_safe %>
<%= line.html_safe %>
<%= line.html_safe %>
+
+<% end %> \ No newline at end of file diff --git a/public/images/vlicon/file.png b/public/images/vlicon/file.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfa6078d3d01782244c2c3eab309b009087e03a GIT binary patch literal 1167 zcmaJ>TWHi+7>*WQZP$mY*miU=#D`UIlF3}snb@($$&8)VlrkN#g34r)(>8RH6O&UX z?SpuuC{9tq^;*j=K8aFA6x3QPC>6Do)d!JXx-TLq6sn-m2i@*T?bLnPF(f$`zVG}0 z|NI~4Xj9{sCFP!Sf*_V88^jbIm*Q{vqJ{Xs|BU_%9%@j$1vSG~l$R|)2rA41GO5dL zAO&Q#YtIuM;3vl z?FDMWf;u@8eQDN?s2Dcw#AD%;{yY`-NLqZ z8s66u#JsYkD5RY~v!AD@>&rsKva(-^io%E26Mg$%jP2@U_FTE8Wd4}08oHg+h#&r9 z&yu5C%tO`v_fI*OtF8>)eaTdfAD*lqd+Mdn4Htyt2V^Z*`S5CB_|c1PuecMFp-cXr zIJ@-d;D%#65A-a^eDXYhFqHe7>KT~0-FW@kCTe9v@a>zz_{HZngEiGRexJYN%-F7d zW0{rOp-Y5=i&K&#~k#&;| literal 0 HcmV?d00001 diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 2ca1d56d8..1a231b8a0 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -896,9 +896,9 @@ a:hover.Reply_pic{border:1px solid #64bdd9;} /*end*/ /***** Diff *****/ .diff_out { background: #fcc; } -.diff_out span { background: #faa; } +/*.diff_out span { background: #faa; }*/ .diff_in { background: #cfc; } -.diff_in span { background: #afa; } +/*.diff_in span { background: #afa; }*/ .text-diff { padding: 1em; @@ -1169,3 +1169,18 @@ div.disable_link {background-color: #c1c1c1 !important;} .proInfoBox2{ border:1px solid #dddddd; height:45px; padding:10px 0; background-color:#f1f1f1;} .proInfoBox2 ul li{ height:24px; position:relative;} .maxwidth150{max-width: 150px;} + +/*版本库diff*/ +.showing-changes-info {width:650px; padding:10px; background-color:#ffffff; line-height:2;} +.showing-changes-project {width:650px; padding:10px; border-top:1px solid #dce0e6; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;} +.showing-changes-row {width:650px; padding:10px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;} +#changed-files-detail {display:none;} +#changed-files-detail li {list-style-type:disc; margin-left:15px;} +.showing-changes-detail {width:670px; border-bottom:1px solid #dce0e6; background-color:#f1f1f1;} +.changes-detail-chart {width:100%; overflow:auto; border-collapse:collapse; margin:0px; padding:0px; background-color:#f1f1f1;} +.diff-line-number {width:35px; min-width:35px; max-width:50px; border-right:1px solid #c1c1c1; padding:0px 5px; text-align:right; background-color:#f1f1f1;} +.code-line-old {background-color:#ffecec;} +.number-line-old {background-color:#ffdddd; border-color:#f1c0c0;} +.code-line-new {background-color:#eaffea;} +.number-line-new {background-color:#dbffdb; border-color:#c1e9c1;} +.branch-label {padding-right: 5px; border-radius:2px; color:#888888; display:inline-block; background-color:#f8fafc;} \ No newline at end of file From 8b839caa48dfa146c3275c937bfd6056d54a1c37 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 25 Feb 2016 11:12:24 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_projects.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 657873f8b..33c792aaf 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -12,7 +12,7 @@ <%= favicon %> <%= javascript_heads %> <%= heads_for_theme %> - <%= stylesheet_link_tag 'header','public', 'pleft', 'project','prettify','jquery/jquery-ui-1.9.2','repository','share' %> + <%= stylesheet_link_tag 'header','scm','public', 'pleft', 'project','prettify','jquery/jquery-ui-1.9.2','repository','share' %> <%= javascript_include_tag 'cookie','project', 'header','prettify','select_list_move','attachments' %> <%= call_hook :view_layouts_base_html_head %>