У меня есть пакет Windows, который периодически запускается для добавления / удаления файлов из SVN
. Я хочу, чтобы скрипт выполнял:
- Удаление всех файловкоторые были удалены в Windows (не SVN) из SVN
- Добавить все файлы (
*.*
), которые еще не контролируются версиями - Commit все изменения
- Обновление папки, чтобы убедиться, что папка обновлена.
У меня есть следующий пакет:
:: Go to my folder (already checked out as SVN folder)
cd C:\MyFolder\
:: Delete/Remove all missing files
svn status || ? { $_ -match '^!\s+(.*)' } | % { svn rm $Matches[1] }
:: Add new files
svn add *.*
:: Commit all changes
svn commit *.* -m ^"Committed on %date% %time%"
:: Update the folder
svn up --accept mine-full
Что происходит после того, как я сам удалил файл new file.txt
в проводнике Windows
- Команда удаления запускается, затем выводит список файлов, например
! new file.txt
- Команда добавления выполняется, который добавляет все новые файлы, если любое
- Commit
- Обновление затем восстанавливает файл
new file.txt
<- я не хочу, чтобы он восстанавливал удаленный файл. </li>
для Удалить / Удалить часть Я также попробовал эти две команды:
svn status || grep "^\!" || sed 's/^\! *//g' || xargs svn rm
svn status || grep "^\!" | sed 's/^\! *//g' | gawk '{print "\""$0"\"" }' | xargs svn rm ::includes whitespaces in filenames
Вывод:
C:\MyFolder>svn status || ? { $_ -match '!\s+(.*)' } | { svn rm $Matches[1] }
! new file.txt
C:\MyFolder>svn add *.*
svn: Skipping argument: E200025: '.svn' ends in a reserved name
svn: warning: W150002: 'C:\MyFolder\old.txt' is already under
version control
svn: E200009: Could not add all targets because some targets are already
versioned
svn: E200009: Illegal target for the requested operation
C:\MyFolder>svn commit *.* -m "Committed on 2018-10-23 12:15:57.90"
svn: Skipping argument: E200025: '.svn' ends in a reserved name
C:\MyFolder>svn up --accept mine-full
Updating '.':
Restored 'new file.txt'
At revision 21.
Press any key to continue . . .
Нижняя строка, папканеобходимо синхронизировать с SVN (резервное копирование), поэтому, если есть файлы, добавленные / удаленные, они также должны быть добавлены / удалены в SVN