проект проверки git-svn не работает с -s - PullRequest
2 голосов
/ 15 августа 2011

Я пытаюсь оформить репозиторий SVN через git-svn, и у меня возникают проблемы с настройкой git для хорошей работы с каталогами trunk / branch / tags.

Это отлично работает:

git svn clone https://svn-repo-base/projects/path/to/my/project/trunk

однако, когда я пытаюсь:

git svn clone -s --no-minimize-url https://svn-repo-base/projects/path/to/my/project/

Я просто получаю пустой каталог без клонированных файлов. (--no-minimize-url есть, потому что git пытался сделать проверку на https://svn-repo-base/ без него)

Есть идеи, что я здесь не так делаю?

1 Ответ

0 голосов
/ 16 января 2013
  1. Используйте git svn init и последующие git svn fetch вместо git svn clone.Этот подход гораздо более стабилен, чем git svn clone
  2. Если ваш репозиторий Subversion следует стандартной схеме Subversion /trunk, /branches, /tags, переключатель -s должен просто работать.Пропустите хвост /trunk/ в своем URL:

    git svn init -s https://svn-repo-base/projects/path/to/my/project project.git
    git svn fetch
    
  3. Для меня svn fetch прерывается довольно часто, но продолжает без проблем повторять его снова.Поэтому я даже написал целый скрипт, который обновляет / перезагружает все репозитории Git-on-SVN, используя пакетный файл Windows.Я использую это git-fetch-all каждый день, чтобы получить все последние SVN-коммиты из всех репозиториев git (в каталогах с именем .git):

    @Echo Off
    
    IF "%1"=="" GOTO noparams
    
    IF "%1"=="fetch" GOTO fetch
    
    goto end
    
    :fetch
    IF NOT exist .git\svn\refs\remotes goto nosvnwc
    git svn fetch
    if ERRORLEVEL 1 goto fetch
    git svn rebase -l
    goto end
    
    :nosvnwc
    ECHO --- Directory seems not to be a SVN bound Git Repository. Doing plain fetch 
    git fetch --all
    goto end
    
    :noparams
    FOR /d %%f IN (.\*.git) DO (
    cd %%f
    ECHO --- Fetching %%f SVN Commits ------------------------------------------
    call ..\%0 fetch
    ECHO --- Calling 'git gc --auto' in %%f 
    git gc --auto
    cd ..
    ECHO --- Leaving %%f
    ECHO.
    ECHO.
    )
    
    :end
    ECHO Update finished.
    
...