git-svn checkout项目不使用-s

时间:2011-08-15 18:50:14

标签: git git-svn

我正在尝试通过git-svn检出SVN回购,并且在使用git与trunk / branches / 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 :(得分:0)

  1. 使用git svn init和后续git svn fetch而不是git svn clone。这种方法比git svn clone
  2. 稳定得多
  3. 如果您的Subversion存储库遵循标准Subversion /trunk/branches/tags方案,则-s开关应该正常工作。在网址中忽略/trunk/的跟踪:

    git svn init -s https://svn-repo-base/projects/path/to/my/project project.git
    git svn fetch
    
  4. 对我而言,svn fetch经常流产,但仍然无缝地再次回忆起来。因此,我甚至编写了一个完整的脚本,使用Windows Batchfile更新/重新获取所有Git-on-SVN存储库。我每天使用这个git-fetch-all从所有git存储库(在名为.git的目录中)获取所有最新的SVN提交:

    @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.