SVN: Как автоматически удалить рабочую копию, но сохранить игнорируемые элементы?

В настоящее время у меня есть рабочая копия с двумя ветвями:

/Source
/Source/v1.2
/Source/v1.3

Я хочу удалить это и вместо этого проверить только ту ветку, которая мне нужна (т.е. перейти на один уровень вниз по дереву каталогов и проверить только /Source/v1.3). Однако рабочая копия v1.3 содержит кучу игнорируемых файлов, которые я действительно хочу сохранить. Поэтому я не хочу просто удалять всю рабочую копию и начинать заново. И, конечно же, я не хочу вручную пытаться найти все игнорируемые файлы и сохранить их. Есть ли какая-то команда для этого?

Я использую Windows, используя TortoiseSVN, а также Slik SVN для автоматизированных сборок.


person Josh    schedule 27.06.2011    source источник
comment
Итак, я надеюсь, что это не слишком плохо, чтобы ответить на мой собственный (первый) вопрос, но я надеюсь, что это может помочь другим. Вот что я сделал: 1. Скопировал папку v1.3 из папки Source. 2. Удалите исходную папку. 3. Создайте новую исходную папку. 4. Переместите копию версии 1.3 в папку Источник. Таким образом, исходная папка больше не является частью рабочей копии, и ни один из путей не был изменен. В ретроспективе это имеет смысл (и мне нравится тот факт, что вы можете перемещать рабочие копии куда угодно!).   -  person Josh    schedule 28.06.2011
comment
@ Джош - неплохо ответить на свой вопрос. Просто сделайте это ответом и примите его, а не комментируйте.   -  person Ethan Cabiac    schedule 28.06.2011
comment
@Josh - вы можете добавить свое решение в качестве ответа и принять его. Кроме того, вы можете экспортировать свойства файла/папки (все свойства svn:ignore). Затем вы можете импортировать их для другого файла/папки.   -  person Daniel Haley    schedule 28.06.2011
comment
Всем привет. Спасибо за ответы! Я на самом деле пробовал это, но это не позволит мне ответить на мой собственный вопрос в течение 8 часов. Я добавлю это как ответ завтра.   -  person Josh    schedule 28.06.2011
comment
@Josh В данном случае это сработало. Решением для случаев, когда вы не можете (или не хотите) перемещаться по папкам, будет использование svn switch --force, если я правильно помню.   -  person s.m.    schedule 28.06.2011
comment
@DevNull: я думаю, что @Josh был заинтересован в сохранении настоящих игнорируемых файлов, а не списка игнорирования.   -  person s.m.    schedule 28.06.2011
comment
@s.m.: да, это точно.   -  person Josh    schedule 28.06.2011
comment
Оглядываясь назад, я думаю, что мог бы сделать и это: 1. Удалите папку v1.2. 2. Удалите папку .svn в разделе Источник. Наверное тот же эффект?   -  person Josh    schedule 28.06.2011
comment
Ах. Я неправильно понял. +1 за хороший вопрос. :-)   -  person Daniel Haley    schedule 28.06.2011


Ответы (1)


Каждое дерево подкаталогов в Subversion является собственным рабочим каталогом. Он содержит все необходимое для того, чтобы использовать его в качестве рабочего каталога. Сюда входят каталоги и файлы, которые игнорируются, история изменений и т. д.

Нет никаких причин, по которым вы не можете просто использовать нужный подкаталог в качестве нового рабочего каталога и удалить остальные. На самом деле, вы даже можете переименовать верхнее дерево подкаталогов, как только уберете его с дороги. В этом примере вы перемещаете каталог v1.3 на диск C:\ и переименовываете его в \Source-v1.3. Затем, удаляя остальные:

C:\> cd \Source
C:\Source> move v1.3 \Source-v1.3
C:\Source> cd ..
C:\> rd Source /s/q
C:\> cd Source-v1.3
C:\Source-v1.3> svn update

Это позволит игнорировать все файлы и каталоги, которые вы проигнорировали.

person David W.    schedule 27.06.2011
comment
Спасибо! На самом деле все еще проще; удалите папку v1.2 и удалите папку .svn в разделе «Источник». Таким образом, путь к папке v1.3 не меняется (что является частью того, что я хотел; у меня есть неотносительные пути, которые я хотел избежать редактирования). Извините, у меня недостаточно представителей, чтобы добавить +1 к вашему ответу, но я ценю это. - person Josh; 28.06.2011
comment
Между прочим, похоже, что изменения в рабочих копиях в Subversion 1.7 нарушают эту возможность :( Рабочие копии больше не содержат папку .svn в каждой подпапке; папка .svn теперь присутствует только в корне рабочей копии. Облом :( - person Josh; 18.10.2011