Как посмотреть номер ревизии каждого файла в рабочей копии SVN? - PullRequest
5 голосов
/ 09 августа 2010

Я работаю с другим разработчиком в той же рабочей копии (я знаю, что это плохая идея), мы обычно обновляем отдельные файлы, и теперь у нас есть файлы в одной ревизии и другие в другой. Как я могу увидеть список файлов с соответствующими номерами ревизий? (Рабочая копия находится в окне linux, и мы используем командную строку svn.

Заранее спасибо за любую помощь

Ответы [ 6 ]

7 голосов
/ 09 августа 2010

Попробуйте это в своей рабочей копии

svn info *

или

svn info -R *

для рекурсивного просмотра всех файлов и каталогов

Вы можете набрать svn help info, чтобы увидеть другие варианты

2 голосов
/ 05 июля 2018
svn -R list --verbose

Это даст вывод, как это

109 имя автора 3818 20 ноября 2012 JSON / xyz.json

2 голосов
/ 07 августа 2015

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

Что означает

  • Рекурсивно получить информацию о каждом файле в поддереве с корнем в текущем каталоге
  • Оставьте только строки, начинающиеся с "Path:" или "Revision:"
  • Соединение строк Path / Revision в одну строку

Выводит примерно так:

Path: Tools/xmlvalidator    Revision: 69114
Path: Tools/xmlvalidator/main.c Revision: 69114
1 голос
/ 10 августа 2010

Вам может понадобиться команда svnversion , поскольку она покажет диапазон ревизий в рабочей копии.

0 голосов
/ 21 мая 2011

Та же программа в 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";
}
0 голосов
/ 10 августа 2010

Наконец, я использовал комбинированное решение, используя команду Дмитрия Юдакова и небольшой скрипт в js-rhino. Теперь я могу найти все файлы с другим номером ревизии, которые делают что-то вроде:

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() );
}
...