如何查看SVN工作副本中每个文件的修订号?

时间:2010-08-09 19:53:08

标签: svn version-control version

我在同一个工作副本中与另一个开发人员合作(我知道这是一个坏主意),我们通常会更新单个文件,现在我们有一些修订版本的文件和另一个版本的文件。 如何查看包含各自修订号的文件列表? (工作副本位于linux框中,我们正在使用svn命令行。

提前感谢您提供任何帮助

6 个答案:

答案 0 :(得分:7)

在您的工作副本中尝试此操作

svn info *

svn info -R *

以递归方式查看所有文件和目录

您可以输入svn help info以查看其他选项

答案 1 :(得分:2)

svn info -R . | egrep "^Path:|^Revision:" | paste - -

这意味着

  • 递归获取以当前目录为根的子树中的每个文件的信息
  • 只保留以"开头的行:"或"修订版:"
  • 将路径/修订行加入一行

生成如下输出:

Path: Tools/xmlvalidator    Revision: 69114
Path: Tools/xmlvalidator/main.c Revision: 69114

答案 2 :(得分:2)

svn -R list --verbose
  

它将给出这样的输出

     

109作者名3818 2012年11月20日JSON / xyz.json

答案 3 :(得分:1)

svnversion命令可能是您需要的,因为它将显示工作副本中的修订范围。

答案 4 :(得分:0)

最后,我使用了Dmitry Yudakov发布的命令和js-rhino中的litle脚本组合解决方案。现在我可以找到具有不同版本号的所有文件,例如:

svn info -R>   tmp_info rhino read-svn.js | grep -v 295

/* The script */ 
lines = readFile("tmp_info").split("\n");  
lines.pop();
String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g,"");
}
var idx = 0;
var files = [];
files[0] = {};
var line;
for (i in lines) {
  line = lines[i].toString();
  if(line.length) { 
    key = line.split(':')[0];
    if(key == 'Name' || key == 'Revision' || key == 'Path')
      files[idx][key] = line.split(':')[1];
  } else {
    idx++;
    files[idx] = {};
  }
}

print( 'files : ' + files.length + "\n");
for (i = 0; i< files.length ; i++) {
  var file = files[i];
  if(typeof(file.Name) !== "undefined")
    print(" REVISION: " + file.Revision.trim() + ' -  ' + file.Path.trim() +'/' + file.Name.trim() );
}

答案 5 :(得分:0)

php中的相同程序:

svn info -R&gt; tmp_info&amp;&amp; php versions.php

<?php
$lines = explode("\n",file_get_contents("tmp_info"));
array_pop($lines);

$idx = 0;
$files = array();
$files[] = array();

foreach($lines as $i => $line) {
  if(!empty($line)) { 
    $spl = explode(':',$line);
    $key = $spl[0];
    if($key == 'Name' || $key == 'Revision' || $key == 'Path')
      $files[$idx][$key] = $spl[1];
  } else {
    $idx++;
    $files[$idx] = array();
  }
}


echo  'files : ' . count($files) . "\n";
foreach($files as $file) {
  if(isset($file["Name"]))
    echo " REVISION: " . trim($file["Revision"]) . ' -  ' . trim($file["Path"]) .'/' . trim($file["Name"]) . "\n";
}