packages: redmine/redmine-mercurial.patch (NEW) - mercurial overhaul: http:...

baggins baggins at pld-linux.org
Sat Mar 13 00:42:50 CET 2010


Author: baggins                      Date: Fri Mar 12 23:42:49 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- mercurial overhaul: http://www.redmine.org/issues/4455

---- Files affected:
packages/redmine:
   redmine-mercurial.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/redmine/redmine-mercurial.patch
diff -u /dev/null packages/redmine/redmine-mercurial.patch:1.1
--- /dev/null	Sat Mar 13 00:42:50 2010
+++ packages/redmine/redmine-mercurial.patch	Sat Mar 13 00:42:44 2010
@@ -0,0 +1,1224 @@
+diff -urN redmine-0.9.3/app/helpers/repositories_helper.rb marutosi-redmine-b34d7e8/app/helpers/repositories_helper.rb
+--- redmine-0.9.3/app/helpers/repositories_helper.rb	2010-02-28 11:28:05.000000000 +0100
++++ marutosi-redmine-b34d7e8/app/helpers/repositories_helper.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -158,13 +158,27 @@
+   def darcs_field_tags(form, repository)
+       content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?)))
+   end
+-  
++
+   def mercurial_field_tags(form, repository)
+-      content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)))
++      content_tag('p', form.text_field(
++          :url,
++          :label => 'Root directory',
++          :size => 60,
++          :required => true,
++          ## Mercurial repository is removable.
++          # :disabled => (repository && !repository.root_url.blank?)
++          :disabled => false
++       ))
+   end
+ 
+   def git_field_tags(form, repository)
+-      content_tag('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)))
++      content_tag('p', form.text_field(
++        :url,
++        :label => 'Path to .git directory',
++        :size => 60,
++        :required => true,
++        :disabled => (repository && !repository.root_url.blank?)
++     ))
+   end
+ 
+   def cvs_field_tags(form, repository)
+diff -urN redmine-0.9.3/app/models/repository/mercurial.rb marutosi-redmine-b34d7e8/app/models/repository/mercurial.rb
+--- redmine-0.9.3/app/models/repository/mercurial.rb	2010-02-28 11:28:05.000000000 +0100
++++ marutosi-redmine-b34d7e8/app/models/repository/mercurial.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -18,77 +18,309 @@
+ require 'redmine/scm/adapters/mercurial_adapter'
+ 
+ class Repository::Mercurial < Repository
+-  attr_protected :root_url
++  attr_protected        :root_url
+   validates_presence_of :url
+ 
++  @@limit_check_strip       = 100
++  @@num_convert_redmine_0_9 =  20
++
+   def scm_adapter
+     Redmine::Scm::Adapters::MercurialAdapter
+   end
+-  
++
+   def self.scm_name
+     'Mercurial'
+   end
+-  
++
++  def branches
++    scm.branches
++  end
++
++  def tags
++    scm.tags
++  end
++
+   def entries(path=nil, identifier=nil)
+-    entries=scm.entries(path, identifier)
++    entries=scm.entries(path, identifier,:include_file_revs => true )
+     if entries
+       entries.each do |entry|
+-        next unless entry.is_file?
+-        # Set the filesize unless browsing a specific revision
+-        if identifier.nil?
+-          full_path = File.join(root_url, entry.path)
+-          entry.size = File.stat(full_path).size if File.file?(full_path)
+-        end
+-        # Search the DB for the entry's last change
+-        change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC")
+-        if change
+-          entry.lastrev.identifier = change.changeset.revision
+-          entry.lastrev.name = change.changeset.revision
+-          entry.lastrev.author = change.changeset.committer
+-          entry.lastrev.revision = change.revision
++        if entry && entry.lastrev && entry.lastrev.identifier
++          rev = changesets.find(
++              :first,
++              :conditions => [ "revision = ?" , entry.lastrev.identifier ]
++            )
++          next if rev
++          rev = changesets.find(
++              :first,
++              :conditions => ["scmid LIKE ?", entry.lastrev.identifier + '%']
++            )
++          entry.lastrev.identifier = rev.revision if rev
+         end
+       end
+     end
+     entries
+   end
+ 
++  # TODO:
++  #   This logic fails in following case.
++  #
++  # Before
++  #
++  #   /-C
++  # A-------B
++  #
++  # After
++  #   
++  #   /-D
++  # A-------B
++  #
++  # This is very very rare case.
++  #
++  # For this case, we need to store HEAD info on DB?
++  # http://www.redmine.org/issues/4773#note-11
++  #
+   def fetch_changesets
+     scm_info = scm.info
+-    if scm_info
+-      # latest revision found in database
+-      db_revision = latest_changeset ? latest_changeset.revision.to_i : -1
+-      # latest revision in the repository
+-      latest_revision = scm_info.lastrev
+-      return if latest_revision.nil?
+-      scm_revision = latest_revision.identifier.to_i
+-      if db_revision < scm_revision
+-        logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug?
+-        identifier_from = db_revision + 1
+-        while (identifier_from <= scm_revision)
+-          # loads changesets by batches of 100
+-          identifier_to = [identifier_from + 99, scm_revision].min
+-          revisions = scm.revisions('', identifier_from, identifier_to, :with_paths => true)
+-          transaction do
+-            revisions.each do |revision|
+-              changeset = Changeset.create(:repository => self,
+-                                           :revision => revision.identifier,
+-                                           :scmid => revision.scmid,
+-                                           :committer => revision.author, 
+-                                           :committed_on => revision.time,
+-                                           :comments => revision.message)
+-              
+-              revision.paths.each do |change|
+-                Change.create(:changeset => changeset,
+-                              :action => change[:action],
+-                              :path => change[:path],
+-                              :from_path => change[:from_path],
+-                              :from_revision => change[:from_revision])
++    # Backout Redmine 0.9.x
++    # return unless scm_info or scm_info.lastrev.nil?
++    return unless scm_info
++
++    transaction do
++      Changeset.update_all(
++        "scm_order = -1" ,
++        ["repository_id = ? AND scm_order is null", id]
++      )
++    end
++
++    identifier_from = 0
++
++    transaction do
++      tip_on_db = changesets.find(:first, :order => 'scm_order DESC')
++      tip_on_db = convert_changeset(tip_on_db)  if ( tip_on_db && ( tip_on_db.scm_order == -1 ) )
++      tip_revno_on_db       = -1
++      hg_revno_dbtip        = -1
++      if tip_on_db
++        tip_revno_on_db = tip_on_db.scm_order
++        revs = scm.revisions( nil, tip_on_db.scmid, tip_on_db.scmid,
++                            :lite => true)
++        hg_revno_dbtip = revs.first.scm_order if revs && revs.first
++      end
++
++      # Redmine cannot check changeset.count == scm.num_revisions
++      # because Redmine ver.0.9.x has stripped revision on DB
++      # and 'revision' is uniq.
++      if ( tip_revno_on_db == hg_revno_dbtip )
++        identifier_from = tip_revno_on_db   + 1
++      else
++        # At Redmine SVN r3394, git check history editing for only one week.
++        # Mercurial has revision number,
++        # so Redmine can check from big revision number.
++        # And strip revision in middle of history on shared repository
++        # is very rare case.
++        ver09x_changeset_first =
++          changesets.find(:first,:conditions =>[ "scm_order = -1" ] )
++        if ( ver09x_changeset_first )
++          convert_changesets(@@num_convert_redmine_0_9)
++        end
++        converted_cs    = nil
++        flag_loop_break = false
++        convert_limit   = @@limit_check_strip
++        changesets.find(
++             :all,
++             :order => 'scm_order DESC',
++             :limit => convert_limit).each do |cs|
++          prev_no      = cs.scm_order
++          converted_cs = convert_changeset(cs)
++          if ( converted_cs && converted_cs.scm_order )
++            if ( converted_cs.scm_order == prev_no )
++                changesets.find(:all,:conditions =>
++                  [ "scm_order = ? AND scmid != ?" , cs.scm_order , cs.scmid ]
++                 ).each do |cs1|
++                convert_changeset(cs1)
++              end
++              flag_loop_break = true
++              break
++            end
++          end
++        end
++        if ( flag_loop_break )
++          identifier_from = converted_cs.scm_order + 1
++        else
++          identifier_from = [scm.num_revisions - convert_limit , 0].max
++        end
++      end
++    end
++
++    scm_revision    = scm.num_revisions - 1
++    # Reffered from Subversion logic.
++    while (identifier_from <= scm_revision)
++        transaction do
++          identifier_to = [identifier_from + 19, scm_revision].min
++          revisions = scm.revisions(
++              nil, identifier_from, identifier_to )
++          if revisions
++            revisions.each do |rev|
++              dups = changesets.find(
++                :all,
++                :conditions =>["scmid = ? or scmid = ? " ,
++                                 rev.scmid , rev.identifier]
++              )
++              unless dups.empty?
++                dups.each do |cs1|
++                  ## There is no way to store
++                  ## Redmine 0.9.x original revision number.
++                  cs1.scmid     = rev.scmid
++                  cs1.scm_order = rev.scm_order.to_i
++                  cs1.save
++                end
++                next
+               end
++              rev.save(self)
+             end
+-          end unless revisions.nil?
++          end
+           identifier_from = identifier_to + 1
+         end
++    end
++  end
++
++  # TODO:
++  #  1. Mercurial has Named branches.
++  #     http://mercurial.selenic.com/wiki/NamedBranches
++  #   a)
++  #      Mercurial has --only-branch option.
++  #      But, this is show this branch only.
++  #      TortoiseHg 0.9 Repository Explorer is different.
++  #      How does TortoiseHg handle branches?
++  #   b)
++  #     If no changeset on this named branch,
++  #     no revisons show on repository tab.
++  #   c)
++  #      Mercurial version 1.2 introduced the ability to close a branch.
++  #      http://mercurial.selenic.com/wiki/PruningDeadBranches#Closing_branches
++  #
++  #  2.
++  #    If Setting.autofetch_changesets is off,
++  #    no revisons show on repository tab.
++  #
++  def latest_changesets(path, rev, limit=10)
++    branch = nil
++    if branches.index(rev)
++      branch = rev
++    end
++    revisions = scm.revisions(
++                  path, rev, 0, :limit => limit,
++                  :lite => true , :branch => branch
++             )
++
++    return [] if revisions.nil? or revisions.empty?
++
++    # Redmine 0.9.x changeset scmid is short id.
++     changesets.find(
++       :all, 
++       :conditions => [
++        "scmid IN (?) or scmid IN (?)",
++        # revisions.map!{|c| c.scmid} ,
++        revisions.map{|c| c.scmid} ,
++        revisions.map{|c| c.identifier}
++       ]
++     )
++  end
++
++  def diff(path, rev, rev_to)
++    from_scmid = rev
++    if ( rev =~ /^\d*$/ )
++      from_rev = find_changeset_by_name(rev)
++      from_scmid = from_rev.scmid if from_rev
++    end
++    return nil if from_scmid.nil?
++    to_scmid = rev_to
++    if ( rev_to =~ /^\d*$/ )
++      to_rev   = find_changeset_by_name(rev_to)
++      to_scmid   = to_rev.scmid   if to_rev
++    end
++    scm.diff(path, from_scmid, to_scmid)
++  end
++
++  # Redmine 0.9.x has revision with revision number.
++  # TODO:
++  #   In case of strip, revision number is renumberd,
++  #   this logic fails?
++  #   We need to test with fixtures?
++  #   And tag and branch can use '\d'???
++  def find_changeset_by_name(name)
++    if name
++      changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["scmid LIKE ?", name + '%']))
++    else
++      nil
++    end
++  end
++
++  # This method is not used now.
++  # But, I plan to use in rake task.
++  def convert_changesets_all
++    changesets.find_each(
++           :conditions => [ "scm_order = -1 or scm_order is null" ],
++           :batch_size => 100) do |cs|
++      convert_changeset(cs)
++    end
++  end
++
++  def convert_changesets(limit=10)
++    changesets.find(
++             :all,
++             :conditions =>[ "scm_order = -1 or scm_order is null" ],
++             :limit => limit).each do |cs|
++      convert_changeset(cs)
++    end
++  end
++
++  # Mercurial revision number is sequential from 0.
++  # And Mercurial has multipile heads.
++  # If one head in middle of history was stripped,
++  # revision number was renumbered.
++  # In this case, Redmine 0.9.x had duplicate scmid on DB.
++  # 
++  # Because revision is uniq on table, convert fails.
++  # And "rNN" is written in Wiki, issue message, etc.
++  def convert_changeset(cs)
++        ret  = cs
++        revs = scm.revisions(nil, cs.scmid, cs.scmid, :lite => true)
++        rev  = nil
++        rev  = revs.first if revs
++        if rev
++          ret = convert_changeset_with_revision(cs, rev)
++        else
++          cs.delete
++          ret = nil
++        end
++        ret
++  end
++
++  def convert_changeset_with_revision(cs, rev)
++    cs.scm_order = rev.scm_order.to_i
++    if false
++      dup_first1 = changesets.find(
++        :first,
++        :conditions =>["revision = ?" , rev.identifier ]
++      )
++      if dup_first1.nil?
++      then
++        ## There is no way to store
++        ## Redmine 0.9.x original revision number.
++        # cs.revision  = rev.identifier  if cs.revision  != rev.identifier
+       end
+     end
++    dup_first = changesets.find(
++      :first,
++      :conditions =>["scmid = ?" , rev.scmid ]
++    )
++    if dup_first.nil?
++    then
++      cs.scmid     = rev.scmid
++    end
++
++    cs.save
++    ret = cs
++    ret
+   end
+ end
+diff -urN redmine-0.9.3/app/models/repository.rb marutosi-redmine-b34d7e8/app/models/repository.rb
+--- redmine-0.9.3/app/models/repository.rb	2010-02-28 11:28:06.000000000 +0100
++++ marutosi-redmine-b34d7e8/app/models/repository.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -17,7 +17,7 @@
+ 
+ class Repository < ActiveRecord::Base
+   belongs_to :project
+-  has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
++  has_many :changesets, :order => "#{Changeset.table_name}.scm_order DESC, #{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC"
+   has_many :changes, :through => :changesets
+   
+   # Raw SQL to delete changesets and changes in the database
+@@ -96,7 +96,7 @@
+   def find_changeset_by_name(name)
+     changesets.find(:first, :conditions => (name.match(/^\d*$/) ? ["revision = ?", name.to_s] : ["revision LIKE ?", name + '%']))
+   end
+-  
++
+   def latest_changeset
+     @latest_changeset ||= changesets.find(:first)
+   end
+@@ -105,17 +105,18 @@
+   # Default behaviour is to search in cached changesets
+   def latest_changesets(path, rev, limit=10)
+     if path.blank?
++       # this is defined at "has_many"
++       # :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
+       changesets.find(:all, :include => :user,
+-                            :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
+                             :limit => limit)
+     else
+       changes.find(:all, :include => {:changeset => :user}, 
+                          :conditions => ["path = ?", path.with_leading_slash],
+-                         :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
++                         :order => "#{Changeset.table_name}.scm_order DESC, #{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC",
+                          :limit => limit).collect(&:changeset)
+     end
+   end
+-    
++
+   def scan_changesets_for_issue_ids
+     self.changesets.each(&:scan_comment_for_issue_ids)
+   end
+diff -urN redmine-0.9.3/app/views/repositories/revision.rhtml marutosi-redmine-b34d7e8/app/views/repositories/revision.rhtml
+--- redmine-0.9.3/app/views/repositories/revision.rhtml	2010-02-28 11:28:06.000000000 +0100
++++ marutosi-redmine-b34d7e8/app/views/repositories/revision.rhtml	2010-03-09 08:13:32.000000000 +0100
+@@ -21,7 +21,9 @@
+ 
+ <h2><%= l(:label_revision) %> <%= format_revision(@changeset.revision) %></h2>
+ 
+-<p><% if @changeset.scmid %>ID: <%= @changeset.scmid %><br /><% end %>
++<p>
++<% if @changeset.scmid %>ID: <%= @changeset.scmid %><br /><% end %>
++<% if @changeset.scm_order %>SCM Order: <%= @changeset.scm_order %><br /><% end %>
+ <span class="author"><%= authoring(@changeset.committed_on, @changeset.author) %></span></p>
+ 
+ <%= textilizable @changeset.comments %>
+diff -urN redmine-0.9.3/db/migrate/20100222000000_add_scm_order_to_changesets.rb marutosi-redmine-b34d7e8/db/migrate/20100222000000_add_scm_order_to_changesets.rb
+--- redmine-0.9.3/db/migrate/20100222000000_add_scm_order_to_changesets.rb	1970-01-01 01:00:00.000000000 +0100
++++ marutosi-redmine-b34d7e8/db/migrate/20100222000000_add_scm_order_to_changesets.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -0,0 +1,12 @@
++
++class AddScmOrderToChangesets < ActiveRecord::Migration
++  def self.up
++    add_column :changesets, :scm_order, :integer,  :null => true
++    add_index  :changesets, :scm_order
++  end
++
++  def self.down
++    remove_index  :changesets, :scm_order
++    remove_column :changesets, :scm_order
++  end
++end
+diff -urN redmine-0.9.3/.gitignore marutosi-redmine-b34d7e8/.gitignore
+--- redmine-0.9.3/.gitignore	2010-02-28 11:28:09.000000000 +0100
++++ marutosi-redmine-b34d7e8/.gitignore	2010-03-09 08:13:32.000000000 +0100
+@@ -17,3 +17,7 @@
+ /tmp/sockets/*
+ /tmp/test/*
+ /vendor/rails
++
++/.hg/
++/.hgignore
++/.hgtags
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/abstract_adapter.rb marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/abstract_adapter.rb
+--- redmine-0.9.3/lib/redmine/scm/adapters/abstract_adapter.rb	2010-02-28 11:28:08.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/abstract_adapter.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -269,9 +269,10 @@
+           }.last
+         end 
+       end
+-      
++
++
+       class Revision
+-        attr_accessor :identifier, :scmid, :name, :author, :time, :message, :paths, :revision, :branch
++        attr_accessor :identifier, :scmid, :name, :author, :time, :message, :paths, :revision, :branch, :scm_order
+ 
+         def initialize(attributes={})
+           self.identifier = attributes[:identifier]
+@@ -283,6 +284,7 @@
+           self.paths = attributes[:paths]
+           self.revision = attributes[:revision]
+           self.branch = attributes[:branch]
++          self.scm_order = attributes[:scm_order]
+         end
+ 
+         def save(repo)
+@@ -293,8 +295,9 @@
+               :scmid => scmid,
+               :committer => author, 
+               :committed_on => time,
+-              :comments => message)
+-            
++              :comments  => message   ,
++              :scm_order => scm_order
++            )
+             if changeset.save
+               paths.each do |file|
+                 Change.create(
+@@ -306,7 +309,7 @@
+           end
+         end
+       end
+-        
++
+       class Annotate
+         attr_reader :lines, :revisions
+         
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5-lite.tmpl marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5-lite.tmpl
+--- redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5-lite.tmpl	1970-01-01 01:00:00.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5-lite.tmpl	2010-03-09 08:13:32.000000000 +0100
+@@ -0,0 +1,8 @@
++changeset = 'This template must be used with --debug option\n'
++changeset_quiet =  'This template must be used with --debug option\n'
++changeset_verbose = 'This template must be used with --debug option\n'
++changeset_debug = '<logentry revision="{rev}" shortnode="{node|short}" node="{node}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
++
++tag = '<tag>{tag|escape}</tag>\n'
++header='<?xml version="1.0" encoding="UTF-8" ?>\n<log>\n\n'
++# footer="</log>"
+\ No newline at end of file
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl
+--- redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl	2010-02-28 11:28:08.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl	2010-03-09 08:13:32.000000000 +0100
+@@ -1,7 +1,7 @@
+ changeset = 'This template must be used with --debug option\n'
+ changeset_quiet =  'This template must be used with --debug option\n'
+ changeset_verbose = 'This template must be used with --debug option\n'
+-changeset_debug = '<logentry revision="{rev}" node="{node|short}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{files}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
++changeset_debug = '<logentry revision="{rev}" shortnode="{node|short}" node="{node}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{files}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
+ 
+ file = '<path action="M">{file|escape}</path>\n'
+ file_add = '<path action="A">{file_add|escape}</path>\n'
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-1.0-lite.tmpl marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-1.0-lite.tmpl
+--- redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-1.0-lite.tmpl	1970-01-01 01:00:00.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-1.0-lite.tmpl	2010-03-09 08:13:32.000000000 +0100
+@@ -0,0 +1,8 @@
++changeset = 'This template must be used with --debug option\n'
++changeset_quiet =  'This template must be used with --debug option\n'
++changeset_verbose = 'This template must be used with --debug option\n'
++changeset_debug = '<logentry revision="{rev}" shortnode="{node|short}" node="{node}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths />\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
++
++tag = '<tag>{tag|escape}</tag>\n'
++header='<?xml version="1.0" encoding="UTF-8" ?>\n<log>\n\n'
++# footer="</log>"
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl
+--- redmine-0.9.3/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl	2010-02-28 11:28:08.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial/hg-template-1.0.tmpl	2010-03-09 08:13:32.000000000 +0100
+@@ -1,7 +1,7 @@
+ changeset = 'This template must be used with --debug option\n'
+ changeset_quiet =  'This template must be used with --debug option\n'
+ changeset_verbose = 'This template must be used with --debug option\n'
+-changeset_debug = '<logentry revision="{rev}" node="{node|short}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{file_mods}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
++changeset_debug = '<logentry revision="{rev}" shortnode="{node|short}" node="{node}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{file_mods}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
+ 
+ file_mod = '<path action="M">{file_mod|escape}</path>\n'
+ file_add = '<path action="A">{file_add|escape}</path>\n'
+diff -urN redmine-0.9.3/lib/redmine/scm/adapters/mercurial_adapter.rb marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial_adapter.rb
+--- redmine-0.9.3/lib/redmine/scm/adapters/mercurial_adapter.rb	2010-02-28 11:28:08.000000000 +0100
++++ marutosi-redmine-b34d7e8/lib/redmine/scm/adapters/mercurial_adapter.rb	2010-03-09 08:13:32.000000000 +0100
+@@ -16,24 +16,30 @@
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ 
+ require 'redmine/scm/adapters/abstract_adapter'
++require 'rexml/document'
+ 
+ module Redmine
+   module Scm
+-    module Adapters    
++    module Adapters
+       class MercurialAdapter < AbstractAdapter
+-        
+         # Mercurial executable name
+         HG_BIN = "hg"
+         TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial"
+         TEMPLATE_NAME = "hg-template"
<<Diff was trimmed, longer than 597 lines>>


More information about the pld-cvs-commit mailing list