Сравнить файлы, хранящиеся в svn, с файлами на локальном диске

#powershell #svn

#powershell #svn

Вопрос:

Я пытаюсь написать скрипт на PowerShell, который будет сравнивать файлы svn с локальными файлами, а затем отображать файлы, в которых есть изменения. Я хотел бы также отобразить имена файлов, которые существуют на локальном диске, но не в расположении svn.

Мой код:

 $list1 = (svn list C:UsersnameDesktopWorkingfiles)

foreach ($thisFile in $list1){
    Write-Host $thisFile
    $var = (svn diff C:UsersnameDesktopWorkingfiles$thisFile svn://server/files/Users/name/$thisFile )
    # Write-Host $var
}
  

Комментарии:

1. svn diff предназначен для сравнения различных ревизий файла в репозитории, а не для сравнения файла в репозитории с файлом вне репозитория. Для последнего используйте обычные утилиты сравнения файлов вашей системы ( diff , fc , Compare-Object , …).

2. Я подумал, что это возможно, потому что в Linux вы можете сделать это, я думаю, с помощью команды grep index

Ответ №1:

Вы можете использовать svn diff команду с параметрами --old и --new . Однако, похоже, что вы не можете отличить элемент репозитория от локального неверсированного. Однако вы должны иметь возможность отличать файл от рабочей копии с помощью неверсированного файла.

Но как насчет записи содержимого репозитория в файл? Вот пример:

 svn cat URL-TO-FILE > file-from-repo.txt
svn diff --old file-from-repo.txt --new local-file.txt