我正在尝试通过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/
进行结账。
我在这里做错了什么想法?
答案 0 :(得分:0)
git svn init
和后续git svn fetch
而不是git svn clone
。这种方法比git svn clone
如果您的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
对我而言,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.