Как работает рекурсивная фиксация Tortoise?

Я проверил локальную ветвь SVN (моя ветвь), с которой я слился из другой ветки (которая имеет совершенно другую структуру папок). Таким образом, в основном есть много удалений (старых файлов) и дополнений (новых файлов).

Когда я пытаюсь передать слияние в репозиторий (к моей ветке), Tortoise говорит

Эта фиксация не является рекурсивной, и есть перемещенные/переименованные папки, выбранные для фиксации. Такие перемещения/переименования всегда выполняются рекурсивно в репозитории. Вы все равно хотите зафиксировать?

Можно ли продолжить эту фиксацию? Если нет, что мне делать, чтобы не было проблем?

Кроме того, для некоторых файлов, которые я добавил, я внес изменения после добавления (если это влияет на природу).

Ответ 2

У меня была такая же проблема, но она была решена, возвращая изменения в файлы, которые были отмечены как "игнорировать-на-коммите"

Как только я вернул эти файлы, то tortoisesvn смог передать все остальные файлы из слияния

Ответ 3

Является ли это прекрасным, если я продолжу эту фиксацию?

Нет, ваш коммит будет игнорировать все изменения в дереве WC и отражать только изменения на уровне корня (срывное слияние).

Вы сделали ошибку при первоначальной проверке нерекурсивности. Вы можете попытаться выполнить хороший, полный commit с помощью параметра --depth infinity в CLI или найти этот переключатель в TortoiseSVN GUI.

svn commit --depth infinity . -m "Merge"

Ответ 4

Также для некоторых файлов, которые я добавил SVN, я внес изменения после добавления (если это влияет на природу).

В моем случае это именно то, что вызвало появление сообщения, даже я не выбрал эти файлы для фиксации.

Ужасное решение, которое работает только безопасно, если затронуто только несколько файлов:

  • Создайте копию измененных файлов
  • Отменить измененные файлы
  • Согласование слияния/реинтеграции
  • Скопируйте измененные файлы обратно в исходное место

Напоминание о себе: только реинтегрируйте ветку, если цель (соединительная линия) чиста.

Ответ 5

Проблема может заключаться в том, что ваш mergeinfo удаляется кем-то или автоматически, потому что информация перемещается вверх по дереву. Если вы снова объедините их, это будет работать на данный момент. Но все остальные будут сталкиваться с проблемами не объединенных отраслей. SVN потеряет некоторый код и снова объединит уже отправленный код.

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

Ответ 6

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

Ответ 7

Похоже, что TortoiseSVN выполняет некоторую проверку достоверности перед вызовом commit. Хорошо, но сообщение об ошибке очень неясно.

Когда я столкнулся с этой проблемой, я вернулся к использованию командной строки svn для фиксации. Не удалось завершить транзакцию из-за того, что одна из папок не обновлялась. После обновления только этой папки я снова выполнил "svn commit", и он прошел.

Изменить: PS: Прежде чем использовать это, убедитесь, что у вас нет файлов, помеченных как "ignore on commit". "Игнорировать при фиксации" - это черепаха, и SVN commit также выбирает эти изменения.

Ответ 8

Просто подумал, что я опубликую это, потому что это сработало для меня...

Причина этого в том, что я частично переименовал один из новых проектов, которые я создал, и по какой-то причине они все проявили себя как "Отсутствующие" на экране фиксации.

После того, как я удалил проект и папку (в которой SVN поставил галочку) и снова вернул его в качестве нового проекта, внезапно все "пропущенные" превратились в "Добавлено", и коммит прошел нормально без предупреждения меня что-нибудь.

Надеюсь, это поможет!

Ответ 9

Я не знаю опции для tortoisesvn, но вы можете использовать командную строку

svn commit --non-recursive [folder]

Это будет работать так же, как вам нравится работать greeings