- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 svnant 1.3.0 从我的 SVN 存储库中的分支创建标签。现在我已经从 SVN 1.6 升级到 1.7,并且没有发布支持它的 svnant 二进制文件。但是我已经从 tigris.org 下载了 svnant 1.4 源代码并构建了一个 svnant.jar。
我知道 svnant 有一些依赖项,我有以下内容:svnkit 1.7.5(来自 svnant 存储库)、svnjavahl(来自 svnant 存储库)、svnClientAdapter(来自 svnant 存储库)、svnkit-cli(来自 svnant 存储库)、 trilead-ssh 1.0(来自 maven 存储库)和 ganymed-ssh.jar build 210(来自 maven 存储库)。
我使用 IVY 进行依赖管理,并将上述所有 jar(maven 存储库中的两个除外)添加到我的 Artifactory 安装中。在我的 IVY 依赖文件中,我像这样检索 jars:
<dependency org="svnant" name="svnant" rev="1.4.0" conf="test->default" />
<dependency org="svnkit" name="svnkit" rev="1.7.5" conf="test->default" />
<dependency org="svnjavahl" name="svnjavahl" rev="1.4.0" conf="test->default" />
<dependency org="svnClientAdapter" name="svnClientAdapter" rev="1.4.0" conf="test->default" />
<dependency org="svnkit-cli" name="svnkit-cli" rev="1.7.5"/>
<dependency org="trilead-ssh2" name="trilead-ssh2" rev="1.0.0" conf="test->default"/>
<dependency org="ch.ethz.ganymed" name="ganymed-ssh2" rev="build210" conf="test->default" />
所有 jar 都被正确检索。我尝试像这样进行 branch2tag 复制(retrieveIVY 目标检索上述 jar 文件):
<target name="create-tag" depends="retrieveIVY">
<taskdef classpathref="test.classpath.dep" resource="net/sf/antcontrib/antcontrib.properties" />
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="test.classpath.dep" />
<echo message="Creating tag ${env.tag_name}" />
<svnSetting username="${user}" password="${password}" client="svnkit" />
<svn>
<copy srcUrl="[srcUrl]" destUrl="[destUrl]" message="${env.tag_name}" />
</svn>
</target>
这适用于 svnant 1.3.0 和 SVN 1.6(除了 svnSetting 标签)。但是使用新的 jar 版本我得到以下错误:
The svn client 'svnkit' is not available !
at org.tigris.subversion.svnant.SvnClientType.checkAvailability(SvnClientType.java:122)
at org.tigris.subversion.svnant.SvnClientType.createClient(SvnClientType.java:93)
at org.tigris.subversion.svnant.SvnFacade.getClientAdapter(SvnFacade.java:362)
at org.tigris.subversion.svnant.SvnTask.executeImpl(SvnTask.java:597)
at org.tigris.subversion.svnant.SvnTask.execute(SvnTask.java:568)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:392)
at org.apache.tools.ant.Target.performTasks(Target.java:413)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424)
at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)
Caused by: org.tigris.subversion.svnclientadapter.SVNClientException: SVNKit client adapter is not available
at org.tigris.subversion.svnclientadapter.svnkit.SvnKitClientAdapterFactory.setup(SvnKitClientAdapterFactory.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.tigris.subversion.svnant.SvnClientType.invoke(SvnClientType.java:129)
at org.tigris.subversion.svnant.SvnClientType.checkAvailability(SvnClientType.java:112)
... 19 more
有人有办法解决这个问题吗?
最佳答案
我建议使用 svnkit直接使用 Java 类,而不是纠结于 svnant任务。这种方法与 macrodef 相结合,将产生类似但更可靠的解决方案。
<project name="build" default="checkout" xmlns:ivy="antlib:org.apache.ivy.ant">
<!--
======
Macros
======
-->
<macrodef name="svn-checkout">
<attribute name="src"/>
<attribute name="dest"/>
<sequential>
<mkdir dir="@{dest}"/>
<java classname="org.tmatesoft.svn.cli.SVN" dir="@{dest}" fork="true" classpathref="build.path">
<arg value="--non-interactive"/>
<arg line="--username ${svn.user}"/>
<arg line="--password ${svn.pass}"/>
<arg value="checkout"/>
<arg value="@{src}"/>
</java>
</sequential>
</macrodef>
<!--
=======
Targets
=======
-->
<target name="resolve" description="Resolve 3rd party dependencies">
<ivy:cachepath pathid="build.path">
<dependency org="org.tmatesoft.svnkit" name="svnkit-cli" rev="1.7.8" conf="default"/>
</ivy:cachepath>
</target>
<target name="checkout" depends="resolve" description="Pull code from SCM repository">
<svn-checkout src="http://svn.apache.org/repos/asf/subversion/trunk" dest="build/subversion"/>
</target>
<target name="clean" description="Cleanup build files">
<delete dir="build"/>
</target>
<target name="clean-all" depends="clean" description="Cleanup and purge ivy cache">
<ivy:cleancache/>
</target>
</project>
注意:
关于svn - svn 客户端 'svnkit' 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16305315/
我在我的应用程序中使用 svnkit-1.3.5.jar。在我的一个屏幕上,单击按钮时,我需要显示一个 jQuery 对话框,其中包含 SVN 中特定路径上存在的文件夹列表。 svnkit 是否提供任
我想实现一种方法,可以从已 check out SVN 存储库的路径中获取 svn 修订号。方法声明看起来像这样: long getRevisionNumber(String localPath) {
我正在使用 SVNKit API 编写 Java 程序,我需要在 API 中使用正确的类或调用,以便我能够找到存储在不同位置的文件之间的差异。 第一个文件: https://abc.edc.xyz.c
我正在开发一个应用程序,其主要目的是提供源代码控制管理。我的想法是使用 SVNKit 进行文件 checkout 和 checkin 。然而,在使用 SVNKit 时,我意识到它没有达到我想要的速度。
如何使用 svnkit 枚举根目录中的 svn 存储库? 最佳答案 我认为(我一年前使用 svn kit)你必须手动列出存储库路径旁边的所有目录: 因此,如果您的 repopath 是: /var/s
因此,我在 SVN 存储库下创建了一个项目 TEST,我想知道该项目目录是否与 SVNKit 库一起存在。协议(protocol)是http。 例如,我尝试过... private String
我正在编写一个工具,它将在提交到 svn 后将更改推送到数据库。 问题是如何检索特定修订的目录。 SVNClientImpl clientImpl = SVNClientImpl.newInstanc
我正在尝试通过 SVNKit 使用不同的线程并行连接到许多 SVN 存储库。 看网上的一些代码示例,好像在使用SVNKit之前我必须使用静态方法初始化它 DAVRepositoryFactory.se
我几乎使用 SVNKit API。 我创建了我的客户端,但我找不到一种方法来显示可以提交的文件。在某些客户端(例如 Tortoise)中,我们有更改对话框,其中包含已修改的文件列表。我们可以选择要“提
我想使用 SvnKit 获取两个修订版之间的差异。我查看了文档,在 SVNRepository 中找到了这个方法类,但它仅检查本地副本和远程副本之间的差异。 diff(SVNURL url, long
我正在尝试使用 SVNKit 做一个简单的操作:svn diff url {date1}:{date2}。 我不知道如何在 SVNKit 上使用它。有谁知道如何做到这一点? 最佳答案 SVNKit 的
使用 SVNKit 库编写 Java 应用程序时遇到以下问题 _1。提交 客户应该提交可能已过时的工作副本 提交后,存储库必须包含与提交前工作副本完全相同的内容,即使工作副本已过时 如果工作副本已过时
有谁知道一个好的 Java Subversion 库?我会使用 SVNKit,但只有当您使用的代码是开源的时,它才是开源的。 最佳答案 SvnClientAdapter是一个高级 Java 颠覆库,它
我使用 SVNKit 库开发了一个 Java 程序,该程序负责在版本控制下更新或提交目录。目录内容可以由我无法控制的另一个程序更改,该程序可以添加、删除或编辑文件,而忽略设置颠覆信息。 问题是 «我的
我正在使用 SVNKit 1.3.2 并尝试获取工作副本修订号。 工作副本也使用 SVNKit checkout ,但是当我尝试调用时 clientManager.getLookClient().do
我正在使用 SVN 工具包从 SVN 存储库收集一些指标。我被这个简单的问题困住了,无法解决它。 我有一个 SVNRepository 对象,它为我提供了存储库中所有文件及其不同版本的路径。我想为每个
我正在尝试使用 SVNKit 获取 Coldfusion 中 SVN 条目的日志。我下载了最新的SVNKit jar文件并将它们放在WEB-INF/lib下的lib文件夹中。 这是我的代码,应该返回日
尝试安装 Subversive,但对 Subversive Connectors 的概念以及如何安装它们感到窒息。 (1) 什么是 Subversive 连接器? 我唯一的猜测是它们有助于将 Subv
我正在使用 SVNKit 1.7,我想获取两个日期之间条目的历史日志。我找到的所有文档仅显示检索两个修订号之间的条目。 我基本上想运行以下命令 svn log -v --xml --non-inter
我需要从特定文件夹的 SVNRepository 获取日志。 例如 - 我有 SVNURL url = SVNURL.parseURIEncoded("https://subversion.assem
我是一名优秀的程序员,十分优秀!