Удалите созданный проект на своем компьютере и обновите проект из репозитория tortoisesvn

Обновлено: 07.07.2024

Я использовал TortoiseSVN для резервного копирования очень больших больших двоичных файлов, которые мне больше не нужны. Я хочу восстановить обратно это дисковое пространство из репозитория. Все эти файлы/папки поддерживались под одним проектом (рабочая копия) в TortoiseSVN под одним каталогом.

Как удалить все файлы с версиями и информацию, связанную с этим проектом, из SVN Репозитория?

спросил(а) 2009-09-17T04:32:00+04:00 12 лет, 2 месяца назад

Вы не можете сделать это из SVN. Вы в основном должны создать дамп и перестроить весь репозиторий для этого. Нет команды svn destroy , как таковой. Это по дизайну. Он сохраняет вашу историю в целости и сохранности, несмотря ни на что.

Этот парень, похоже, очень злится на это, но я лично считаю, что доступный пользователю svn destroy или svn obliterate или что-то вроде анти-особенности системы SCC!

ответил(а) 2009-09-17T04:37:00+04:00 12 лет, 2 месяца назад

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

Но у меня было несколько раз, когда мы решили по какой-то причине реструктурировать наши репозитории. Если, скажем, у нас есть один репозиторий на сервере A и другой на сервере B, и мы решили перенести проект с A на B, я бы очень хотел его стереть с A. В противном случае через полгода кто-то может найти копию на A и не осознавать, что он больше не является текущим.

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

может ли кто-нибудь предложить мне, как удалить полный проект 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 настроен в вашей среде.

        Рисунок 4.11. Окно выполнения, отображающее законченное обновление

        Окно выполнения, отображающее законченное обновление


        Время от времени вы должны обеспечивать внесение изменений, сделанных другими, в вашу рабочую копию. Процесс внесения изменений с сервера в вашу локальную копию называется обновлением . Обновляться может одиночный файл, набор выбранных файлов или рекурсивно целые иерархии папок. Для обновления выберите файлы и/или папки, которые вы желаете обновить, щёлкните правой клавишей мыши и выберите из контекстного меню Проводника TortoiseSVN → Обновить. . Появится окно, отображающее ход выполнения обновления. Изменения, сделанные другими, будут слиты с вашими локальными файлами с сохранением любых изменений, которые вы произвели в этих же файлах. Обновление не оказывает влияния на хранилище.

        Различные действия, производимые при обновлении, в окне выполнения обозначаются разным цветом:

        Новый элемент, добавленный к вашей рабочей копии.

        Избыточный элемент, удалённый из вашей рабочей копии, или отсутствующий элемент, заменённый в вашей рабочей копии.

        Изменения из хранилища, успешно слитые с вашими локальными изменениями.

        Изменения из хранилища, вызвавшие при слиянии с локальными изменениями конфликт, который вы должны уладить.

        Неизменённый элемент в вашей рабочей копии, обновлённый новой версией из хранилища.

        Это используемая по умолчанию цветовая схема, но вы можете настроить эти цвета в диалоге настроек. Для дополнительной информации смотрите «Настройки цветов в TortoiseSVN».

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

        После завершения обновления, в диалоге выполнения под списком файлов показывается сводка о количестве обновлённых, добавленных, удалённых, конфликтующих и т.д. элементов. Эту информацию можно скопировать в буфер обмена при помощи Ctrl+C .

        Стандартная команда Обновить не имеет параметров и просто обновляет вашу рабочую копию до ревизии HEAD хранилища, что является наиболее часто используемым вариантом. Если вы хотите больше управлять процессом обновления, то должны использовать вместо этого TortoiseSVN → Обновить до ревизии. . Это позволит вам обновить вашу рабочую копию до определённой ревизии, а не только до последней. Представим, что ваша рабочая копия имеет ревизию 100, но вы хотите воспроизвести состояние, которое она имела в ревизии 50. Тогда просто обновите до ревизии 50.

        В том же диалоге вы можете выбрать глубину, до которой обновить текущую папку. Используемые термины описаны в xref linkend="tsvn-dug-checkout-depth"/>. Глубина по умолчанию — это Рабочая копия , которая хранит настройки существующей глубины. Вы также можете установить глубину постоянной , это означает что последующие обновления будут использовать эту новую глубину, т. е. эта глубина используется по умолчанию.

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

        Вы также можете выбрать игнорировать ли любые внешние проекты при обновлении (т. е. проекты использованные с помощью svn:externals ).

        Внимание

        После того, как вы обновили файл или папку до нужной ревизии, вы не должны делать изменения в этих файлах. Вы получите ошибку « устарел » при попытке их зафиксировать! Если вы хотите отменить изменения в файле и начать заново с ранней ревизии, вы можете откатиться к предыдущей ревизии в диалоге журнала ревизий. Для дополнительных инструкций и других возможных методов, ознакомьтесь с «Возвратиться к старым ревизиям в хранилище (откат)».

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

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

        Несколько файлов/папок

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


        По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
        Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.

        С самого начала сообщаю, что для SVN есть подробное руководство. Называется оно svn-book и доступно на сайте и идет вместе с CollabNet Subversion-server. Так же про установку и настройку svnserv с Apache есть описание в учебнике по TortioseSVN (довольно хорошая подробная помощь на русском).

        На самом деле SVN-клиент может отлично работать и без сервера. Репозиторий (хранилище кода) можно создать в любом каталоге на собственном HDD, или в сетевом каталоге. Сервер требуется лишь для удаленного доступа к репозиторию, не больше. Локальный репозиторий годится, если над проектом работает один человек и ему просто нужна система контроля версий своего приложения и бэкапы.

        Установка сервера

        5 MB). Первый идет в комплекте с Apache, второй — с Apache и плагином для Windows Management Console. Так же для VisualSVN есть платная возможность интеграции с Visual Studio.

        A. Установка и настройка сервера VisualSVN (svn-сервер + Apache + консоль управления) самая простая. Эту версию нельзя установить без Apache.

        Работа с сервером VisualSVNбезусловно самая простая.

        B. Установка CollabNet Subversion Server (svn-сервер + Apache опционально).

        После установки появятся две новых службы Windows: Subversion Server (наш svnserv.exe) и Apache2.2 (если он был включен при установке). Чтобы все заработало их нужно запустить.

        С. Установка svnserve 1.4.6 (чистый svn-сервер).

        1) Скачиваем файл svn-1.4.6-setup.exe. Запускаем его на установку. При установке ничего кроме целевого каталога указывать не надо. После установки этот каталог надо добавить в переменную среды PATH (не помню, возможно это делается автоматически).
        2) Создаем репозитории командой: svnadmin create c:\repositories\example-repository
        3) Создаем сервис. Команда в консоли: sc create svn_svr binpath= «c:\Program Files\Subversion\bin\svnserve.exe --service -r C:\repositories\» displayname= «Subversion Svr»
        Здесь -r C:\repositories — адрес каталога с репозиториями, т.е. от него потом будут вычисляться пути. Например, если есть 2 репозитория: C:\repositories\proj1 и C:\repositories\proj2, то указав параметром -r C:\repositories потом пути к репозиториям будут: svn://localhost:3690/proj1 и svn://localhost:3690/proj2 соответственно. Порт 3690 устанавливается по умолчанию, но его можно поменять (подробности в svn book).4) Запускается сервис автоматически при старте Windows или из списка служб.

        Именно эту работу (если не считать установку Apache) сделал за вас установщик CollabNet Subversion Server. В случае установки svnserve 1.4.6 доступ к репозиторию будет только по протоколу svn://.

        D. Создание репозитория. Выделяю этот пункт отдельным разделом. Если в VisualSVN создание репозитория производится кликом мыши, то для svnserve (в том числе в версии от CollabNet) репозиторий создается из консоли. В поставке snv-сервера есть файл snv-install-folder\bin\svnadmin.exe. Если путь к snv-install-folder\bin еще не прописан в PATH, сделайте это.

        Чтобы создать репозиторий, откройте консоль (cmd) и перейдите в каталог для хранения репозиториев, который вы указывали при установке (CollabNet) или создании сервиса (svnserve 1.4.6). Создайте новый пустой подкаталог (например, example-repository). В консоли выполните команду: svnadmin create example-repository. В только что созданном каталоге появится структура файлов svn. В них есть много полезных «штук», о которых можно почитать в svn-book и учебнике.

        Для начала такое определение доступа годится, но в последствии конечно пароли надо шифровать (читаем svn-book).

        На этом установка сервера закончена и можно установить клиент.

        Установка клиента.

        Некоторые профессионалы предпочитают работать с консолью. Наверное это не самый удобный способ, особенно для новичков, поэтому рассматривать его не будем. Другие работают с SVN через плагины к своим IDE. Это самый лучший способ, но поскольку разных IDE много и плагинов к ним тоже, в этой статье работу с ними не описываем.

        Самым популярным и признанным клиентом SVN под Windows является TortoiseSVN. После его установки вы не получите отдельной программы, которую можно «классически запустить», клиент встраивается в проводник Windows, а команды для него доступны из контекстного меню файла (в т.ч. и в Total Commander).

        Описывать установку клиента нет никакого смысла, там все элементарно просто.

        О том, как работать с TortoiseSVN, подробно расписано в руководстве TortoiseSVN Клиент Subversion для Windows.

        Дублировать это подробное руководство, конечно, желания нет, но все же super-fast-start work with tsvn опишу.

        1) Для просмотра любого репозитория после установки TortoiseSVN вызовите контекствное меню на любом файле в системе, выберите меню TortoiseSVN→Repo-browser. В открывшемся окошке введите адрес репозитория с протоколом (например, localhost:8443/svn/test или svn://someserver:3690/proj1/trunc). Откроется окно просмотра репозитория (с помощью кнопки напротив строки адреса можно выбрать, какую ревизию просмотреть; HEAD — это последняя ревизия).

        2) Для создания локального репозитория (не используя сервер) запускается пункт меню TortoiseSVN→Create repository here. на нужном каталоге. В Repo-browser такой репозиторий доступен по протоколу file:///.

        3) Для скачки себе версии из существующего репозитория запускается пункт меню TortoiseSVN→SVN Checkout на каталоге, в который сольется версия.

        4) Если вы еще не использовали SVN и хотите залить на сервер свою текущую версию исходников, запустите пункт меню TortoiseSVN→Import. на каталоге, в котором лежит версия (при этом не забудьте, что разрабатываемую ветку надо лить в trunk).

        5) TortoiseSVN→Export. используется для получения чистой версии исходников из репозитория (без служебных файлов контроля версий).

        6) Если контекстное меню вызвать на каталоге, который является локальной (рабочей) копией репозитория, контекстное меню значительно расшириться. Например, появятся пункты Update (слить последние изменения с сервера) и Commit (закачать ваши изменения на сервер).

        На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN.

        Читайте также: