Mercurial > hg > soundsoftware-site
comparison app/models/repository/bazaar.rb @ 441:cbce1fd3b1b7 redmine-1.2
Update to Redmine 1.2-stable branch (Redmine SVN rev 6000)
author | Chris Cannam |
---|---|
date | Mon, 06 Jun 2011 14:24:13 +0100 |
parents | 051f544170fe |
children | 433d4f72a19b |
comparison
equal
deleted
inserted
replaced
245:051f544170fe | 441:cbce1fd3b1b7 |
---|---|
1 # redMine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2007 Jean-Philippe Lang | 2 # Copyright (C) 2006-2011 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
8 # | 8 # |
9 # This program is distributed in the hope that it will be useful, | 9 # This program is distributed in the hope that it will be useful, |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 # GNU General Public License for more details. | 12 # GNU General Public License for more details. |
13 # | 13 # |
14 # You should have received a copy of the GNU General Public License | 14 # You should have received a copy of the GNU General Public License |
15 # along with this program; if not, write to the Free Software | 15 # along with this program; if not, write to the Free Software |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
18 require 'redmine/scm/adapters/bazaar_adapter' | 18 require 'redmine/scm/adapters/bazaar_adapter' |
19 | 19 |
20 class Repository::Bazaar < Repository | 20 class Repository::Bazaar < Repository |
21 attr_protected :root_url | 21 attr_protected :root_url |
22 validates_presence_of :url, :log_encoding | 22 validates_presence_of :url, :log_encoding |
23 | 23 |
24 ATTRIBUTE_KEY_NAMES = { | |
25 "url" => "Root directory", | |
26 "log_encoding" => "Commit messages encoding", | |
27 } | |
28 def self.human_attribute_name(attribute_key_name) | 24 def self.human_attribute_name(attribute_key_name) |
29 ATTRIBUTE_KEY_NAMES[attribute_key_name] || super | 25 attr_name = attribute_key_name |
26 if attr_name == "url" | |
27 attr_name = "path_to_repository" | |
28 end | |
29 super(attr_name) | |
30 end | 30 end |
31 | 31 |
32 def self.scm_adapter_class | 32 def self.scm_adapter_class |
33 Redmine::Scm::Adapters::BazaarAdapter | 33 Redmine::Scm::Adapters::BazaarAdapter |
34 end | 34 end |
45 # Set the filesize unless browsing a specific revision | 45 # Set the filesize unless browsing a specific revision |
46 if identifier.nil? && e.is_file? | 46 if identifier.nil? && e.is_file? |
47 full_path = File.join(root_url, e.path) | 47 full_path = File.join(root_url, e.path) |
48 e.size = File.stat(full_path).size if File.file?(full_path) | 48 e.size = File.stat(full_path).size if File.file?(full_path) |
49 end | 49 end |
50 c = Change.find(:first, | 50 c = Change.find( |
51 :include => :changeset, | 51 :first, |
52 :conditions => ["#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", e.lastrev.revision, id], | 52 :include => :changeset, |
53 :order => "#{Changeset.table_name}.revision DESC") | 53 :conditions => [ |
54 "#{Change.table_name}.revision = ? and #{Changeset.table_name}.repository_id = ?", | |
55 e.lastrev.revision, | |
56 id | |
57 ], | |
58 :order => "#{Changeset.table_name}.revision DESC") | |
54 if c | 59 if c |
55 e.lastrev.identifier = c.changeset.revision | 60 e.lastrev.identifier = c.changeset.revision |
56 e.lastrev.name = c.changeset.revision | 61 e.lastrev.name = c.changeset.revision |
57 e.lastrev.author = c.changeset.committer | 62 e.lastrev.author = c.changeset.committer |
58 end | 63 end |
59 end | 64 end |
60 end | 65 end |
61 end | 66 end |
62 | 67 |
63 def fetch_changesets | 68 def fetch_changesets |
64 scm_info = scm.info | 69 scm_info = scm.info |
65 if scm_info | 70 if scm_info |
66 # latest revision found in database | 71 # latest revision found in database |
67 db_revision = latest_changeset ? latest_changeset.revision.to_i : 0 | 72 db_revision = latest_changeset ? latest_changeset.revision.to_i : 0 |
74 # loads changesets by batches of 200 | 79 # loads changesets by batches of 200 |
75 identifier_to = [identifier_from + 199, scm_revision].min | 80 identifier_to = [identifier_from + 199, scm_revision].min |
76 revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) | 81 revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true) |
77 transaction do | 82 transaction do |
78 revisions.reverse_each do |revision| | 83 revisions.reverse_each do |revision| |
79 changeset = Changeset.create(:repository => self, | 84 changeset = Changeset.create(:repository => self, |
80 :revision => revision.identifier, | 85 :revision => revision.identifier, |
81 :committer => revision.author, | 86 :committer => revision.author, |
82 :committed_on => revision.time, | 87 :committed_on => revision.time, |
83 :scmid => revision.scmid, | 88 :scmid => revision.scmid, |
84 :comments => revision.message) | 89 :comments => revision.message) |
85 | 90 |
86 revision.paths.each do |change| | 91 revision.paths.each do |change| |
87 Change.create(:changeset => changeset, | 92 Change.create(:changeset => changeset, |
88 :action => change[:action], | 93 :action => change[:action], |
89 :path => change[:path], | 94 :path => change[:path], |
90 :revision => change[:revision]) | 95 :revision => change[:revision]) |
91 end | 96 end |
92 end | 97 end |
93 end unless revisions.nil? | 98 end unless revisions.nil? |
94 identifier_from = identifier_to + 1 | 99 identifier_from = identifier_to + 1 |
95 end | 100 end |