SVNKit: список обновленных/добавленных файлов в рабочей копии после операции обновления

Я пытаюсь загрузить кучу файлов свойств, размещенных в каталоге, на S3.

Я поделился некоторыми подробностями в https://stackoverflow.com/questions/16214798/s3-static-resource-update-on-regular-basis-using-java-or-shell-script.

В качестве решения я пытаюсь сделать следующее:

  1. Передавайте файлы свойств в репозиторий SVN из любого места.
  2. Извлечь файлы свойств в рабочую копию на локальном компьютере (LM).
  3. Используйте SVNKit, чтобы написать задачу обновления.
  4. Используйте S3 API для загрузки только обновленных/добавленных файлов в рабочую копию.

Я выполнил обновление и загрузку на S3. Но мне сложно получить список добавленных/обновленных файлов. Пожалуйста, помогите мне здесь.


person Learn More    schedule 26.04.2013    source источник


Ответы (1)


Вы можете установить ISVNEventHandler для SvnUpdate и собирать события о затронутых файлах в #handleEvent. Однако это не очень надежное решение, ИМО.

Вместо:

  • перед обновлением убедитесь, что вы используете чистую версию (в качестве альтернативы используйте SvnStatusSummary, чтобы определить минимальную локальную версию),
  • запомнить этот номер версии,
  • выполнить SvnUpdate,
  • проверьте журнал между старой и новой ревизией и, наконец,
  • определить все затронутые файлы (могут быть дубликаты конечно при изменении файла пару раз или избыточные файлы при изменении файла вперед и назад).
person mstrap    schedule 26.04.2013
comment
Я принял ваше предложение использовать ISVNEventHandler. Почему-то у меня не работает метод event.getPath. СБОР ИЗМЕНЕНИЙ: я не использую InfoHandler. Я рекурсивно просматриваю каталог, проверяю все файлы и помещаю их на карту. Затем я применяю обновление к рабочему экземпляру. Затем я снова собираю ревизии и помещаю их в другую карту. Сравнение этих двух карт может дать мне обновленные файлы, а также новые файлы. - person Learn More; 29.04.2013
comment
Подход вроде нормальный. Я использую SVNKit 1.7.x. Есть только SVNEvent#getFile(), но нет SVNEvent#getPath(). Для более старых версий, я уверен, есть SVNEvent#getFile(), который тоже должен хорошо работать. - person mstrap; 29.04.2013