107 |
107 |
revisions = Revisions.new
|
108 |
108 |
cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}"
|
109 |
109 |
if identifier_from && identifier_to
|
110 |
|
cmd << " -r #{identifier_from.to_i}:#{identifier_to.to_i}"
|
|
110 |
cmd << " -r #{identifier_from}:#{identifier_to}"
|
111 |
111 |
elsif identifier_from
|
112 |
|
cmd << " -r #{identifier_from.to_i}:"
|
|
112 |
cmd << " -r #{identifier_from}:"
|
113 |
113 |
end
|
114 |
114 |
cmd << " --limit #{options[:limit].to_i}" if options[:limit]
|
115 |
115 |
cmd << " #{path}" if path
|
... | ... | |
134 |
134 |
end
|
135 |
135 |
paths.sort! { |x,y| x[:path] <=> y[:path] }
|
136 |
136 |
|
137 |
|
revisions << Revision.new({:identifier => logentry.attributes['revision'],
|
|
137 |
revisions << Revision.new({:identifier => logentry.attributes['node'],
|
138 |
138 |
:scmid => logentry.attributes['node'],
|
139 |
139 |
:author => (logentry.elements['author'] ? logentry.elements['author'].text : ""),
|
140 |
140 |
:time => Time.parse(logentry.elements['date'].text).localtime,
|
... | ... | |
152 |
152 |
|
153 |
153 |
def diff(path, identifier_from, identifier_to=nil)
|
154 |
154 |
path ||= ''
|
|
155 |
cmd = "#{HG_BIN} -R #{target('')} diff --nodates"
|
155 |
156 |
if identifier_to
|
156 |
|
identifier_to = identifier_to.to_i
|
|
157 |
cmd << " -r #{identifier_to} -r #{identifier_from}"
|
157 |
158 |
else
|
158 |
|
identifier_to = identifier_from.to_i - 1
|
|
159 |
cmd << " -r #{identifier_from}"
|
159 |
160 |
end
|
160 |
|
cmd = "#{HG_BIN} -R #{target('')} diff -r #{identifier_to} -r #{identifier_from} --nodates"
|
161 |
161 |
cmd << " -I #{target(path)}" unless path.empty?
|
162 |
162 |
diff = []
|
163 |
163 |
shellout(cmd) do |io|
|
... | ... | |
187 |
187 |
cmd = "#{HG_BIN} -R #{target('')}"
|
188 |
188 |
cmd << " annotate -n -u"
|
189 |
189 |
cmd << " -r " + (identifier ? identifier.to_s : "tip")
|
190 |
|
cmd << " -r #{identifier.to_i}" if identifier
|
|
190 |
cmd << " -r #{identifier}" if identifier
|
191 |
191 |
cmd << " #{target(path)}"
|
192 |
192 |
blame = Annotate.new
|
193 |
193 |
shellout(cmd) do |io|
|
194 |
194 |
io.each_line do |line|
|
195 |
195 |
next unless line =~ %r{^([^:]+)\s(\d+):(.*)$}
|
196 |
|
blame.add_line($3.rstrip, Revision.new(:identifier => $2.to_i, :author => $1.strip))
|
|
196 |
blame.add_line($3.rstrip, Revision.new(:identifier => $2, :author => $1.strip))
|
197 |
197 |
end
|
198 |
198 |
end
|
199 |
199 |
return nil if $? && $?.exitstatus != 0
|