Создать репозиторий в непустой удаленной папке - PullRequest
0 голосов
/ 19 июня 2020

Прошло 14 лет с тех пор, как я последний раз работал с svn и, похоже, я все забыл ...

У меня есть существующий веб-проект, состоящий из кучки php, html, js и другие файлы в дереве каталогов на V-Server. Теперь я хочу взять эти папки под контроль версий и создать копию на моем локальном компьютере с помощью svn. Итак, я установил Subversion в соответствии со следующими инструкциями: https://www.linuxcloudvps.com/blog/how-to-install-svn-server-on-debian-9/ Используя уже существующий apache2.

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

где нибудь есть пошаговое руководство для чайников, как это сделать? Или может кто-нибудь сказать мне непрофессионалам, как это сделать? Не могу поверить, что это дело никогда не всплывет или что оно действительно очень сложное.

1 Ответ

0 голосов
/ 25 июня 2020

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

  • Код : это неверсированный каталог на V-Server, где у вас сейчас есть связка php, html, js и другие файлы

  • Репозиторий : это первый «специальный» каталог, который вам нужно создать, чтобы хранить вашу историю Subversion и потенциально делиться ею с другими . Должен быть один, а может быть только один.

  • Рабочая копия : это второй «специальный» каталог, который необходимо создать для работы с вашим php, html, js ... файлы после создания версий, и они будут связаны с заданным путем и ревизией вашего репозитория. В данный момент их может быть ноль, один или несколько.

Ваш код может стать рабочей копией или нет, то есть зависит от вас, но он никогда не станет репозиторием:

$ svnadmin create /path/to/code
svnadmin: E200011: Repository creation failed
svnadmin: E200011: Could not create top-level directory
svnadmin: E200011: '/path/to/code' exists and is non-empty

Для вашего репозитория требуется пустая папка, но она может располагаться где угодно, если у вас есть к ней доступ от машины, которую вы собираетесь использовать в повседневной работе. Доступ означает, что он находится на вашем P C (таким образом, вы используете протокол file:) или доступен через установленный и настроенный вами сервер (svn:, http: или https:).

$ svnadmin create /path/to/repo
$ ?

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

  • Если вы хотите, чтобы код стал рабочей копией, вы можете сразу оформить заказ, а затем сделать начальный совершить загрузку всех файлов:

    $ svn checkout file://path/to/repo /path/to/code
    Checked out revision 0.
    $ svn add /path/to/code --force 
    A         code/index.php
    $ svn commit /path/to/code -m "Import existing codebase"
    $ Adding         /path/to/code/index.php
    $ Transmitting file data .done
    $ Committing transaction...
    $ Committed revision 1.
    
  • Если вас не волнует код после того, как он хранится в репозитории, или вы хотите, чтобы ваша рабочая копия была в другом месте, вы можете импортировать ваши файлы из код и создать рабочую копию в каталоге fre sh:

    $ svn import /path/to/code file://path/to/repo -m "Import existing codebase"
    Adding         code/index.php
    Committing transaction...
    Committed revision 1.
    $ svn checkout file://path/to/repo fresh
    A    fresh/index.php
    Checked out revision 1.
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...