Merge remote-tracking branch 'remotes/origin/szzh' into develop

competition V20140708
nwb 11 years ago
commit dd396a6da2

@ -60,7 +60,7 @@ class AttachmentsController < ApplicationController
:disposition => (@attachment.image? ? 'inline' : 'attachment') :disposition => (@attachment.image? ? 'inline' : 'attachment')
end end
rescue => e rescue => e
redirect_to "http://forge.trustie.net/file_not_found.html" redirect_to "http://" + (Setting.host_name.to_s) +"/file_not_found.html"
end end
#更新资源文件类型 #更新资源文件类型

@ -25,7 +25,7 @@ class AvatarController < ApplicationController
end end
end end
end end
if @temp_file && (@temp_file.size > 0) if @temp_file && (@temp_file.size > 0)
diskfile=disk_filename(@source_type,@source_id) diskfile=disk_filename(@source_type,@source_id)
@urlfile='/' << File.join("images","avatars",avatar_directory(@source_type),avatar_filename(@source_id,@image_file)) @urlfile='/' << File.join("images","avatars",avatar_directory(@source_type),avatar_filename(@source_id,@image_file))
logger.info("Saving avatar '#{diskfile}' (#{@temp_file.size} bytes)") logger.info("Saving avatar '#{diskfile}' (#{@temp_file.size} bytes)")
@ -55,7 +55,7 @@ class AvatarController < ApplicationController
# saved = @avatar.save # saved = @avatar.save
begin begin
f = Magick::ImageList.new(diskfile) f = Magick::ImageList.new(diskfile)
width = 300.0; width = 300.0
proportion = (width/f[0].columns) proportion = (width/f[0].columns)
height = (f[0].rows*proportion) height = (f[0].rows*proportion)
f.resize_to_fill!(width,height) f.resize_to_fill!(width,height)

@ -26,8 +26,11 @@ class ContestsController < ApplicationController
# @contests = Contest.visible # @contests = Contest.visible
# @contests ||= [] # @contests ||= []
@offset, @limit = api_offset_and_limit({:limit => 10}) @offset, @limit = api_offset_and_limit({:limit => 10})
@contests = Contest.visible @contests = Contest.visible
@contests = @contests.like(params[:name]) if params[:name].present? @contests = @contests.like(params[:name]) if params[:name].present?
if params[:contests_search]
(redirect_to contests_path, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
end
@contest_count = @contests.count @contest_count = @contests.count
@contest_pages = Paginator.new @contest_count, @limit, params['page'] @contest_pages = Paginator.new @contest_count, @limit, params['page']

@ -99,7 +99,8 @@ class CoursesController < ApplicationController
# add by nwb # add by nwb
def search def search
courses_all = Course.all_course courses_all = Course.all_course
name = params[:name]
(redirect_to courses_path, :notice => l(:label_sumbit_empty);return) if name.blank?
@courses = courses_all.visible @courses = courses_all.visible
if params[:name].present? if params[:name].present?
@courses_all = @courses.like(params[:name]) @courses_all = @courses.like(params[:name])

@ -129,6 +129,7 @@ class ForumsController < ApplicationController
format.html { redirect_to @forum, notice: l(:label_forum_create_succ) } format.html { redirect_to @forum, notice: l(:label_forum_create_succ) }
format.json { render json: @forum, status: :created, location: @forum } format.json { render json: @forum, status: :created, location: @forum }
else else
flash.now[:error] = "#{l :label_forum_create_fail}: #{@forum.errors.full_messages[0]}"
format.html { render action: "new" } format.html { render action: "new" }
format.json { render json: @forum.errors, status: :unprocessable_entity } format.json { render json: @forum.errors, status: :unprocessable_entity }
end end
@ -165,6 +166,8 @@ class ForumsController < ApplicationController
def search_forum def search_forum
# @forums = paginateHelper Forum.where("name LIKE '%#{params[:name]}%'") # @forums = paginateHelper Forum.where("name LIKE '%#{params[:name]}%'")
name = params[:name]
(redirect_to forums_path, :notice => l(:label_sumbit_empty);return) if name.blank?
@offset, @limit = api_offset_and_limit({:limit => 10}) @offset, @limit = api_offset_and_limit({:limit => 10})
@forums_all = Forum.where("name LIKE '%#{params[:name]}%'") @forums_all = Forum.where("name LIKE '%#{params[:name]}%'")
@forums_count = @forums_all.count @forums_count = @forums_all.count

@ -42,7 +42,7 @@ class ProjectsController < ApplicationController
before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches] before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar]
before_filter :file, :statistics, :watcherlist before_filter :file, :statistics, :watcherlist
before_filter :find_project_repository, :only => [:show]
# 除非项目内人员,不可查看成员, TODO: 完了写报表里去 # 除非项目内人员,不可查看成员, TODO: 完了写报表里去
before_filter :memberAccess, only: :member before_filter :memberAccess, only: :member
@ -78,6 +78,14 @@ class ProjectsController < ApplicationController
### added by william ### added by william
include ActsAsTaggableOn::TagsHelper include ActsAsTaggableOn::TagsHelper
def find_project_repository
unless @project.repositories.nil?
@project.repositories.each do |repository|
repository.fetch_changesets if Setting.autofetch_changesets?
end
end
end
def enterprise_course def enterprise_course
session[:enterprise_college] = 2 session[:enterprise_college] = 2
respond_to do |format| respond_to do |format|

@ -373,7 +373,7 @@ class UsersController < ApplicationController
def search def search
sort_init 'login', 'asc' sort_init 'login', 'asc'
sort_update %w(login firstname lastname mail admin created_on last_login_on) sort_update %w(login firstname lastname mail admin created_on last_login_on)
(redirect_to users_path, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
case params[:format] case params[:format]
when 'xml', 'json' when 'xml', 'json'
@offset, @limit = api_offset_and_limit({:limit => 15}) @offset, @limit = api_offset_and_limit({:limit => 15})

@ -88,7 +88,8 @@ class WelcomeController < ApplicationController
when :users_student when :users_student
redirect_to users_search_path(:name => search_condition, :role => :student) redirect_to users_search_path(:name => search_condition, :role => :student)
else else
redirect_to home_path, :alert => l(:label_sumbit_empty) #redirect_to home_path, :alert => l(:label_sumbit_empty)
(redirect_to home_path, :notice => l(:label_sumbit_empty);return) #if params[:name].blank?
end end
} }
end end

@ -256,8 +256,8 @@ module CoursesHelper
people people
end end
# 截至到2014-03-17 这个是最终的判断课程是否过期的方法 # 截至到2014-03-17 这个是最终的判断课程是否过期的方法
def course_endTime_timeout? project def course_endTime_timeout? course
end_time_str = Course.find_by_extra(project.try(:extra)).try(:endup_time) end_time_str = course.try(:endup_time)
begin begin
cTime = Time.parse(end_time_str.to_s) cTime = Time.parse(end_time_str.to_s)
rescue TypeError,ArgumentError rescue TypeError,ArgumentError

@ -24,8 +24,9 @@ class Contest < ActiveRecord::Base
validates_length_of :name, :maximum => NAME_LENGTH_LIMIT validates_length_of :name, :maximum => NAME_LENGTH_LIMIT
validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT validates_length_of :description, :maximum => DESCRIPTION_LENGTH_LIMIT
validates_presence_of :author_id, :name, :deadline validates_presence_of :author_id, :name, :budget
validates_format_of :deadline, :with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/ #validates_format_of :deadline, :with => /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/
validates_format_of :deadline, :with =>/^[1-9][0-9]{3}\-0?[1-9]|1[12]\-0?[1-9]|[12]\d|3[01]$/
# validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/ # validates_format_of :budget, :with => /^(\d+)$|^(\d+).([0-9]{2})|^(\d+).([0-9]{1})$/
validate :validate_user validate :validate_user
after_create :act_as_activity after_create :act_as_activity

@ -9,7 +9,7 @@ class Forum < ActiveRecord::Base
'memo_count', 'memo_count',
'last_memo_id', 'last_memo_id',
'creator_id' 'creator_id'
validates_presence_of :name, :creator_id validates_presence_of :name, :creator_id, :description
validates_length_of :name, maximum: 50 validates_length_of :name, maximum: 50
validates_length_of :description, maximum: 255 validates_length_of :description, maximum: 255
validates :name, :uniqueness => true validates :name, :uniqueness => true

@ -990,13 +990,9 @@ class Issue < ActiveRecord::Base
end end
def to_s def to_s
"#{tracker} ##{id}: #{subject}" "#{tracker} ##{project_index}: #{subject}"
end end
# 缺陷在项目中的序号
def inProjectIndex
(self.project.issues.index(self).to_i + 1).to_s
end
# Returns a string of css classes that apply to the issue # Returns a string of css classes that apply to the issue
def css_classes def css_classes
@ -1160,9 +1156,22 @@ class Issue < ActiveRecord::Base
"" << self.project.name.to_s << "" << self.project.name.to_s <<
"#" << project_index "#" << project_index
end end
def project_index def project_index
(self.project.issues.index(self).to_i + 1).to_s if self.project.issues.include?(self)
(self.project.issues.index(self).to_i + 1).to_s
else
issue_index = 1
self.project.issues.each do |issue|
if self.id == nil
issue_index = self.project.issues.count +1
break
elsif self.id > issue.id
issue_index = issue_index+1
end
end
issue_index.to_s
end
end end
private private

@ -29,7 +29,7 @@ class Journal < ActiveRecord::Base
# end # end
attr_accessor :indice attr_accessor :indice
acts_as_event :title =>Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.inProjectIndex}#{status}: #{o.issue.subject}" }, acts_as_event :title =>Proc.new {|o| status = ((s = o.new_status) ? " (#{s})" : nil); "#{o.issue.tracker} ##{o.issue.project_index}#{status}: #{o.issue.subject}" },
:description =>:notes, :description =>:notes,
:author => :user, :author => :user,
:group => :issue, :group => :issue,

@ -96,8 +96,9 @@ class Mailer < ActionMailer::Base
# issue_add(issue) => Mail::Message object # issue_add(issue) => Mail::Message object
# Mailer.issue_add(issue).deliver => sends an email to issue recipients # Mailer.issue_add(issue).deliver => sends an email to issue recipients
def issue_add(issue) def issue_add(issue)
issue_id = issue.project_index
redmine_headers 'Project' => issue.project.identifier, redmine_headers 'Project' => issue.project.identifier,
'Issue-Id' => (issue.project.issues.index(issue).to_i + 1).to_s, 'Issue-Id' => issue_id,
'Issue-Author' => issue.author.login 'Issue-Author' => issue.author.login
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
message_id issue message_id issue
@ -108,7 +109,7 @@ class Mailer < ActionMailer::Base
cc = issue.watcher_recipients - recipients cc = issue.watcher_recipients - recipients
mail :to => recipients, mail :to => recipients,
:cc => cc, :cc => cc,
:subject => "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}" :subject => "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] (#{issue.status.name}) #{issue.subject}"
end end
# Builds a Mail::Message object used to email recipients of the edited issue. # Builds a Mail::Message object used to email recipients of the edited issue.
@ -118,8 +119,9 @@ class Mailer < ActionMailer::Base
# Mailer.issue_edit(journal).deliver => sends an email to issue recipients # Mailer.issue_edit(journal).deliver => sends an email to issue recipients
def issue_edit(journal) def issue_edit(journal)
issue = journal.journalized.reload issue = journal.journalized.reload
issue_id = issue.project_index
redmine_headers 'Project' => issue.project.identifier, redmine_headers 'Project' => issue.project.identifier,
'Issue-Id' => (issue.project.issues.index(issue).to_i + 1).to_s, 'Issue-Id' => issue_id.to_s,
'Issue-Author' => issue.author.login 'Issue-Author' => issue.author.login
redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
message_id journal message_id journal
@ -128,7 +130,7 @@ class Mailer < ActionMailer::Base
recipients = journal.recipients recipients = journal.recipients
# Watchers in cc # Watchers in cc
cc = journal.watcher_recipients - recipients cc = journal.watcher_recipients - recipients
s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] " s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue_id}] "
s << "(#{issue.status.name}) " if journal.new_value_for('status_id') s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
s << issue.subject s << issue.subject
@issue = issue @issue = issue

@ -41,7 +41,7 @@ class Project < ActiveRecord::Base
has_many :principals, :through => :member_principals, :source => :principal has_many :principals, :through => :member_principals, :source => :principal
has_many :enabled_modules, :dependent => :delete_all has_many :enabled_modules, :dependent => :delete_all
has_and_belongs_to_many :trackers, :order => "#{Tracker.table_name}.position" has_and_belongs_to_many :trackers, :order => "#{Tracker.table_name}.position"
has_many :issues, :dependent => :destroy, :include => [:status, :tracker] has_many :issues, :dependent => :destroy, :include => [:status, :tracker] , :order => "id ASC"
has_many :issue_changes, :through => :issues, :source => :journals has_many :issue_changes, :through => :issues, :source => :journals
has_many :versions, :dependent => :destroy, :order => "#{Version.table_name}.effective_date DESC, #{Version.table_name}.name DESC" has_many :versions, :dependent => :destroy, :order => "#{Version.table_name}.effective_date DESC, #{Version.table_name}.name DESC"
has_many :time_entries, :dependent => :delete_all has_many :time_entries, :dependent => :delete_all

@ -42,17 +42,17 @@
<div id="upload_progressbar" style="height:14px; margin-bottom: 10px;display: block"></div> <div id="upload_progressbar" style="height:14px; margin-bottom: 10px;display: block"></div>
</div> </div>
</span> </span>
<a href="javascript:void(0);" class="btn_addPic" style="text-decoration:none;"> <a href="javascript:void(0);" class="btn_addPic" style="text-decoration:none;">
<span><%= l(:button_upload_photo) %></span> <span><%= l(:button_upload_photo) %></span>
</a> </a>
<span class="add_avatar" style="margin-left: -55px;width: 70px"> <span class="add_avatar" style="margin-left: -55px;width: 70px">
<%= file_field_tag 'avatar[image]', <%= file_field_tag 'avatar[image]',
:id => nil, :id => nil,
:class => 'file_selector', :class => 'file_selector',
:style => 'width:70px;',#added by young :style => 'width:70px;',#added by young
:size => "1", :size => "1",
:multiple => false, :multiple => false,
:onchange => 'addInputAvatar(this);', :onchange => 'addInputAvatar(this);',
:data => { :data => {
:max_file_size => Setting.attachment_max_size.to_i.kilobytes, :max_file_size => Setting.attachment_max_size.to_i.kilobytes,
:max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)), :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
@ -61,7 +61,7 @@
:description_placeholder => nil ,# l(:label_optional_description) :description_placeholder => nil ,# l(:label_optional_description)
:source_type => source.class.to_s, :source_type => source.class.to_s,
:source_id => source.id.to_s :source_id => source.id.to_s
} %> } %>
</span> </span>
</div> </div>
<% content_for :header_tags do %> <% content_for :header_tags do %>

@ -57,7 +57,7 @@
<td style="width: 50%"> <td style="width: 50%">
<div id = "what_is_project_div" style="display: none"> <div id = "what_is_project_div" style="display: none">
<p>项目是一种由用户创建的基于网络的协作空间,能够为个人或小组提供分布式的协同交流和资料管理等方面的支持。</p> <p>项目是一种由用户创建的基于网络的协作空间,能够为个人或小组提供分布式的协同交流和资料管理等方面的支持。</p>
<p>项目托管平台:<a href="http://forge.trustie.net/">http://forge.trustie.net/</a> </p> <p>项目托管平台:<%= link_to Setting.protocol + "://" + Setting.host_name + "/", home_path %> </p>
<%= link_to "我要创建项目",new_project_path(course: 0, project_type: 0), :target => '_blank'%> <%= link_to "我要创建项目",new_project_path(course: 0, project_type: 0), :target => '_blank'%>
</div> </div>
</td> </td>

@ -15,7 +15,7 @@
<div class="project-search" style="float: right"> <div class="project-search" style="float: right">
<%= text_field_tag 'name', params[:name], :size => 30 %> <%= text_field_tag 'name', params[:name], :size => 30 %>
<%= hidden_field_tag 'project_type', params[:project_type] %> <%= hidden_field_tag 'project_type', params[:project_type] %>
<%= submit_tag l(:label_search), :class => "enterprise", :name => nil %> <%= submit_tag l(:label_search), :class => "enterprise", :name => "contests_search" %>
</div> </div>
</td> </td>
</tr> </tr>

@ -17,9 +17,9 @@
<% @admin = @course.course_infos%> <% @admin = @course.course_infos%>
<%if @admin&&@admin.first&&@admin.first.user&&@admin.first.user.user_extensions%> <%if @admin&&@admin.first&&@admin.first.user&&@admin.first.user.user_extensions%>
<!-- <%= @admin.first.user.user_extensions.occupation %> --> <!-- <%= @admin.first.user.user_extensions.occupation %> -->
<%# unless @course.course_extra.school.nil? %> <% unless @course.teacher.user_extensions.school.nil? %>
<%= @course.teacher.user_extensions.school.try(:name) %> <%= link_to @course.teacher.user_extensions.school.try(:name), school_course_list_path(@course.teacher.user_extensions.school) %>
<%# end %> <% end %>
<% end %> <% end %>
</p> </p>
<p > <p >

@ -6,7 +6,7 @@
<%= form_tag(:controller => 'courses', :action => 'search', :method => :get) do %> <%= form_tag(:controller => 'courses', :action => 'search', :method => :get) do %>
<table width="940px"> <table width="940px">
<tr> <tr>
<td class="info_font" style="width: 220px; color: #15bccf"><%= l(:label_course_practice) %></td> <td class="info_font" style="width: 220px; color: #15bccf"><%= l(:label_course_all) %></td>
<td class="location-list"><strong><%= l(:label_user_location) %> :</strong></td> <td class="location-list"><strong><%= l(:label_user_location) %> :</strong></td>
<td rowspan="2"> <td rowspan="2">
<% if User.current.logged?%> <% if User.current.logged?%>
@ -24,8 +24,8 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="padding-left: 8px"><a><%= link_to request.host()+"/course", :controller => 'courses', :action => 'index', :course_type => 1 %> </a></td> <td style="padding-left: 8px"><a><%= link_to request.host()+"/courses", :controller => 'courses', :action => 'index' %> </a></td>
<td ><%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_course_practice), :controller => 'courses', :action => 'index', :course_type => 1 %></td> <td ><%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_course_all), :controller => 'courses', :action => 'index' %></td>
</tr> </tr>
</table> </table>
<% end %> <% end %>

@ -22,7 +22,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="padding-left: 8px"><a><%= link_to "forge.trustie.net/courses", :controller => 'courses', :action => 'index'%> </a></td> <td style="padding-left: 8px"><a><%= link_to request.host() + "/courses", :controller => 'courses', :action => 'index'%> </a></td>
<td ><%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_course_practice), :controller => 'courses', :action => 'index' %></td> <td ><%=link_to l(:field_homepage), home_path %> > <%=link_to l(:label_course_practice), :controller => 'courses', :action => 'index' %></td>
</tr> </tr>
</table> </table>

@ -44,7 +44,7 @@
</td> </td>
<% if e.event_type == "issue" %> <% if e.event_type == "issue" %>
<td align="right"> <td align="right">
<span> <%= link_to l(:label_find_all_comments), issue_path(e) %> </span><span class="font_lighter"><%= l(:label_comments_count, :count => e.journals.count) %></span> <span> <%= link_to l(:label_find_all_comments), issue_path(e.id) %> </span><span class="font_lighter"><%= l(:label_comments_count, :count => e.journals.count) %></span>
</td> </td>
<% end %> <% end %>
</tr> </tr>
@ -84,7 +84,7 @@
<strong> !</strong></td> <strong> !</strong></td>
</tr> </tr>
<tr> <tr>
<td class="font_lighter" style="float: right"><%= l :label_update_time %> <td class="font_lighter" style="float: right"><%= l :label_create_time %>
: <%= format_time(@course.created_at) %> : <%= format_time(@course.created_at) %>
</table> </table>
</td> </td>

@ -3,15 +3,15 @@
<div id="share_new" style = "width: 500px; margin:0 auto; " > <div id="share_new" style = "width: 500px; margin:0 auto; " >
<%= labelled_form_for(@forum) do |f| %> <%= labelled_form_for(@forum) do |f| %>
<% if @forum.errors.any? %> <% if @forum.errors.any? %>
<div id="error_explanation"> <!--<div id="error_explanation">
<h2><%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2> <h2><#%= pluralize(@forum.errors.count, "error") %> prohibited this forum from being saved:</h2>
<ul> <ul>
<% @forum.errors.full_messages.each do |msg| %> <#% @forum.errors.full_messages.each do |msg| %>
<li><%= msg %></li> <li><#%= msg %></li>
<% end %> <#% end %>
</ul> </ul>
</div> </div> -->
<% end %> <% end %>
<div class="actions" style="margin:10px"> <div class="actions" style="margin:10px">
<div class="field"> <div class="field">

@ -3,17 +3,17 @@
<h3><%=l(:label_memo_new)%></h3> <h3><%=l(:label_memo_new)%></h3>
<% if User.current.logged? %> <% if User.current.logged? %>
<%= labelled_form_for(@memo, :url => create_memo_forum_path(@forum), :html => {:multipart => true} ) do |f| %> <%= labelled_form_for(@memo, :url => create_memo_forum_path(@forum), :html => {:multipart => true} ) do |f| %>
<% if @memo.errors.any? %> <!--<#% if @memo.errors.any? %>
<div id="error_explanation"> <div id="error_explanation">
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2> <h2><#%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
<ul> <ul>
<% @memo.errors.full_messages.each do |msg| %> <#% @memo.errors.full_messages.each do |msg| %>
<li><%= msg %></li> <li><#%= msg %></li>
<% end %> <#% end %>
</ul> </ul>
</div> </div>
<% end %> <#% end %> -->
<div class="actions" style="max-width:680px"> <div class="actions" style="max-width:680px">
<p><%= f.text_field :subject, :required => true%></p> <p><%= f.text_field :subject, :required => true%></p>
<p style="max-width:680px"><%= f.text_area :content, :required => true, :id => 'editor02' %></p> <p style="max-width:680px"><%= f.text_area :content, :required => true, :id => 'editor02' %></p>

@ -143,7 +143,7 @@ body table tr td span6 {
<td><p >在桌面上点击鼠标右键选择TortoiseGit的Settings进行设置</p></td> <td><p >在桌面上点击鼠标右键选择TortoiseGit的Settings进行设置</p></td>
</tr> </tr>
<tr> <tr>
<td align="left">Name和Email是用来设置自己的用户名和联系方式的user.name和user.email必须填写这些将在版本库提交时用到,<span5> 其中的name和email要和forge.trustie.net上的登陆名和邮箱保持一致</span5> <td align="left">Name和Email是用来设置自己的用户名和联系方式的user.name和user.email必须填写这些将在版本库提交时用到,<span5> 其中的name和email要和<%= Setting.host_name %>上的登陆名和邮箱保持一致</span5>
,方便代码贡献统计 )。 </td> ,方便代码贡献统计 )。 </td>
</tr> </tr>
<tr> <tr>
@ -313,7 +313,7 @@ body table tr td span6 {
<td><p ><span>$git&nbsp;config&nbsp;--global&nbsp;user.name&nbsp;&#8220;your_name&#8221;</span></p> <td><p ><span>$git&nbsp;config&nbsp;--global&nbsp;user.name&nbsp;&#8220;your_name&#8221;</span></p>
<p><span>$git&nbsp;config&nbsp;--global&nbsp;user.email&nbsp;&#8220;your_email&#8221;&nbsp;</span> </p> <p><span>$git&nbsp;config&nbsp;--global&nbsp;user.email&nbsp;&#8220;your_email&#8221;&nbsp;</span> </p>
<p>Name和Email是用来设置自己的用户名和联系方式的user.name和user.email必须填写这些将在版本库提交时用到, <p>Name和Email是用来设置自己的用户名和联系方式的user.name和user.email必须填写这些将在版本库提交时用到,
<span5> 其中的name和email要和forge.trustie.net上的登陆名和密码保持一致</span5> <span5> 其中的name和email要和<%= Setting.host_name %>上的登陆名和密码保持一致</span5>
,方便代码贡献统计 )。</p></td> ,方便代码贡献统计 )。</p></td>
</tr> </tr>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save