0

我有一个具有以下设置的 ant build.xml 文件:

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml"
 classpathref="svnant.classpath"/>

<svnSetting id="svn.settings" username="${svn.username}" password="${svn.pw}" 
javahl="false" svnkit="true" failonerror="true"/>

<target name="commit">
   <svn refid="svn.settings">
        <commit file="${webcontent}/version.properties"
            message="commit version from build.xml by ${user.name}"
        />
    </svn>

</target>

运行 ant 构建会生成以下输出:

[svn] Using svnkit
[svn] <Commit> started ...
[svn] commit -m "commit version from build.xml by username" -N C:/path/to/WebContent/version.properties

但它永远不会结束。只是挂在那个声明上。我最终不得不终止构建并清理 svn 目录,因为 WebContent 目录被 SvnKit 设置为锁定

客户端存储库是 svn 版本 1.6,我使用的是 svnant 版本 1.3.1 Ant 版本是 1.7.1

这有什么关系?

为什么它从不抛出错误或停止?

SvnKit 是否只有 SVN 版本 1.7+?

编辑:

所以我又搞砸了一点。如果我运行构建并且文件没有任何更改,则构建继续

 [svn] <Commit> finished.

但是,如果我对文件进行任何编辑并运行构建,它就会挂起。

我错过了什么?

4

1 回答 1

1

感谢@ChadNouis,我终于发现我在加载它们的属性文件之前设置了我的 svn 用户名和 pw。

它挂起是因为存储库需要用户名/密码,但没有提供。

似乎服务器会拒绝或客户端会意识到已经超时,但这就是问题所在。

有问题的配置:

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml"
 classpathref="svnant.classpath"/>

<!-- create svnSetting from properties...that don't exist yet -->
<svnSetting id="svn.settings" username="${svn.username}" password="${svn.pw}" 
javahl="false" svnkit="true" failonerror="true"/>

<!-- properties file loaded after svnSetting created...d'oh -->
<property file="svn-credentials.properties"/>

<target name="commit">
   <svn refid="svn.settings">
        <commit file="${webcontent}/version.properties"
            message="commit version from build.xml by ${user.name}"
        />
    </svn>

</target>
于 2013-04-05T16:46:35.320 回答