##// END OF EJS Templates
Fix generation of blank local link when no title is specified in wiki link....
Fix generation of blank local link when no title is specified in wiki link. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7560 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r6100:ed37d8ed91c9
r7440:ac2dbde135f7
Show More
git.rb
183 lines | 5.2 KiB | text/x-ruby | RubyLexer
Toshi MARUYAMA
scm: git: code clean up model....
r5630 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 # Copyright (C) 2007 Patrick Aljord patcito@ŋmail.com
Toshi MARUYAMA
scm: git: code clean up model....
r5630 #
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
scm: git: code clean up model....
r5630 #
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
scm: git: code clean up model....
r5630 #
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'redmine/scm/adapters/git_adapter'
class Repository::Git < Repository
attr_protected :root_url
validates_presence_of :url
Toshi MARUYAMA
scm: add scm specific human_attribute_name for input validation....
r4855 def self.human_attribute_name(attribute_key_name)
Toshi MARUYAMA
scm: use i18n string at 'Path to repository' setting in Mercurial, Git, Bazaar and Darcs....
r5409 attr_name = attribute_key_name
if attr_name == "url"
attr_name = "path_to_repository"
end
super(attr_name)
Toshi MARUYAMA
scm: add scm specific human_attribute_name for input validation....
r4855 end
Toshi MARUYAMA
scm: add scm command and version methods at repository models (#4273)....
r4702 def self.scm_adapter_class
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 Redmine::Scm::Adapters::GitAdapter
end
Toshi MARUYAMA
scm: add scm command and version methods at repository models (#4273)....
r4702
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 def self.scm_name
'Git'
end
Toshi MARUYAMA
scm: git: show only filename and filesize if setting of reporting last commit is disable (#8365, #7047)....
r5655 def report_last_commit
extra_report_last_commit
end
Toshi MARUYAMA
scm: git: change model report_last_commit() name to extra_report_last_commit() (#7047)....
r5541 def extra_report_last_commit
Toshi MARUYAMA
scm: git: get "extra_report_last_commit" value from extra_info (#8365, #7047)....
r5648 return false if extra_info.nil?
v = extra_info["extra_report_last_commit"]
return false if v.nil?
v.to_s != '0'
Toshi MARUYAMA
scm: git: add the model method whether reporting last commit in repository tree (#7047)....
r5536 end
Toshi MARUYAMA
scm: set supporting directory revisions or not at scm level....
r5024 def supports_directory_revisions?
true
end
Toshi MARUYAMA
scm: git: use --encoding=UTF-8 in "git log" (#3396)....
r4844 def repo_log_encoding
'UTF-8'
end
Toshi MARUYAMA
Changing revision label and identifier at SCM adapter level (#3724, #6092)...
r4493 # Returns the identifier for the given git changeset
def self.changeset_identifier(changeset)
changeset.scmid
end
# Returns the readable identifier for the given git changeset
def self.format_changeset_identifier(changeset)
changeset.revision[0, 8]
end
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735 def branches
scm.branches
end
def tags
scm.tags
end
Toshi MARUYAMA
scm: return nil at model default_branch and override at git model (#8458, #6713)....
r6010 def default_branch
scm.default_branch
Toshi MARUYAMA
scm: git: catch exception in model default_branch() (#8458, #6713)....
r6100 rescue Exception => e
logger.error "git: error during get default branch: #{e.message}"
nil
Toshi MARUYAMA
scm: return nil at model default_branch and override at git model (#8458, #6713)....
r6010 end
Toshi MARUYAMA
scm: git: implement find_changeset_by_name (#7047)....
r4731 def find_changeset_by_name(name)
return nil if name.nil? || name.empty?
e = changesets.find(:first, :conditions => ['revision = ?', name.to_s])
return e if e
changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"])
end
Toshi MARUYAMA
scm: git: override entries() in model for browsing tree performance (#7047)....
r5535 def entries(path=nil, identifier=nil)
Toshi MARUYAMA
scm: git: use the model value of whether reporting last commit in repository tree (#7047)....
r5537 scm.entries(path,
identifier,
Toshi MARUYAMA
scm: git: change model report_last_commit() name to extra_report_last_commit() (#7047)....
r5541 options = {:report_last_commit => extra_report_last_commit})
Toshi MARUYAMA
scm: git: override entries() in model for browsing tree performance (#7047)....
r5535 end
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 # In Git and Mercurial, revisions are not in date order.
Toshi MARUYAMA
scm: git: brush up model fetch_changesets() comment....
r5738 # Redmine Mercurial fixed issues.
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 # * Redmine Takes Too Long On Large Mercurial Repository
# http://www.redmine.org/issues/3449
Toshi MARUYAMA
scm: git: code clean up model....
r5630 # * Sorting for changesets might go wrong on Mercurial repos
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 # http://www.redmine.org/issues/3567
Toshi MARUYAMA
scm: git: brush up model fetch_changesets() comment....
r5738 #
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 # Database revision column is text, so Redmine can not sort by revision.
# Mercurial has revision number, and revision number guarantees revision order.
Toshi MARUYAMA
scm: git: brush up model fetch_changesets() comment....
r5738 # Redmine Mercurial model stored revisions ordered by database id to database.
# So, Redmine Mercurial model can use correct ordering revisions.
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 #
Toshi MARUYAMA
scm: git: brush up model fetch_changesets() comment....
r5738 # Redmine Mercurial adapter uses "hg log -r 0:tip --limit 10"
# to get limited revisions from old to new.
Toshi MARUYAMA
scm: git: add comments of revision order in fetch_changesets()....
r5524 # But, Git 1.7.3.4 does not support --reverse with -n or --skip.
#
Jean-Philippe Lang
Do not parse the entire git log to fetch new commits (takes several minutes for a few thousands commits), but only 1 week before the last known commit (#4547, #4716)....
r3280 # The repository can still be fully reloaded by calling #clear_changesets
# before fetching changesets (eg. for offline resync)
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 def fetch_changesets
Toshi MARUYAMA
scm: git: fix fetching 7 days problem (#7146, #6013)....
r5668 scm_brs = branches
return if scm_brs.nil? || scm_brs.empty?
Toshi MARUYAMA
scm: git: use hash#dup for extra_info in model fetch_changesets()....
r5736 h1 = extra_info || {}
h = h1.dup
Toshi MARUYAMA
scm: git: set revisions ordering inconsistent in existing database (#5357)....
r5733 h["branches"] ||= {}
h["db_consistent"] ||= {}
if changesets.count == 0
h["db_consistent"]["ordering"] = 1
merge_extra_info(h)
self.save
elsif ! h["db_consistent"].has_key?("ordering")
h["db_consistent"]["ordering"] = 0
merge_extra_info(h)
self.save
end
Toshi MARUYAMA
scm: git: fix fetching 7 days problem (#7146, #6013)....
r5668 scm_brs.each do |br|
from_scmid = nil
from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br]
h["branches"][br] ||= {}
scm.revisions('', from_scmid, br, {:reverse => true}) do |rev|
db_rev = find_changeset_by_name(rev.revision)
Toshi MARUYAMA
scm: git: move saving changesets from adapter to model (#3396)....
r4839 transaction do
Toshi MARUYAMA
scm: git: fix fetching 7 days problem (#7146, #6013)....
r5668 if db_rev.nil?
save_revision(rev)
end
h["branches"][br]["last_scmid"] = rev.scmid
merge_extra_info(h)
self.save
Toshi MARUYAMA
scm: git: refactor saving a revision in model....
r5504 end
end
end
end
def save_revision(rev)
changeset = Changeset.new(
:repository => self,
:revision => rev.identifier,
:scmid => rev.scmid,
Toshi MARUYAMA
scm: git: code clean up model....
r5630 :committer => rev.author,
Toshi MARUYAMA
scm: git: move saving changesets from adapter to model (#3396)....
r4839 :committed_on => rev.time,
Toshi MARUYAMA
scm: git: refactor saving a revision in model....
r5504 :comments => rev.message
)
if changeset.save
rev.paths.each do |file|
Change.create(
Toshi MARUYAMA
scm: git: move saving changesets from adapter to model (#3396)....
r4839 :changeset => changeset,
:action => file[:action],
:path => file[:path])
end
end
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735 end
Toshi MARUYAMA
scm: git: refactor saving a revision in model....
r5504 private :save_revision
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735
def latest_changesets(path,rev,limit=10)
revisions = scm.revisions(path, nil, rev, :limit => limit, :all => false)
return [] if revisions.nil? || revisions.empty?
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735 changesets.find(
Toshi MARUYAMA
scm: git: code clean up model....
r5630 :all,
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735 :conditions => [
Toshi MARUYAMA
scm: git: code clean up model....
r5630 "scmid IN (?)",
Eric Davis
Added branch and tag support to the git repository viewer. (#1406)...
r2735 revisions.map!{|c| c.scmid}
],
:order => 'committed_on DESC'
)
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 end
end