Как сохранить SVN от обновления каталога уже в хранилище

Это, я не думаю, стандартный svn игнорировать вопрос.

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

Что я делаю ...

svn up
rm badDirectory

и затем в будущем svn up перезагружает его. Я хочу предотвратить это.

Спасибо!

Редактировать: ОК. Я надеялся, что у SVN есть встроенная опция, которую я просто еще не заметил. Я надеялся избежать «взлома» вокруг недостатков Subversion, но варианты ниже кажутся приемлемыми альтернативами.

Снова отредактируйте, чтобы ответить на пару комментариев:

Есть ли особая причина, по которой вы не можете извлечь эту папку и сохранить ее? нет места на диске (вероятно, нет, так как вы можете проверить это)? из соображений безопасности?

Я могу проверить папку. Весь репозиторий SVN составляет около 291 мегабайт. 290 из них находятся в этом «плохом» каталоге. По сути, некоторые другие люди, которые контролируют хранилище (и, следовательно, решают, что там происходит), помещают туда каталог, который на самом деле не должен быть там. Я не хотел, чтобы это был вопрос о политике и "правильных и правильных" способах использования SVN. Мне просто интересно, было ли техническое решение.

Можете ли вы дать лучшее описание древовидной структуры хранилища? Есть ли файлы на том же уровне, что и плохой каталог, или только другие каталоги? -

Базовая структура:

repository root
 - good dir 1
    - plenty of subdirs in all of these directories
 - good dir 2
 - good dir X
 - bad dir 1
 - bad dir 2
 - bad dir X 
 - good file 1
 - good file 2
 - good file X
13
задан 06.10.2019, 18:41

7 ответов

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

Вот моя существующая структура dir:

корень-> goodDir 1-> goodDir 2 и т.д.

я удалил плохие каталоги из своего контроля. Я не могу привести в порядок 'svn' от корневого каталога, потому что он пытается перепроверить плохие каталоги.

, Но, следующая команда работает приятно:

  ls | xargs svn up

Короткий, сладкий, простой, и легкий помнить.

-2
ответ дан 06.10.2019, 18:41
  • 1
    При использовании сценария как этот для фиксации, изменения будут распространены по нескольким изменениям, а не один. Решение с помощью редкого контроля лучше. – Bob Whiteman 06.10.2019, 18:42
  • 2
    Кроме того, я думаю " svn *" имеет тот же эффект. – Stephen 06.10.2019, 18:42
  • 3
    Это won' t вытягивают новые файлы в текущий каталог, будет он? Если кто-то добавляет новый файл/папку к высокоуровневому каталогу, you' ll пропускают. – Stephen 06.10.2019, 18:43
  • 4
    Это прекрасно. Alagazam обеспечивает сборку, которую можно загрузить как простая zip, готовая пойти. – Boinst 22.12.2019, 16:51

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

0
ответ дан 06.10.2019, 18:44
  • 1
    Вставка копии от существующей установки является одним решением, но I' d нравится видеть сначала если там, возможно, isn' t некоторый клиент, который не требует установки дизайном. – Vilx- 22.12.2019, 16:51

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

, например

projet - non-essential folder 
       \ essential folder

и необходимо будет только обновить (контроль) "существенную папку", и другие должны будут также обновить (контроль) "несущественную папку".

0
ответ дан 06.10.2019, 18:45

Вы могли указать - нерекурсивный, или-N для подавления его от получения всего subdirs

и явно делают обновление на тех, что Вы хотите.

А маленький пакетный файл сделал бы его легко repeatble

\0

0
ответ дан 06.10.2019, 18:46
  • 1
    Я вижу где движение you’re; я думаю, что предпочитаю inline-block решение для IE, хотя, поскольку это занимается проблемой интервала без потребности в отрицательных полях. – Paul D. Waite 08.01.2020, 11:30

Если Вы переименуете .svn каталог в плохой папке и затем выполните обновление, то svn перескочит через каталог и скажет, что это было удалено даже при том, что это все еще там.

необходимо будет отложить его хотя, когда Вы хотите фиксировать, по крайней мере, на верхнем уровне, который содержит плохой каталог.

3
ответ дан 06.10.2019, 18:47
  • 1
    О, — также я использую условные комментарии так, чтобы код для фиксации IE 7 и 6 только был применен в IE 7 и 6. I’ve, переписанный Ваш пример соответственно. Это избегает проблем с inline-block в Firefox 2 и означает, что весь IES после 7 получает надлежащее float - базирующийся код. – Paul D. Waite 08.01.2020, 11:34

Вы могли использовать сценарий для обновления svn - нерекурсивный текущий каталог, затем индивидуально обновить остающиеся подкаталоги recurvively. Со сценарием удара Вы могли циклично выполниться по всем подкаталогам и просто перескочить через нарушающий.

Что-то вроде этого:

#!/bin/bash

BADDIR="bad"
FILELIST="*"

svn update --non-recursive

for file in $FILELIST
do
if [ -d $file ]
then
   if [ $file != $BADDIR ] 
   then
     svn update $file
   fi
fi
done
4
ответ дан 06.10.2019, 18:48
  • 1
    Достаточно ярмарка - я пытался добавить float: right к тестовым ОТДЕЛЕНИЯМ и inline-block к контейнеру, но этому didn' t работают в IE6 - кажется, что плавание права сделало элементы 100% шириной несмотря ни на что. О, хорошо по крайней мере, эффект возможен так или иначе:-P – cryo 08.01.2020, 11:35

Можно сделать редкий контроль :

svn co url/to/repo mywc --depth=files

, который получит Вас туалет только с файлами в нем, никакими подпапками. Можно теперь получить все папки, которые Вы хотите с

svn up url/to/repo/subfolder1 --set-depth infinity 
svn up url/to/repo/subfolder2 --set-depth infinity 
svn up url/to/repo/subfolder3 --set-depth infinity 
...
10
ответ дан 06.10.2019, 18:49
  • 1
    Большой, точно что я хотел. Плюс он может быть сделан от Черепахи SVN с “Update к Revision” на нежелательных папках и установке глубины к “only этот item” или “exclude”. – Franck Mesirard 06.10.2019, 18:49
  • 2
    Вы могли бы хотеть использовать inline-block вместо inline. – Casey Chu 08.01.2020, 11:32

Теги

Похожие вопросы