2010-10-11 39 views
0

我在Windows环境中设置了一个SVN服务器: 无论何时制作标签,提交后脚本都会导出一定数量的关于标签的信息(如作者,评论,依赖项......)。从提交后svn导出不适用于窗口?

我也想附加标记存储库中的特定文件。为此,我一直在尝试“svn export”命令。这个工作对于“模拟”标签很好,但不能使用svn客户端(乌龟)。

svn export --username foo --password bar svn://localhost/My_SVN_DB/tags/My_Tag/My_File.txt My_Export_Directory 

我检查以下内容:

  • 该命令的语法 - >似乎是确定,调用后提交,并通过测试参数为My_Export_Directory
  • 访问权限时,它的工作原理 - >看起来没问题,因为脚本还写了一个调试文件

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

任何想法?

回答

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%

脚本是能正常工作。

我仍然不清楚为什么会发生这种情况,因为在pre-commit脚本中也使用了相同的技巧(for/f + overwrite),并且它的工作正常。有任何想法吗??