У меня есть файл, который в настоящий момент находится в редакции X. Я хотел бы вернуть его в редакцию X-1 и зафиксировать его как X-1. Однако, когда я получаю предварительный просмотр коммита для X-1, SVN (в данном случае я использую Tortoise) говорит, что изменений нет. Как это может быть? И как мне зафиксировать возвращенный файл?
1 ответ
Я не уверен, что читаю слишком много в формулировке вашего вопроса, но у вас может быть неправильное понимание того, как работает SVN, а также что такое команда "вернуться".
Во-первых, команда "вернуться" предназначена только для того, чтобы избавиться от изменений, которые вы еще не совершили. Он отменяет любые изменения, которые вы видите со svn status
или TortoiseSVN "проверка на наличие изменений". Ничего более.
Во-вторых, невозможно зафиксировать ревизию меньше, чем текущая ревизия. В SVN файлы не имеют ревизий. У ревизий есть файлы. И номера ревизий всегда идут вверх, а не вниз. Думайте о пересмотре в SVN как о снимке во времени ВСЕХ в хранилище. Технически, вы должны сказать «файл foo, как он существовал в ревизии 123», а не "ревизия 123 файла foo". Последнее не совсем правильно и может сломаться в некоторых ситуациях.
Наконец, похоже, вы пытаетесь удалить некоторые изменения в файле. Вы делаете это путем создания НОВОЙ ревизии файла, используя концепцию "обратного слияния". Из командной строки вы выполняете слияние файла, указывая отрицательную версию или диапазон обратных версий, чтобы отменить изменения в этих версиях. Затем вы можете зафиксировать получение новой ревизии, содержащей ваш файл, с этими изменениями в обратном порядке. TortoiseSVN делает это легко: просто откройте диалоговое окно "Показать журнал", щелкните правой кнопкой мыши ревизию, которую вы хотите отменить, и выберите "отменить изменения из этой ревизии". Тогда вам нужно будет совершить как и раньше.
В любом случае, выполните этот шаг "обратного слияния" из рабочей копии, указывающей на HEAD. Ваша новая ревизия всегда будет идти после HEAD, так как именно так работает SVN.