2014-01-26 3 views
0

Есть ли в SVN или git-svn, чтобы клонировать подмножество ревизий репозитория, к которому я имею доступ только для чтения? Например, я хотел бы иметь автономный кеш гигантского репозитория, который в настоящее время находится на ревизии 200000, но не ожидайте, что когда-либо понадобится никаких изменений до 190000. svnsync может обрабатывать каждую ревизию с 1-200000, но, скорее всего, быть многодневным процессом, занимая 10-е место в ГБ пространства. Можно ли совместить проверку/экспорт svn ревизии 190000, а также набор изменений для каждой ревизии с 190000-200000?Частичное зеркало SVN

svnsync, похоже, не имеет каких-либо опций, чтобы ограничить набор изменений тянет, а когда я попытался с помощью опции -r 190000:200000 с git-svn, казалось, только сделать вторую часть, потянув за изменения от каждой ревизии как commit, но не состояние репозитория в ревизии 190000. Я также попытался создать новый git репо, затем svn export <remote_repo_URL>@190000, а затем git svn fetch -r 190000:200000 <remote_repo_url>, но git-svn отказался работать на git репо, которое он не создал.

Bonus: я не предвижу необходимости идти назад дополнительные изменения, но должна неожиданно возникнет необходимость, есть способ, чтобы добавить ранние версии (т.е. изменения до 190000 в данном примере)?

ответ

0

Не уверен, что мерзавец, но ртутный SVN имеет ключевое слово --startrev так что вы можете попробовать:

hg clone --startrev 190000 svn+URL

стоит генерировать список авторов и поставки, что с -Д.

Вы также можете клонировать конкретную ветку.

Результаты hg -v help clone

рт.ст. клоном [OPTION] ... ИСТОЧНИК [DEST]

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

Create a copy of an existing repository in a new directory. 

If no destination directory name is specified, it defaults to the basename 
of the source. 

The location of the source is added to the new repository's ".hg/hgrc" 
file, as the default to be used for future pulls. 

Only local paths and "ssh://" URLs are supported as destinations. For 
"ssh://" destinations, no working directory or ".hg/hgrc" will be created 
on the remote side. 

To pull only a subset of changesets, specify one or more revisions 
identifiers with -r/--rev or branches with -b/--branch. The resulting 
clone will contain only the specified changesets and their ancestors. 
These options (or 'clone src#rev dest') imply --pull, even for local 
source repositories. Note that specifying a tag will include the tagged 
changeset but not the changeset containing the tag. 

If the source repository has a bookmark called '@' set, that revision will 
be checked out in the new repository by default. 

To check out a particular version, use -u/--update, or -U/--noupdate to 
create a clone with no working directory. 

For efficiency, hardlinks are used for cloning whenever the source and 
destination are on the same filesystem (note this applies only to the 
repository data, not to the working directory). Some filesystems, such as 
AFS, implement hardlinking incorrectly, but do not report errors. In these 
cases, use the --pull option to avoid hardlinking. 

In some cases, you can clone repositories and the working directory using 
full hardlinks with 

    $ cp -al REPO REPOCLONE 

This is the fastest way to clone, but it is not always safe. The operation 
is not atomic (making sure REPO is not modified during the operation is up 
to you) and you have to make sure your editor breaks hardlinks (Emacs and 
most Linux Kernel tools do so). Also, this is not compatible with certain 
extensions that place their metadata under the .hg directory, such as mq. 

Mercurial will update the working directory to the first applicable 
revision from this list: 

a) null if -U or the source repository has no changesets 
b) if -u . and the source repository is local, the first parent of the 
    source repository's working directory 
c) the changeset specified with -u (if a branch name, this means the 
    latest head of that branch) 
d) the changeset specified with -r 
e) the tipmost head specified with -b 
f) the tipmost head specified with the url#branch source syntax 
g) the revision marked with the '@' bookmark, if present 
h) the tipmost head of the default branch 
i) tip 

Examples: 

- clone a remote repository to a new directory named hg/: 

    hg clone http://selenic.com/hg 

- create a lightweight local clone: 

    hg clone project/ project-feature/ 

- clone from an absolute path on an ssh server (note double-slash): 

    hg clone ssh://[email protected]//home/projects/alpha/ 

- do a high-speed clone over a LAN while checking out a specified version: 

    hg clone --uncompressed http://server/repo -u 1.5 

- create a repository without changesets after a particular revision: 

    hg clone -r 04e544 experimental/ good/ 

- clone (and track) a particular named branch: 

    hg clone http://selenic.com/hg#stable 

See "hg help urls" for details on specifying URLs. 

Returns 0 on success. 

Subversion sources can be used for clone. See 'hg help hgsubversion' for 
more on the conversion process. 

Варианты:

-U -noupdate клон будет содержать пустую рабочую копию (только ) -u -updaterev REV-версия, тег или ветвь для проверки -r -rev REV [+] включает указанный набор изменений -b --branch BRANCH [+] клонировать только указанный филиал --pull использовать протокол pull для копирования метаданных - несжатое использование несжатой передачи (быстро по локальной сети) -e -ssh CMD указать команду ssh для использования --remotecmd CMD указать команду hg для запуска на удаленной стороне --insecure не проверять сертификат сервера (игнорирование веб-страницы.cacerts конфигурации) --stupid использования медленнее, но более совместимый протокол для Subversion -t --tagpaths списка VALUE путей для поиска тегов в Subversion хранилищ --branchdir пути VALUE для поиска филиалов в подрывных хранилищах -infix VALUE-путь относительно магистрали, вставить тег dirs для импорта -A -authors VALUE-сопоставление файлов. Подгружаемые имена пользователей до Авторы Mercurial --filemap Файл VALUE, содержащий правила для переназначения Subversion пути репозитория --layout Стандарт импорта VALUE макет или отдельный каталог? Может быть стандартный, одинарный или автоматический. (по умолчанию: авто) --branchmap VALUE-файл, содержащий правила для преобразования отрасли --tagmap VALUE-файл, содержащий правила для переименования тегов --startrev VALUE convert Ревизии Subversion, начинающиеся с нуля , указаны как целые версии, так и HEAD; ГОЛОВА вызывает только последнюю версию потянуться

[+] отмечена опция может быть указана несколько раз

глобальные опции:

-R --repository REPO корневого каталога хранилища или имя наложения пачке файл --cwd DIR change рабочий каталог -y --ninterinteractive не запрашивает, автоматически выбирает первый выбор для все подсказки -q --quate suppress output -v --verbose enable дополнительный выход --config CONFIG [+ ] set/override c onfig option (use 'section.name = value') --debug enable debugging output --debugger start debugger --encoding ENCODE устанавливает кодировку кодировки (по умолчанию: UTF-8) --encodingmode MODE задает кодировку кодировки mode (по умолчанию: строгий) --traceback всегда печатает трассировку на исключение - время, в течение которого команда принимает - профиль выполнения команды печати профиля - информация о версии выходных данных и выход -h -help display help и выход --hidden рассмотреть скрытые изменения - цвет ТИП, когда нужно раскрасить (логическое, всегда, авто или никогда) (по умолчанию: авто)

[+] отмечено опция может быть указана несколько раз

0

Вы можете попробовать svnrdump: для svnrdump dump она принимает поправки (или диапазон ревизий в формате обычного в Subversion) и сбрасывает только в этом случае указанного диапазона