Как найти путь, из которого был скопирован файл в Subversion - PullRequest
0 голосов
/ 31 января 2019

В Subversion, если я перемещаю файл, используя svn move foo.py bar.py, тогда svn status услужливо показывает мне, куда файл был перемещен из

$ svn move foo.py bar.py
$ svn status
A  +    bar.py
    > moved from foo.py

Если я делаю копию с другой стороны, вывод неНе показывать, откуда был скопирован новый файл:

$ svn copy foo.py bar.py
$ svn status
A  +    bar.py

Есть ли способ узнать, откуда был скопирован bar.py.Если я изменяю bar.py, svn diff показывает изменения относительно исходного foo.py, но, к сожалению, заголовок неправильно показывает исходный путь к файлу как bar.py в какой-то ревизии, которой еще нет в репо.

Index: bar.py
===================================================================
--- bar.py   (revision 14283)
+++ bar.py   (working copy)
@@ -1,15 +1,14 @@

....

Мне нужно создать diff для отправки в мой инструмент для проверки кода, и это расстраивает, потому что bar.py не существует в репозитории на версии, заявленной в diff.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Если я правильно понимаю, ваш инструмент проверки кода принимает только diff.У вас есть две операции, копирование и редактирование, о которых ваш инструмент должен знать.Простой svn diff сообщает только о редактировании, а не о копии.

Вот три возможных способа решения вашей проблемы.Я не могу проверить ваш инструмент, поэтому не могу определить, сработает ли какой-либо из них, но стоит попробовать:

  1. Использование: svn diff --show-copies-as-adds.Это покажет предыдущую версию файла как несуществующую.Сравнить (file4 - это svn-скопированный и отредактированный файл):

    [843] >>> svn diff
    Index: file4
    ===================================================================
    --- file4   (revision 5)
    +++ file4   (working copy)
    @@ -1 +1,2 @@
     some text
    +more more
    

    с

    [844] >>> svn diff --show-copies-as-adds
    Index: file4
    ===================================================================
    --- file4   (nonexistent)
    +++ file4   (working copy)
    @@ -0,0 +1,2 @@
    +some text
    +more more
    
  2. Commit и затем svn diff -r PREV (вы всегда можете откатитьсовершать потом).Вы получите тот же результат:

    [845] >>> svn ci -m "copied and edited"
    Adding         file4
    Transmitting file data .done
    Committing transaction...
    Committed revision 6.
    
    [846] >>> svn up
    Updating '.':
    At revision 6.
    
    [847] >>> svn diff -r PREV
    Index: file4
    ===================================================================
    --- file4   (nonexistent)
    +++ file4   (revision 6)
    @@ -0,0 +1,2 @@
    +some text
    +more more
    
  3. Разделите ваш рабочий процесс в два этапа.Сначала передайте копию файла перед редактированием.Затем выполните редактирование.

0 голосов
/ 31 января 2019

Команда svn log имеет опцию verbose.Это также напечатает путь, с которого был скопирован файл.http://svnbook.red -bean.com / о / 1,8 / svn.ref.svn.c.log.html

...