Subversion - согласовать изменения после удаления / воссоздания каталога - PullRequest
0 голосов
/ 21 июня 2011

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

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Немного запутался, что вы ищете. Если у вас есть процесс, который создает папки и данные, зачем хранить эти папки и подпапки в Subversion? Subversion должна быть только для исходного и не сгенерированного контента.

Хотелось бы, чтобы было немного больше объяснений, что ты делаешь и почему.

У нас кто-то использовал Robohelp для поддержки файлов HTML, которые мы имели в нашем исходном коде. Robohelp генерирует файлы HTML из документов MS-Word. Когда он выполняет регенерацию, имена файлов, размеры и каталоги могут меняться даже при самых незначительных изменениях. Старый метод удалял все и снова считывал его. Это было трудно для технических авторов, и это породило тысячи изменений в одной ревизии Subversion.

В итоге мы сохранили файлы документов Word в Subversion. Сгенерированный HTML был удален. Однако мы сохранили один ZIP-файл, содержащий весь HTML-код (поскольку процесс сборки Unix не мог сгенерировать HTML-код из Robohelp). Когда новый набор файлов справки был восстановлен, авторы Tech просто заархивировали его и заменили zip-файл в нашем хранилище Subversion. Нет больше массовых добавлений и удалений.

Вы пытаетесь синхронизировать работу, которую кто-то делает из Subversion, в Subversion? Например, кто-то загружает файлы через svn export, выполняет свою работу, и ваша задача - проверить все изменения. В этом случае вы должны написать небольшой сценарий, чтобы пройти и сравнить все в каталоге # 1 со всем в каталоге # 2 и внести изменения таким образом. Я считаю, что мы сделали это за три прохода. В первый раз, удалив все в Каталоге № 1, которого нет в Каталоге № 2, затем добавив все в Каталоге № 2, которого нет в Каталоге № 1. И, наконец, проводим сравнение всех файлов в каталоге # 1 и каталоге # 2 и фиксируем эти изменения.

0 голосов
/ 21 июня 2011

Вам придется написать сценарий / код самостоятельно.

Либо: сделайте резервную копию всех папок .svn и верните их на место после того, как ваша 3. партия выполнила свою задачу, либо 2. сохраните рабочую копию поблизости и скопируйте все файлы из рабочей копии 1. Вечеринка обновлена.

Затем найдите все удаленные файлы с помощью svn status, помеченные буквой 'D', и введите svn rm для них. Найдите все новые файлы со статусом svn, помеченные ? и добавьте их в svn.

Наконец запустите svn commit.

...