Удалите созданный проект на своем компьютере и обновите проект из репозитория tortoisesvn
Данная статья посвящена моему знакомству с клиентом TortoiseSVN под WIndows. В сети много информации на эту тему (в частности, отличнейшая документация на русском), но для себя я решил сделать небольшую шпаргалку, так как некоторые вещи даже после прочтения подробного мануала были не очевидны. Для начала, немного теории.
Что такое TortoiseSVN?
Это самый популярный клиент для управления версиями при разработке ПО. Вообще, SVN, согласно Википедии, это свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. Версии в TortoiseSVN называются ревизиями. Можно в любой момент откатиться к любой из ревизий, посмотреть кто и какие изменения сделал, кто в команде больше всего работал над какими файлами работал и так далее.
Принцип простой – есть централизованное хранилище, в него импортируется проект (папка с файлами), из хранилища выделяется рабочая копия, автор как-то с ней работает, затем делает Commit и номер ревизии увеличивается на единицу. Можно откатиться к любой ревизии из хранилища.
Устанавливается как расширение проводника, а не как отдельная программа, и выглядит следующим образом.
Что такое ревизии?
Согласно документации, ревизии это серии массивов деревьев. Наш проект растет и эти деревья тоже.
Каждое дерево – это «снимок» состояния хранилища после каждой фиксации
Как работает TortoiseSVN?
TortoiseSVN не зависит от языка, на котором вы пишите. Он просто сравнивает файлы.
Если работает один разработчик – то центральным хранилищем можно сделать любую папку на HDD или сетевом диске, нужно просто выбрать папку и выбрать в контекстном меню Create Repository Here. И у нас создастся хранилище, в которое мы сможем импортировать наши проекты. Чуть позже посмотрим на примерах. Можно конечно и сервер поднять, например VisualSVN, и центральное хранилище сделать на нём, но об этом позже. Тут от целей и задач зависит.
Если разработчиков несколько и все они разбросаны по разным уголкам планеты, то тогда, конечно, лучше использовать клиент-серверную модель. Поднять сервер, например VisualSVN, настроить хранилище на нём и тогда Commit, сделанный одним разработчиком виден другим.
Общий принцип.
Импортируем наш проект в хранилище, в папку trunk. Trunk – это ствол дерева – основное направление развития нашего проекта.
Выделяем копию из хранилища. Работаем с ней, жмём Commit. Изменения сохраняются в центральном хранилище.
Модели слияния и блокировки
Модель слияния
При работе у нас появилась идея сделать какую-то фишку в проекте.
В хранилище создаем ветвь (branch) из папки trunk. Теперь у нас в хранилище 2 одинаковые копии проекта.
В рабочей копии переключаемся на файлы из branch. При этом над стволом команда тоже может работать в это время. Работаем с копиями – в копиях ствола и ветви появляются различия. Когда работа над ветвью закончена – проводим слияние. При необходимости разрешаем конфликты (когда разные разработчики меняли одну и ту же строку, когда менялась структура деревьев и так далее).
Продолжаем работать над стволом. Модель слияния позволяет работать нескольким разработчикам одновременно. Далее, мы посмотрим как технически работать с моделью слияния.
Модель блокировок
Блокируем файл или группу, с которым мы должны работать.
Никто не имеет доступа к нему, пока он не заблокирован.
После того как поработали с файлом – разблокируем его. Главное не забыть – в этом-то вся и проблема модели блокировок))) Ну и ещё одна проблема – все ждут друг друга.
Практика
Создание репозитория
Создадим на диске С:\ папку SVN, а внутри неё сделаем ещё одну папку, назовем её Repository. Теперь нажмем правой клавишей мыши на этой папке и в контекстном меню выберем Create Repository Here таким образом
Нажмём Create Folder Structure
А потом Start Repo Browser, в результате мы увидим вот такую структуру папок
trunk – это ствол дерева, основное развитие проекта, сюда поместим проект при первоначальном импорте в хранилище.
branches – это ответвления, когда у нас появится какая-то идея, мы всегда можем сделать ответвление – поработать с ним, и в конце сделать слияние с trunk, и удалить ненужные файлы из branch, так как изменения уже будут закреплены.
tags – это как фотографии, нам нужно зафиксировать состояние проекта на какой-то момент, например релиз 1.0, используем это в tags.
Чуть позже увидим как со всем этим расправляться технически.
Создание папки-источника
Чтобы далеко не ходить – создадим в папке SVN – другую папку, например MyProject (Source Folder)
Теперь внутри папки MyProject (Source Folder) создадим какую-нибудь структуру, например вот так
В текстовом файле напишем, произвольный текст, например вот так…
Импорт папки-источника в репозиторий
В принципе папка-источник у нас готова, теперь импортируем её в репозиторий.
Здесь обязательно подпишите комментарий, потом, когда таких транзакций будет миллион, и мы все их будем просматривать в логе – это очень сильно пригодится. А если будет миллион безликих транзакций, то считай и потерялись. Как видите – первоначальный импорт делаем в trunk.
Здесь, смотрите, я для примера взял просто file:///C:/SVN/Repository/trunk, но в реальной жизни у нас десятки проектов, и поэтому тут можете варьировать, либо file:///C:/SVN/Repository/Project1/trunk либо file:///C:/SVN/Repository/trunk/Project1 – на вкус и цвет как говорится. В документации советуют второй вариант.
Теперь если зайдем в Repo-Browser, то увидим следующую картину
Создание рабочей копии
Создадим папку MyWorkCopy
Делаем SVN Checkout
Далее выберем директорию из которой мы будем копировать файлы
И в результате получим вот такой результат
Работа с рабочей копией
Сделаем какие-то изменения в нашем файле, в нашей рабочей копии.
Закроем файл и посмотрим на него – иконка изменилась. Это означает, что файл не синхронизирован с хранилищем.
Как сделать синхронизацию? Очень просто.
Откроется диалог – обязательно подписываем комментарий к коммиту.
В результате изменения произошли. Ревизия получила номер 3.
Теперь значок снова зеленый – значит синхронизация прошла успешно.
Просмотр журнала и управление изменениями.
Теперь, к контекстном меню Tortoise на папке MyWorkFolder жмем ShowLog
И видим следующую картину.
Просмотр изменений
Посмотрим какие изменения мы внесли по сравнению с предыдущей версией, для этого зайдем в C:\SVN\MyWorkCopy\SomeFolder и в контекстном меню выберем следующее
И увидим примерно такую картину
Когда изменений в сроке не было, она не подсвечивается цветом, то есть мы будем видеть такую картинку
Откат к предыдущим изменениям
Идем в C:\SVN, жмем правой кнопкой мыши на MyWorkCopy – жмем ShowLog
Далее выбираем ревизию и выбираем откат
Выплывет вот такое окно, в котором жмем Revert
После того как мы сделали откат – то увидим, что строки SomeChanges нет в файле SomeFile.txt И кроме того – мы сделали изменения в рабочей копии – и они не соответствую теперь хранилищу. Поэтому, чтобы закрепить эти изменения – нужно сделать Commit.
Делаем Commit изменений в хранилище – после чего получим зеленую галочку.
Просматривать лог и делать коммиты можно на разных уровнях. Можно на уровне файлов или папок – тут всё зависит от Ваших текущих задач.
Думаю данный пост завершить, так как он получился слишком длинным. В следующем посте хочу осветить правильный цикл слияния.
Мы изучили теорию – на минимальном уровне.
Мы разобрали как создать хранилище.
Мы создали рабочую копию из хранилища, сохранили изменения, посмотрели лог и откатились обратно. В принципе, это типичные действия для разработчиков.
В данном HOWTO будет подробно рассказано как работать с самым популярным SVN-клиентом под Windows: скачивать и обновлять репозитории, создавать теги и ветки проекта, коммитить (публиковать) свою рабочую копию, откатывать сделанные изменения и многое другое.
Где можно скачать программу
Программа TortoiseSVN интегрируется в Проводник Windows (Windows Explorer) и все действия с ней выполняются из контекстного меню каталогов (папок).
Начнём с самого простого — скачивания одного из репозиториев на свой компьютер.
Скачивание репозитория SVN (Checkout)
Если Вы хотите скачать репозиторий какого-нибудь проекта, то Вы должны знать его URL, а также логин и пароль для доступа (если не указаны, то для анонимного доступа (только чтение) используется логин и пароль anonsvn). URL’ы могут быть:
Допустим, что URL нам известен, поэтому чтобы скачать репозиторий, мы должны сделать следующее:
Обновление скачанного репозитория (Update)
SVN и создавался для удобного управления проектам, а также поддержания их в актуальном состоянии, поэтому вторая по значимости операция — обновления скачанной рабочей копии. Рекомендуется как можно чаще обновлять свои рабочие копии. При обновлении скачиваются только изменённые файлы, добавляются новые и удаляются удалённые из репозитория файлы. Итак, чтобы обновить рабочую копию, нужно:
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
- Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Update«.
- В открывшемся окне наблюдаем за процессом обновления: списком добавленных, изменённых и/или удалённых файлов, текущим номером версии. Здесь же можно нажать кнопку «Show log…» чтобы просмотреть список, прочитать описание изменений (если указано), сравнить текущую версию с предыдущей и т.д.
- Нажмите «OK» чтобы закрыть это окно. Репозитарий обновлён до последней версии.
Сохранение своих изменений в репозиторий (Commit)
Если Вы хотите внести свои изменения в скачанный репозиторий и у Вас есть на это право (право коммита в репозиторий), то просто начинайте работать с локальной рабочей копией как с обычной папкой: создавайте, редактируйте, удаляйте файлы и/или папки. Теперь чтобы внести изменения в репозиторий, нужно:
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows. Внимание! Рабочая копия должна быть скачана от логина пользователя, у которого есть право на коммит изменений (коммит-флаг).
- Нажимаем правой кнопкой по свободному месту в папке, выбираем «SVN Commit…«.
- В открывшемся окне «Commit» в секции «Message» вводим краткое описание своих изменений (это рекомендуется делать всегда, особенно если не Вы один работаете над проектом), но описание можно и оставить пустым (не рекомендуется, т.к. другие разработчики или пользователи не смогут понять что именно было изменено). В этом поле разрешено использовать буквы национальных алфавитов (присутствует полная поддержка юникода), но, к сожалению, некоторые веб-клиенты svn (отображающие в браузере список изменений) вместо русских букв отображают кракозябры. TortoiseSVN лишён этого недостатка.
- В секции «Changes made (double-click on file for diff)» Вы увидите список всех изменённых, добавленных и удалённых Вами файлов локальной рабочей копии. У изменённых файлов будут автоматически стоять флажки, у остальных — нет. Установите флажки у тех файлов, изменения которых должны быть загружены на svn-сервер (есть флажок — файл обновляется, добавляется, удаляется; нет флажка — остаётся без изменений). Двойной щелчок по файлу запустит утилиту Tortoise Merge (предназначена для сравнения версий файлов), которая покажет последнюю версию файла из репозитория SVN в левом окне и текущую рабочую копию в правом. Изменения будут выделены: удалённые строки зачёркнуты, добавленные выделены.
- После выделения нужных файлов или всех сразу («Select / deselect all«), нажмите кнопку «OK» и дождитесь окончания загрузки изменений на сервер. Будет открыто окно со списком добавленных, изменённых и/или удалённых файлов, а также указан текущий номер ревизии.
Работа с репозиторием напрямую на сервере
Иногда требуется работать с svn-репозиторием напрямую на сервере не скачивая его на локальный компьютер. Для этих целей существует утилита «SVN Repo-browser«, также входящая в состав TortoiseSVN. Работать с ней очень просто:
Создание веток или меток внутри репозитория
Если Вы работаете над большим проектом, то желательно для каждой публичной стабильной версии (1.0, 1.1, 2.0 и т.д.) создавать отдельный тег, например, /tags/RELEASE- Mj . Mn , где Mj — Major-версия, а Mn — Minor-версия проекта. Пример: /tags/RELEASE-1.0 (для версии 1.0), /tags/RELEASE-2.63 (для версии 2.63) и т.д. Внимание! Теги создаются НЕ в каталоге /trunk/, а выше него на один уровень! Чтобы создать метку или ветвление, нужно ( у Вас должно быть право коммита в репозиторий для создания меток или ветвлений ):
Откат изменений в рабочей копии
- Заходим в папку, в которой находятся файлы скачанной рабочей копии в Проводнике Windows.
- Нажимаем правой кнопкой по свободному месту и выбираем «TortoiseSVN» — «Revert…«.
- В открывшемся окне Вы увидите список всех изменённых файлов Вашей рабочей копии. Установите флажок у того файла, который Вы хотите откатить до версии из репозитория, либо выберите сразу все файлы («Select / deselect all«). Двойной щелчок по файлу покажет его отличия от оригинального файла.
- Нажмите «OK«. Выбранные файлы будут восстановлены, а изменённые будут отправлены в Корзину Windows.
Работа с утилитой Log Viewer
Утилита Log Viewer, запускаемая после нажатия на кнопку «Show log…«, либо при нажатии правой кнопкой по свободному месту в локальной рабочей копии — «TortoiseSVN» — «Show log«. По умолчанию утилита показывает последние 50 ревизий и их описаний (если во время коммита они были введены). Все основные действия выполняются из контекстного меню ревизии:
- «Compare with woking copy» — сравнить текущую (выделенную) ревизию с локальной рабочей копией. Список изменений будет показан в Tortoise Merge.
- «Show changes as unified diff» — показать изменения выделенных ревизий как унифицированный патч-файл (unified diff). Если выделена только одна ревизия, то она будет сравниваться с предыдущей (например, выделена ревизия 87, она будет сравниваться с 86).
- «Compare with previous revision» — показать изменения выделенной и предыдующей ревизии. Будет отображено окно с различающимися файлами, двойной щелчок по файлу откроет его в Tortoise Merge для просмотра изменений.
- «Compare and blame with previous revision» — то же, что и предыдущее, но здесь отображается кто и когда внёс какое-либо изменение в файл построчно.
- «Browse repository» — открывает описанный выше Repository Browser для прямой работы с репозиторием.
- «Create branch/tag from revision» — позволяет создать ветку или тег из выделенной ревизии (см. выше).
- «Update item to revision» — обновляет до выделенной ревизии.
- «Revert to this revision» — позволяет откатиться до выделенной ревизии.
- «Revert changes from this revision» — позволяет откатить все изменения, сделанные в выделенной ревизии.
- «Merge revisions to…» — позволяет объединить несколько ревизий в рабочую копию.
- «Checkout…» — скачать выделенную ревизию (см. выше).
- «Export…» — извлечь выделенную ревизию без служебных каталогов.
- «Edit author» — редактировать имя автора выделенной ревизии (нужны права администратора).
- «Edit log message» — позволяет редактировать текст описания выделенной ревизии (нужны права администратора).
- «Show revision properties» — показать свойства выделенной ревизии.
- «Copy to clipboard» — скопировать номер выделенной ревизии, автора, описание и список изменённых файлов в буфер обмена Windows.
- «Search log messages» — запустить поиск в описаниях ревизий.
Кнопка «Show all» покажет все ревизии, а «Show range…» позволит задать диапазон ревизий, которые будут отображаться в окне Log Viewer.
Кнопка «Statistics» отображает различную статистическую информацию: наиболее активный и наименее активный автор, количество изменений в репозитории в неделю, общее количество изменений и т.д.
может ли кто-нибудь предложить мне, как удалить полный проект SVN из репозитория SVN (репозиторий svn находится в linux). Я нашел "svn delete", но не думаю, что он делает то же самое. Это помогает только в удалении файлов или подпапок, но не всего проекта.
этот ответ может ввести в заблуждение
читать комментарии к этой статье, и убедитесь, что это то, что вы после
'svn delete' работает против содержимого репозитория, а не против самого репозитория. для обслуживания репозитория (например, полного удаления) вы должны использовать svnadmin. Однако есть причина, по которой у svnadmin нет подкоманды "delete". Вы можете просто
где $REPOS_PATH-это путь, который вы использовали для создания своего репозитория с помощью
для этого требуется доступ к репозиторию svn на стороне сервера, поэтому у вас должны быть некоторые права администратора.
он работает путем (a) сброса содержимого репозитория в файл, (b) исключения некоторого содержимого и (c) очистки и повторного создания простого репозитория и в конечном итоге (d) загрузив содержимое отфильтрованного репозитория:
счетчик репозитория не изменяется в результате этих операций. Однако теперь в вашем репозитории "отсутствуют" все номера ревизий, используемые для создания содержимого, которое вы удалили на шаге (b).
Subversion 1.7.5, похоже, очень хорошо справляется с этими "отсутствующими" ревизиями. Используя "svn ls-r $missing", например, сообщает то же самое, что и "svn ls - r $(( missing-1))".
вопреки этому, моя (довольно старый) VIEWVC сообщает " нет содержимого "при запросе" отсутствующей " ревизии.
в случае, если вы просто хотите удалить проект из редакции head, чтобы он больше не отображался в вашем РЕПО при запуске svn list file:///path/to/repo/ просто запустите:
однако, если вам нужно удалить всю запись в репо, используйте другой метод.
я тоже чувствовал, что принятый ответ немного вводит в заблуждение, поскольку он может привести к тому, что пользователь непреднамеренно удалит несколько проектов. Неточно утверждать, что слова репозиторий, проект и каталог неоднозначны в контексте SVN. У них есть определенные значения, даже если сама система не навязывает эти значения. Сообщество и, что более важно, клиенты SVN имеют согласованное понимание этих условий, которые позволяют им помечать, ветвить и объединять.
в идеале это поможет устранить любую путаницу. Как кто-то, кто должен был перейти от git к svn для нескольких проектов, это может быть неприятно, пока вы не узнаете, что ветвление SVN и проекты SVN действительно говорят о структурах папок.
SVN терминология
хранилище
база данных фиксирует и истории для ваших папок и файлов. Репозиторий может содержать несколько "проектов" или нет проекты.
проект
определенная структура папок SVN, которая позволяет инструментам SVN выполнять тегирование, слияние и ветвление. SVN по своей сути не поддерживает ветвление. Ветвление было добавлено позже и является результатом специальной структуры папок следующим образом:
- /проекта
- / tags
- /филиалы
- /багажник
Примечание.: Помните, что SVN "проект" - это термин, используемый для определения конкретной папки strcuture в репозитории
проекты в репозитории
Макет Репозитория
- / "вонючка" "Project" due to layout
- / tags
- /филиалы
- /багажник
- / tags
- /филиалы
- /багажник
- / tags
- /филиалы
- /багажник
- / subdir
- /приложении app2 "Project" due to layout
- / tags
- /филиалы
- /багажник
поскольку репозиторий-это всего лишь база данных файлов и фиксаций каталогов, он может размещать несколько проектов. При обсуждении репозитории и проекты убедитесь, что используется правильный термин.
удаление хранилище может означать удаление нескольких проекты!
локальный каталог SVN (.каталог svn в корневом каталоге)
при использовании url фиксации происходят автоматически.
удалить a Проект: svn rm skunkworks + svn commit
потому что SVN проект это действительно определенная структура каталогов, удаление проекта-это то же самое, что удаление каталога.
управление репозиторием SVN
есть несколько SVN серверы, доступные для размещения репозиториев. Управление самими репозиториями обычно осуществляется через консоли администрирования серверов. Например, Visual SVN позволяет создавать репозитории (базы данных), каталоги и проекты. Но вы не можете удалять файлы, управлять фиксациями, переименовывать папки и т. д. из консоли сервера, поскольку это конкретные задачи SVN. Сервер SVN обычно управляет созданием репозитория. После создания репозитория и у вас есть новый URL, остальная часть вашей работы выполняется через .
в svn нет понятия "проект". Итак, не стесняйтесь удалять все, что вы think принадлежит проекту.
удаление рабочей копии
Subversion не отслеживает ни состояние, ни существование рабочих копий на сервере, поэтому нет никаких накладных расходов сервера для хранения рабочих копий. Аналогичным образом, нет необходимости сообщать серверу, что вы собираетесь удалить рабочую копию.
Если вы, скорее всего, снова используете рабочую копию, нет ничего плохого в том, чтобы просто оставить ее на диске, пока вы не будете готовы использовать ее снова, и в этот момент все это займет это обновление svn, чтобы обновить его и подготовить к использованию.
однако, если вы определенно не собираетесь снова использовать рабочую копию, вы можете безопасно удалить все это, используя любые возможности удаления каталогов, которые предлагает ваша операционная система. мы рекомендуем перед этим запустить svn status и просмотреть все файлы, перечисленные в его выходных данных, которые имеют префикс a ? чтобы убедиться, что они не важны.
легко поверить, что удаление всего репозитория Subversion требует "информирования" Subversion о том, что вы собираетесь удалить репозиторий. Но Subversion заботится только об управлении репозиторием после его создания, а не о том, существует ли репозиторий или нет ( если это имеет смысл ). Это происходит следующим образом: инструменты и команды Subversion не страдают от простого удаления каталога репозитория с помощью обычных утилит операционной системы (например, rm-R). Каталог репозитория это не то же самое, что установленный каталог программы, где удаление программы без удаления может оставить после себя неустойчивые файлы конфигурации или другие зависимости. Репозиторий на 100% самодостаточен в своем каталоге, и его удаление безвредно (кроме потери истории проекта). Вы просто очищаете сланец, чтобы создать новый репозиторий Subversion и импортировать свой следующий проект.
идем в Eclipse, Нажмите на окно в строке меню, затем "открыть перспективу - > другое - > SVN Repository Exploring -> нажмите OK"
теперь, после выполнения "нажмите OK", вам нужно перейти на грузовик (или место, где ваш проект сохраняется в SVN), затем выберите проект(который вы хотите удалить), затем щелкните правой кнопкой мыши -> удалить.
это удалит проект из subversion.
правильное предложение: svnadmin deltify $PATH. не forghet для удаления проекта или репозитория из файла svn-acl (если вы его используете). если вы просто удалите папку репозитория, вы можете повредить каталог svn в зависимости от того, как ваш svn настроен в вашей среде.
какой самый простой способ вернуть мою рабочую копию до предыдущей версии с помощью Windows в TortoiseSVN?
Я не нашел команду "найти", чтобы сделать это быстро.
есть несколько способов сделать это. но не просто обновить до более ранней версии как предложил здесь.
самый простой способ отменить изменения из одной ревизии или из диапазона ревизий-использовать диалог журнала ревизий. Это также метод, который вы хотите использовать, чтобы отбросить последние изменения и сделать более раннюю ревизию новой главой.
- Выберите файл или папку, в которой необходимо отменить изменения. Если хочешь . отменить все изменения, это должна быть папка верхнего уровня.
- выберите TortoiseSVN → показать журнал, чтобы отобразить список ревизий. Возможно, вам придется использовать Show All или Next 100 чтобы показать интересующую вас ревизию(ы).
- выберите ревизию, которую вы хотите вернуть. Если вы хотите отменить ряд ревизий, выберите первую и удерживайте Shift при выборе последнего. Обратите внимание, что для нескольких ревизий диапазон должен быть непрерывным без пробелов. Щелкните правой кнопкой мыши на выбранная редакция(ы), затем выберите Context Menu → Revert изменения из этой ревизии.
- или если вы хотите сделать более раннюю ревизию новой редакцией HEAD, щелкните правой кнопкой мыши выбранную ревизию, затем выберите Context Menu → Revert to this revision . Это приведет к отмене всех изменений после выбранной ревизии.
вы вернули изменения в рабочей копии. Проверьте результаты, затем зафиксируйте изменения.
все решения объясняются в "Как Это Сделать И...- часть документов TortoiseSVN.
я использовал те же инструкции Stefan использовал, взяты из сайт Черепаха.
но важно нажать COMMIT сразу после. Я сходил с ума, пока не понял это.
Если вам нужно сделать более старую ревизию вашей ревизии сделать следующее:
Выберите файл или папку, в которой необходимо отменить изменения. Если вы хотите отменить все изменения, это должен быть верхний уровень папка.
выберите TortoiseSVN → показать журнал, чтобы отобразить список ревизий. Вам может потребоваться использовать Show All или Next 100, чтобы показать интересующую вас ревизию(ы).
щелкните правой кнопкой мыши на выбранной редакции, затем выберите контекстное меню → вернуться к этой редакции. Это приведет к отмене всех изменений после выбранной ревизии.
сделать коммит.
команда Revert в контекстном меню игнорирует ваши изменения и возвращает рабочую копию в предыдущее состояние. Вы также можете выбрать желаемую ревизию, отличную от" Head", когда вы" CheckOut " из репозитория.
щелкните правой кнопкой мыши на папке, которая находится под управлением SVN, перейдите в в TortoiseSVN → показать журнал. Запишите ревизию, к которой вы хотите вернуться, а затем перейдите в в TortoiseSVN → обновить до ревизии. .
в контекстном меню TortoiseSVN выберите "обновить до редакции", введите желаемый номер редакции и вуаля :)
вот еще один метод, который неортодоксален, но работает*.
недавно я оказался в ситуации, когда я проверил взлом кода, зная, что я не могу обновить наш производственный код до него, пока не будет проведена вся работа по интеграции (оглядываясь назад, это было плохое решение, но мы не ожидали, что застрянем, но другие проекты имели приоритет). Это было несколько месяцев назад, и интеграция застопорилась на протяжении всего этого времени. Появляется требование к измените базовый код и получите его в производство на прошлой неделе без изменений.
вот что мы сделали:
после проверки того, что новое требование ничего не нарушает при использовании ревизии перед моей регистрацией, я сделал копию рабочего каталога, содержащего новый код. Затем я удалил все в рабочем каталоге и проверил ревизию, которую я хотел. Затем я удалил все файлы, которые я только что проверил, и скопировал в файлы из рабочая копия. Затем я совершил это изменение, эффективно уничтожив разрывное изменение из репозитория и получив производственный код в качестве главной ревизии. У нас все еще есть разрывное изменение, но оно больше не в головном пересмотре, поэтому мы можем двигаться вперед к производству.
*Я не рекомендую этот метод, но если вы окажетесь в подобной ситуации, это выход, что это не слишком болезненно.
Я совершил некоторые плохие изменения кода в моем SVN sever, используя в TortoiseSVN.
теперь главный пересмотр составляет 155, но я хотел бы удалить последние 2 пересмотра, чтобы главный пересмотр был 153. Другими словами, Я хотел бы "отменить" мои последние два коммита.
Как я могу это сделать с помощью TortoiseSVN? Существует ли опция в меню TortoiseSVN или мне нужно использовать командную строку?
Если вы откроете журнал SVN, вы можете щелкнуть правой кнопкой мыши по ревизии и использовать параметры вернуться к этой редакции или отменить изменения из этой ревизии. Оба этих параметра обновят вашу рабочую копию (которую вы можете затем зафиксировать).
в TortoiseSVN нет опций для удалить изменения.
к сожалению, с TortoiseSVN (или любым другим SVN-клиентом) невозможно удалить ревизию, в том смысле, что она полностью исчезает из истории. Изменение истории репозитория SVN сложно и требует манипуляций на сервере-см. Этот вопрос:почему не уничтожить существенную особенность Subversion?
однако вы можете "отменить" проверку, сделав новую проверку, которая изменяет ее обратно. Обычно это делается с помощью техники называется "обратное слияние". См., например,убрать случайную проверку
Я использовал эти инструкции взяты из сайт Черепаха.
но важно нажать COMMIT сразу после. Я сходил с ума, пока не понял это.
Если вам нужно сделать более старую ревизию вашей ревизии сделать следующее:
Выберите файл или папку, в которой необходимо отменить изменения. Если вы хотите отменить все изменения, это должен быть верхний уровень папка.
выберите TortoiseSVN → показать журнал, чтобы отобразить список ревизий. Вам может потребоваться использовать Show All или Next 100, чтобы показать интересующую вас ревизию(ы).
щелкните правой кнопкой мыши на выбранной редакции, затем выберите контекстное меню → вернуться к этой редакции. Это приведет к отмене всех изменений после выбранной ревизии.
сделать коммит.
будучи в корне обновленной рабочей копии, вы должны использовать следующую команду:
это "отменит" все ваши изменения из версии 153, чтобы ваша версия 156 выглядела как версия 153.
Не забудьте совершить после этого!
вы можете сделать то же самое из TortoiseSvn: откройте 'Показать Журнал' интерфейс, выберите версию 153, щелкните ее правой кнопкой мыши и выберите 'отменить изменения из этой ревизии'.
Читайте также: