Черепаха SVN скрытые _svn папки - PullRequest
13 голосов
/ 21 октября 2008

Они особенно раздражают, когда мне нужно загрузить на сервер веб-решение.

Есть ли способ настроить SVN для создания папок _svn вне моего рабочего каталога? Если нет, то как лучше всего справиться с ними, когда вам нужно скопировать только код?

Обновление: Использование команды «svn export» проблематично, поскольку существуют файлы, которые не находятся под контролем исходного кода, но необходимы, такие как .dll, файлы данных xml или файлы базы данных, и они не будут экспортированы. Поэтому потребуется каждый раз вручную копировать их в разные подкаталоги из рабочей копии.

Ответы [ 9 ]

26 голосов
/ 21 октября 2008

(В настоящее время) невозможно настроить SVN (или TortoiseSVN) для создания каталогов .svn (или _svn) вне рабочей копии. Я считаю, что план SVN 1.6 включает в себя пересмотр библиотеки рабочих копий. Возможность разместить административные каталоги где-то еще может выйти из этой работы, но я размышляю.

Вы должны использовать команду "svn export" для создания "чистой" копии вашей рабочей копии (то есть без каталогов _svn). Это работает из клиента командной строки.

Если вы используете TortoiseSVN, вы можете щелкнуть правой кнопкой мыши рабочую копию и выбрать «Экспорт ...». Это попросит у вас папку для экспорта файлов в. Кроме того, вы можете перетащить рабочую копию правой кнопкой мыши в папку (которая не является рабочей копией), и TortoiseSVN вызовет контекстное меню; Среди параметров - «Экспорт SVN в сюда» и «Экспорт в SVN все сюда», последний также экспортирует файлы, не контролируемые версией .

17 голосов
/ 21 октября 2008

Используйте «svn export» для создания чистого дерева каталогов.

12 голосов
/ 21 октября 2008

Robocopy развертывание ...

robocopy {source} {dest} /MIR /XD _svn /XD .svn
4 голосов
/ 21 октября 2008

В TortoiseSVN вы можете вправо щелкнуть рабочую копию и перетащить ее в другое место. И когда появится всплывающее меню, выберите «SVN Export Here». (Для этого необходимо, чтобы весь код в рабочей копии был зарегистрирован, поскольку экспорт будет осуществляться из транка, а не из рабочей копии)

Подробности см. В этих ресурсах:

  • http://tortoisesvn.net/most-forgotten-feature (о щелчке правой кнопкой мыши и перетаскивании контекстного меню)
  • http://tortoisesvn.net/node/343 (О переводе рабочей копии SVN). Если вы используете этот метод, я думаю , что ваши неверсированные файлы останутся в папке, но я не пробовал ...
3 голосов
/ 21 октября 2008

Если вы используете сценарий nant для включения развертывания на веб-сервере, он имеет _SVN и _SVN / **, которые автоматически исключаются при копировании файлов. nant отфильтрует множество ненужных файлов при копировании файлов с помощью своей задачи копирования, включая:

  • ** / * ~
  • ** / # * #
  • ** /. # *
  • ** /% *%
  • ** / CVS
  • / CVS /
  • ** /. Cvsignore
  • ** /. Svn
  • /. Svn /
  • ** / _ svn
  • / _ svn /
  • ** / SCCS
  • / SCCS /
  • ** / vssver.scc
  • / _ vti_cnf /

Вы можете узнать больше о NANT на домашней странице проекта здесь: NANT Home

2 голосов
/ 21 октября 2008

+ 1 для решения от Isak Savo.

И вы можете сделать XCOPY и исключить папки "/ svn":

XCOPY% 1% 1_deploy /EXCLUDE:C:\ExcludeSVN.txt / E / C / I / F / R / Y

Содержимое файла ExcludeSVN.txt:

/ _ СВН

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

  • .pdb
  • .cs
  • .resx
  • .csproj
  • .sln
  • .webinfo
  • .bak
  • .sql
  • .zip
  • .vspscc
  • .vssscc
  • .scc
  • \ Web.config

Предупреждение. Если вы исключаете файлы .cs, вы даете возможность повторно скопировать файл .css после

1 голос
/ 21 октября 2008

Действительно грязный путь в Windows: создайте копию своего проекта, откройте проводник, перейдите в каталог, в котором находится копия, и выполните поиск для всего, заканчивающегося _svn. По завершении поиска выберите все и нажмите «Удалить».

Тьфу! Но это работает действительно хорошо.

0 голосов
/ 25 ноября 2012

Если вы хотите удалить все подпапки с именем .svn в windows затем создайте пакетный файл с таким содержанием:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

сохранить в файл del_All_Dot_SVN_Folders.cmd . Запустить его. Вы сделали.

Благодаря http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

Помните, что приведенный выше код имеет .svn, тогда как код в ссылке имеет только * svn, так что лучше иметь .svn, чтобы случайно не иметь нежелательного эффекта.

0 голосов
/ 21 октября 2008

Мы используем CruiseControl с robocopy для создания чистой копии вашего хранилища.

 <exec>
        <executable>C:\Archivos de programa\Windows Resource Kits\Tools\robocopy.exe</executable>
        <buildArgs>E:\CruiseControl\yourproject\Code\trunk\ E:\wwwroot\yourproject *.* /E /XX /XA:H /XO /NDL /NC /NS /NP /XF "*.cache" "*.designer.cs" "*.sln" "*.msbuild" "*.csproj" "*.PDB" "*.user" "*.designer" /XD .svn App_Code obj Properties</buildArgs>
        <buildTimeoutSeconds>60</buildTimeoutSeconds>
        <successExitCodes>1,0</successExitCodes>
 </exec>

Аргументы / XF и / XD исключают файлы и каталоги, которые вы не хотите загружать в производство.

Вы можете найти больше информации о robocopy здесь .

...