Как проверить Подверсию, работающую копия

У меня есть Подверсия, работающая копия по крайней мере с одним недостающим файлом (локальная копия была удалена при фиксации древовидного конфликта). Это забавно, потому что файл является имеющим версию, это появляется в репозитории, древовидное разрешение конфликтов было на 100% локально (это произошло на обновлении, и я не фиксировал впоследствии), и я выполнял "svn очистку" несколько раз, но ни один из моих клиентов Подверсии (командная строка svn и TortoiseSVN) не может обнаружить рабочую копию, повреждается. Даже не возвращаясь все изменения вернули файл.

Я зафиксирую его, как обычно (новый контроль где-то в другом месте и скопирую изменения с WinMerge); у меня на самом деле есть другой вопрос:

Как можно протестировать законность рабочей копии?

Конечно, можно ли всегда проверять новую копию и использовать ли файл, сравнивают утилиту, но... нет ли лучший путь? Есть ли инструмент для проверки рабочей копии, эквивалентной svnadmin verify?

=== ОБНОВЛЕНИЕ ===

У меня есть хорошие ответы с приемами для предотвращения рабочего повреждения копии, но мой вопрос был больше на строке нахождения, что метод на 100% уверен, что рабочая копия является и когерентной и связана с фактическим содержанием репозитория; в других работах рабочая копия, эквивалентная из svnadmin, проверяет команду.

До сих пор это похоже:

  • Подверсия не обеспечивает такой инструмент, и возможно, что формат данных SVN даже не позволяет писать тот.

  • Обновление к пересмотру является техникой, которая, кажется, находит (и фиксирует) некоторые проблемы, хотя часто необходимо возвращаться назад и вперед к старому пересмотру, и я предполагаю, что оно может только обнаружить недостающие файлы, если они были изменены в диапазоне пересмотра.

  • Проверка новой рабочей копии похожа только на 100%-й надежный метод.

12
задан Álvaro González 28 February 2010 в 11:48
поделиться

4 ответа

Пока что я вынужден предположить, что нет надёжного способа сделать это, пока вы не сделаете новый коммит и не сравните оба дерева каталогов. Если в каталоге .snv отсутствуют данные, но он фактически не повреждён, то в рабочей копии просто недостаточно информации, чтобы обнаружить, что некоторые файлы исчезли.

Хотя возможно, что WC-NG изменит это к лучшему (или нет), текущий формат не настолько прочен.

1
ответ дан 2 December 2019 в 23:07
поделиться

У меня были похожие проблемы, когда я начинал работать с SVN, используя Tortoise в Windows. Всякий раз, когда мне нужно было скопировать папку - например, при создании нового плагина, основанного на другом, уже существующем, я весело скопировал + вставил его в рабочую копию.

Я не знал, что когда вы это делаете, вы копируете каталог метаданных .svn . Это вызывает бесконечную путаницу в Subversion - если вы работаете с графическим клиентом, кажется, что новый каталог правильно зарегистрирован, и клиент показывает вам чистую табличку после каждой фиксации. Но, новый каталог никогда не регистрируется в .

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

Если вам нужно продублировать каталог в рабочей копии, всегда сначала экспортируйте его, а затем добавляйте обратно.

1
ответ дан 2 December 2019 в 23:07
поделиться

Это похоже на проблему, с которой я столкнулся некоторое время назад: svn - файл в рабочей копии кажется "потерянным"

дословно цитирую ответ wcoenen:

Клиенты SVN 1.6.1 (включая {{1}) } TortoiseSVN) имела ошибку, из-за которой папки иногда ошибочно устанавливались на глубину "пусто". Это вызывает описанные вами симптомы. (Обратите внимание, что возможно, что папка была сделана "пустой" с помощью svn 1.6.1 и осталась такой, даже если вы уже обновили для нового клиента svn за среднее время.)

Чтобы исправить это, используйте пункт меню «обновить до версии» в TortoiseSVN и полностью выберите глубину рекурсивный "

3
ответ дан 2 December 2019 в 23:07
поделиться

Если щелкнуть правой кнопкой мыши по файлу, в меню SVN, как мне кажется, есть команда Diff. Это откроет и подчеркнет различия между локальной версией и версией репо, как мне кажется.

Вы также можете выполнить diff из командной строки, если хотите.

2
ответ дан 2 December 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: