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

发布于 2024-09-13 18:23:25 字数 145 浏览 1 评论 0原文

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

提前感谢您的帮助

I work with another developer in the same working copy (I know that is a bad idea), we usually do updated of individual files, and now we have files in some revision and others in another.
How can I see a list of files with their respectives revision numbers? (The working copy is in a linux box, and we're using svn command line.

Thanks in advance for any help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

离鸿 2024-09-20 18:23:25

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

svn info *

svn info -R *

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

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

Try this in your working copy

svn info *

or

svn info -R *

to see all files and directories recursively

You may type svn help info to see other options

还在原地等你 2024-09-20 18:23:25
svn -R list --verbose

它会给出这样的输出

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

svn -R list --verbose

It will give output like this

109 authorname 3818 Nov 20 2012 JSON/xyz.json

空气里的味道 2024-09-20 18:23:25

svn 信息 -R 。 | egrep "^路径:|^修订版:" |粘贴 - -

这意味着

  • 递归获取以当前目录为根的子树中每个文件的信息
  • 仅保留以“Path:”或“Revision:”开头的行 将
  • 路径/修订行连接到单行上

生成输出像这样:

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

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

Which means

  • Recursively get info of every file in the sub tree rooted at the current directory
  • Keep only lines beginning with "Path:" or "Revision:"
  • Join the Path/Revision lines onto a single line

Produces output like this:

Path: Tools/xmlvalidator    Revision: 69114
Path: Tools/xmlvalidator/main.c Revision: 69114
北方的韩爷 2024-09-20 18:23:25

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

The svnversion command may be what you need as it will show the range of revisions in the working copy.

往日情怀 2024-09-20 18:23:25

最后,我使用了 Dmitry Yudakov 发布的命令和 js-rhino 中的一个小脚本的组合解决方案。现在我可以找到具有不同修订号的所有文件,执行以下操作:

svn info -R >
tmp_info rhino read-svn.js | 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() );
}

Finally I used combined solution using the command posted by Dmitry Yudakov and a litle script in js-rhino. Now I can find all the files with a different revision number doing something like:

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() );
}
倾城泪 2024-09-20 18:23:25

php 中的相同程序:

svn info -R > tmp_info && php 版本.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";
}

Same program in php:

svn info -R > tmp_info && 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";
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文