Как оформить заказ только на исходные файлы? - PullRequest
4 голосов
/ 16 июня 2011

Я хотел бы использовать Subversion и извлекать только исходные файлы (например: проверять только файлы .c, .cpp и .h). Это возможно ? Если так, как я могу это сделать?

Я пытаюсь получить исходный код webkit:

http://svn.webkit.org/repository/webkit/releases/WebKitGTK/

Я действительно не хочу менять код и проверять его заново или создавать его. Я просто хочу исходные файлы, потому что загрузка всего выпуска составляет около 3 ГБ на версию.

ЧАСТИЧНОЕ РЕШЕНИЕ:

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

Это псевдо код Python, который я назову

GetAllSourceFiles('http://svn.webkit.org/repository/webkit/releases/WebKitGTK/')

def GetAllSourceFiles(directoryName):
list = svn ls directoryName
for name in list:
    if name is a file of type c,cpp or h:
       do svn export directoryName + name      
    else if name is directory:
         do GetAllSourceFiles(name)

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Если вы знаете структуру хранилища, вы можете оформить заказ на определенные папки. Я никогда не пробовал это с файлами. Но вам нужно проверить каждую папку отдельно. Вам нужно написать это так для типичного SVN-репозитория

для багажника

svn co  repository_url/trunk/path_to_folder checkout_destination/

для филиала

svn co  repository_url/branches/name_of_branch/path_to_folder checkout_destination/

для выпуска

svn co repository_url/releases/name_of_releases/path_to_folder checkout_destination/

1012 * редактировать *

Вы можете попробовать написать скрипт, работающий в цикле

Использование

svn ls repository_url/releases/name_of_releases/path_to_folder

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

если папка содержит исходные файлы, загрузите ее, используя

svn co repository_url/releases/name_of_releases/path_to_folder --non-recursive

Проверить следующую папку

1 голос
/ 16 июня 2011

Просто небольшая коррекция, я знаю, что это деталь, но она может быть на той же длине волны. Когда вы говорите, что загрузка составляет 3 ГБ на версию, это не совсем правильный способ увидеть это. Первая проверка будет большой загрузки. Последующие обновления кодовой базы в заголовочные или даже возвращающиеся версии будут примерно равны разнице между двумя ревизиями.

Теперь давайте предположим, что у вас недостаточно места на диске или вы хотите сэкономить немного пропускной способности . Я размышлял над вашим вопросом, и единственное, что я могу придумать, - это использовать Определения Externals для проверки внешнего хранилища в вашем собственном хранилище. Это единственный способ, которым я могу придумать, где вы можете выбрать нужные файлы без посторонней помощи. Но это много ручной работы, а не так здорово.

Другое решение состоит в том, чтобы получить эти программные средства, немного больше работы, но допускает немного большую гибкость для любого проекта, если все сделано правильно. Я вижу, что из вашего профиля вам, похоже, нравится Java, есть клиентские библиотеки , которые позволят вам получить svn ls, вы анализируете результат только для извлечения этих файлов .c и .ccp. Но это будет очень медленно, так как он будет проверять файлы по отдельности. Хотя, как только вы сможете это сделать, вы также можете сгенерировать ваши Внешние определения в файле и, таким образом, получить лучшее из обоих миров. У вас есть скорость SVN, гибкость в выборе вишни и лучше всего автоматизация.

Svn может быть очень гибким, но для некоторых специализированных нужд вы должны собрать инструмент вместе, и, к счастью, 1020 * есть довольно приличные клиентские библиотеки, доступные практически на любом языке.

Удачи:)

UPDATE

Согласно этой записи :

Если вам повезет использовать Subversion 1.6, вы можете иметь внешний ссылки для обоих каталогов и файлов

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