Перемещение в ствол / ветки / теги Макет Subversion, разные рабочие копии в разных состояниях - PullRequest
0 голосов
/ 17 августа 2010

У нас есть следующая модель разработки для веб-сайта:

  • Разработчики создают новые вещи на своих рабочих станциях и фиксируют в центральном хранилище
  • Хук после фиксации автоматически обновляет извлечение этого репо на тестовом веб-сервере, чтобы они могли видеть эффект изменений
  • Когда функция считается достаточно стабильной, отдельные файлы * svn up -эдированы на рабочем веб-сервере
  • Файлы в извлеченных копиях на тестовом и производственном серверах никогда не изменяются и, как таковые, никогда не используются для фиксации обратно в репо

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

Этот вопрос решил наши начальные проблемы, и теперь у нас есть новая структура каталогов в репозитории, и тестовый веб-сервер был переключен на использование транка. Проблема в том, что мы не можем сделать то же самое для рабочего сервера, потому что svn switch даст нам ревизию HEAD всех файлов, и нам нужны текущие ревизии.

Я видел, что вы можете использовать -r BASE с svn switch, но когда я это делаю, я получаю:

$ svn switch -r BASE https://old_URL/trunk
svn: 'https://old_URL' is not a working copy
svn: 'https://old_URL' does not exist

Есть предложения?

1 Ответ

1 голос
/ 17 августа 2010

Попробуйте синтаксис @PEGREV:

C:\>svn help switch
switch (sw): Update the working copy to a different URL.
usage: 1. switch URL[@PEGREV] [PATH]
       2. switch --relocate FROM TO [PATH...]

Обновление

Обратите внимание, что системы branches, tags и trunk являются всего лишь соглашением об именах. В Subversion нет ничего особенного: это только каталоги. Итак, у вас есть это:

r1: Add: /site/
    Add: /site/css
    Add: /site/img

    Repo:
        /site/
        /site/css
        /site/img

r2: Add: /branches
    Add: /tags
    Add: /trunk

    Repo:
        /branches
        /site/
        /site/css
        /site/img
        /tags
        /trunk

r3: Copy: /site/ to /trunk
    Delete: /site/

    Repo:
        /branches
        /tags
        /trunk
        /trunk/site/
        /trunk/site/css
        /trunk/site/img

Если у вас есть рабочая копия, указывающая на /site r1, вы не можете переключить ее /trunk/site r1: этот путь не существует в дереве каталогов r1.

Как только вы решите выпустить новую версию, скажем, r4, вы сможете переключиться на /trunk/site r4; не раньше.

ИМХО, вам, вероятно, следует создать ветвь (например, live или release) и заставить действующий сервер указывать на его последний выпуск. Когда вы хотите добавить новые изменения, вы объединяетесь с этой веткой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...