0

我在 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 并传递测试参数时起作用
  • My_Export_Directory 的访问权限 --> 似乎没问题,因为脚本还在那里写了一个调试文件

现在我想知道执行后提交脚本时标签结构是否已经存在?(我以为是..?)

有任何想法吗 ?

4

1 回答 1

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 循环提取 DB 名称并覆盖临时循环变量 ( 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 + 覆盖)并且它可以正常工作。有任何想法吗??

于 2010-10-12T13:47:13.550 回答