在我的代码库中;我看到行< 123>在特定文件中;我想知道什么时候介绍它。我可以做'p4 annotate'找到它上次修改的时间;但我确信有一种方法可以退回到介绍......我正在使用2009.2;如果重要的话,不是最新的...
-Chris
编辑
这可能是一个糟糕的问题;我通过走回树直到找到它的添加位置来解决我的问题,基本上......
p4 annotage | grep
p4 annotage myFile#rev-1 | grep
p4 annotage myFile#rev-1 | grep
答案 0 :(得分:10)
如果安装了p4v,则应使用延时视图。这将为您提供文件中所有行的记录,引入或更改这些更改的人员,更改列表等等.Timelaspse是一个非常棒的工具,可以为您提供所需的内容,而无需诉诸旧版本。
答案 1 :(得分:1)
ruby中的解决方案
file = "/path/to/your/file"
period = "#8,10" # could be @2012/10/01,@now
$all_authors = []
def find_changed_lines file, period
puts "File: #{file}#{period}"
ls = `p4 annotate -a #{file}#{period}`.split"\n"
a = []; b = []; prevrev = ""; linen = 0; authors = []
# find [first, last] aka [min, max] file revisions for given period
ls.each{ |l| l[ /^([0-9]+)-([ 0-9]+):/ ]; a<<$1.to_i if $1; b<<$2.to_i if $2; }
first = a.min.to_s; last = b.max.to_s
# find changed lines
ls.each{ |l|
l[ /^([0-9]+)-([ 0-9]+):/ ]
# find line number
linen +=1 if $2==last
# reject lines if #not changed line or #itermediate change
unless ($1==first and $2==last) or ($1!=first and $2!=last)
# find rev#
rev = $2==last ? $1 : ($2.to_i+1).to_s
# print cl desc info based on rev# unless printed for prev line
if prevrev != rev
cldesc = `p4 filelog -m 1 #{file}##{rev} | head -2 | tail -1`
puts cldesc
# collect change author
authors << cldesc[/by (.*)@/, 1]
prevrev = rev
end
# print changed line with line number
puts l.sub(/^.*:/, "#{linen}:" )
end
}
puts "Change authors: #{authors.uniq!.join(', ')}"
$all_authors += authors
end
find_changed_lines file, period