2010-11-28 2 views
3

Недавно мы сделали первую ветку ствола нашего проекта. Строка довольно большая (несколько GB), что не имеет значения для сервера, потому что ветвь создается посредством эффективной связи. Однако в клиентских рабочих копиях проект действительно занимает в два раза больше места (все наши WC находятся из корня репозитория).Игнорировать ветви в рабочей копии SVN

Поскольку только несколько человек действительно нуждаются в ветке, как другие могут игнорировать (т. Е. Не загружать) все ветки, использующие TortoiseSVN?

Пользователи, проверяющие багажник, как предлагается ниже, здесь не являются решением. Наша структура как таковая:

/ 
projects 
    project-x 
    assets 
    blabla.psd 
    code 
    trunk 
    branches 
    branch1 
    branch2 
    project-y 
    ... 
+0

Несколько GBs? Вы помещали двоичные файлы в список игнорирования? Потому что, если нет, каждая сборка добавит полный набор скомпилированных двоичных файлов в репозиторий. – tdammers 2010-11-28 13:36:15

+0

Наши сгенерированные двоичные файлы игнорируются, но проект - это игра, поэтому у нее много художественных и аудио-активов, которые должны быть в репо. – 2010-11-28 13:56:47

ответ

5

Краткое решение - переключатель в/багажник. Все, кому не нужно ничего, кроме туловища, могут просто проверить из/root/trunk вместо/root. Любой, кто хочет филиал, должен просто проверить ветку в другом каталоге.

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

  1. извлечением из корня с опцией «непосредственными детьми только»
  2. извлечением из корня/ствола с опцией «полной рекурсивный»

Если кто-то хочет, чтобы какой-то специальный раздел проверил, то после двух предыдущих этапов:

  • выезда из корня/ветвей с опцией„немедленными только детьми“
  • выписка из этого специального отделения с опцией «полный рекурсивный»

Вы можете найти больше на эту тему в SVN хорошей книгой, глава «Sparse Directories».

Недоступен для этой процедуры для ветвей вишни. За исключением командного файла и TortoiseProc.

РЕДАКТИРОВАТЬ: Если у вас уже есть весь репозиторий, и теперь вы хотите исключить что-то для экономии места, используйте команду «Обновить элемент для проверки» в папке, которую вы хотите исключить из отдела проверки «Исключить». Согласно the manual этот параметр доступен только в диалоговом окне «Обновить до версии». Я предполагаю, что это предназначено именно для этой цели.

Попробуйте это сначала на временной рабочей копии. Я никогда не делал этого лично.

ОБНОВЛЕНИЕ: От TortoiseSVN 1.7 В диалоговом окне «Checkout» есть кнопка «Выбрать элементы», которая позволяет вам выбирать только нужные папки и извлекать их за один шаг. Эта же кнопка также доступна в диалоговом окне «Обновить элемент для ревизии».

+0

Если у пользователя уже есть рабочая копия, как он может изменить глубину обновления каталога? – 2010-11-28 14:00:01

1

Я надеюсь, что у вас есть структура что-то вроде этого:

repo root 
    | 
    +-- trunk 
    | 
    +-- branches 
     | 
     +-- branch1 
     +-- branch2 
     +-- ... 

Если это так, то пользователи могут просто кассу http://server/repo/trunk вместо http://server/repo, и когда они хотят вместо этого работают на филиале, они могут переключать свои рабочие копии на http://server/repo/branches/branch1.

+0

У нас есть структура соединительных линий/ветвей по умолчанию, но между этим и корнем есть много. На нашем репо много проектов. В каждом проекте есть два раздела: «активы» и «код». «сундук» и братья входят в «код». – 2010-11-28 13:55:48

0

Если людям нужно загружать активы вместе с кодом, более естественно разветвляться на уровне проекта-x. В этом случае у вас не будет проблем, которые вы описываете. Есть ли у вас какие-либо причины для отделения только части вашего материала?

1

Щелкните правой кнопкой мыши папку, в которую вы не хотите, и перейдите в «Обновить до ревизии ...». В появившемся диалоговом окне установите для параметра «Глубина обновления» значение «Исключить». (Заметьте, это работает только для папок.) Это удалит его из вашей рабочей копии, но не повлияет на репозиторий. Черепаха будет знать, что не пытаться обновлять ее во время обновлений.

Чтобы отменить его, вы можете щелкнуть правой кнопкой мыши родительскую папку (или ее родительский элемент и т. Д.) И выбрать «Repo Browser». Найдите исключенную папку, щелкните правой кнопкой мыши и выберите «Обновить элемент до версии». Вы получите тот же диалог; на этот раз, просто убедитесь, что он говорит: «Рабочая копия»

Undo check out of subfolder in TortoiseSVN

6

(от корня рабочей копии)

find . -name branches -exec svn update --set-depth empty {} \; 

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

svn update --set-depth infinity branches\my-feature-branch