我正在Windows环境中设置SVN服务器: 无论何时制作标签,提交后脚本都会导出有关标签的一定数量的信息(如作者,评论,依赖关系......)。
我还想附加标记存储库中的特定文件。为此,我一直在尝试“svn export”命令。这对于“模拟”标记很好,但是使用svn客户端(乌龟)不起作用。
svn export --username foo --password bar svn://localhost/My_SVN_DB/tags/My_Tag/My_File.txt My_Export_Directory
我检查了以下内容:
现在我想知道在执行post commit脚本时标签结构是否已经存在? (我以为是......?)
有什么想法吗?
答案 0 :(得分:0)
重定向标准输出&标准错误有助于找到问题:
svn export --username foo --password bar svn://localhost/My_SVN_DB/tags/My_Tag/My_File.txt My_Export_Directory > tmp.log 2>&1
问题来自导出前的一个声明。使用for / f循环提取数据库名称并覆盖临时循环变量(DBNAME)。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Extract the DB name
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setLocal EnableDelayedExpansion
for /f "tokens=4 delims=\" %%a in ("%REPOS%") do (set DBNAME=%%a)
echo !DBNAME!>%TMPFILE%
endlocal
REM Here is the problem
set /p DBNAME=<%TMPFILE%
通过将最后一个变量名修改为DBNAME2:
set /p DBNAME2=<%TMPFILE%
该脚本能够正常工作。
我仍然很不清楚为什么会发生这种情况,因为同样的技巧(对于/ f + overwrite)也用于预提交脚本,并且它可以正常工作。任何想法??