Svn 颠覆与蚂蚁集成

Svn 颠覆与蚂蚁集成,svn,version-control,ant,Svn,Version Control,Ant,我正在运行以下方案:Ant生成java代码,并使用soscmdAPI/utility从SourceSafe系统检索源代码。我知道它们是紧密结合在一起的。我使用的Ant版本是1.6。所以这个版本不支持Subversion。我的subversion服务器作为服务在远程机器上运行,我希望Ant能够使用subversion检索源代码。我该怎么做呢?使用这里提供的SvnAnt任务-使用这里提供的SvnAnt任务-一旦你得到了SvnAnt的东西,这些细节可能会帮助你完成剩下的工作 我通常会从提取液中取出以下

我正在运行以下方案:Ant生成java代码,并使用soscmdAPI/utility从SourceSafe系统检索源代码。我知道它们是紧密结合在一起的。我使用的Ant版本是1.6。所以这个版本不支持Subversion。我的subversion服务器作为服务在远程机器上运行,我希望Ant能够使用subversion检索源代码。我该怎么做呢?

使用这里提供的SvnAnt任务-

使用这里提供的SvnAnt任务-

一旦你得到了SvnAnt的东西,这些细节可能会帮助你完成剩下的工作

我通常会从提取液中取出以下罐子:

  • svnant.jar
  • svnClientAdapter.jar
  • svnjavahl.jar
  • 并将它们添加到我的项目中的一个文件夹中,该文件夹不会部署(即,它们只是供构建使用,而不是供运行时使用)

    然后在我的ANT脚本中添加:

    <path id="svntask.classpath">
        <fileset dir="nonruntime_lib/svn">
            <include name="*.jar"/>
        </fileset>
    </path>
    
    
    
    然后:

    <!-- SVN typedef -->
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" 
        classpathref="svntask.classpath"/>
    
    
    
    这样我就可以添加任务调用,比如:

    <!-- svn export the web root & java -->
    <svn>
        <export srcUrl="http://your.svn/web" destPath="dist/web"/>
        <export srcUrl="http://your.svn/src" destPath="tmp/src"/>
    </svn>
    
    
    
    不确定你是否需要所有这些罐子,但“它们对我有用。”祝你好运,请随时发回其他问题/场景

    编辑

    我不确定这是否适用于Subversion 1.7(我正在运行1.6)


    好的,这只是部分解决方案。出于某种原因,我需要确保除上述注释外,还安装了SilkSVN。我不知道这是为什么。不幸的是,我现在没有时间调查。

    一旦你得到了svnant的资料,这些细节可能会帮助你完成剩下的工作

    我通常会从提取液中取出以下罐子:

  • svnant.jar
  • svnClientAdapter.jar
  • svnjavahl.jar
  • 并将它们添加到我的项目中的一个文件夹中,该文件夹不会部署(即,它们只是供构建使用,而不是供运行时使用)

    然后在我的ANT脚本中添加:

    <path id="svntask.classpath">
        <fileset dir="nonruntime_lib/svn">
            <include name="*.jar"/>
        </fileset>
    </path>
    
    
    
    然后:

    <!-- SVN typedef -->
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" 
        classpathref="svntask.classpath"/>
    
    
    
    这样我就可以添加任务调用,比如:

    <!-- svn export the web root & java -->
    <svn>
        <export srcUrl="http://your.svn/web" destPath="dist/web"/>
        <export srcUrl="http://your.svn/src" destPath="tmp/src"/>
    </svn>
    
    
    
    不确定你是否需要所有这些罐子,但“它们对我有用。”祝你好运,请随时发回其他问题/场景

    编辑

    我不确定这是否适用于Subversion 1.7(我正在运行1.6)


    好的,这只是部分解决方案。出于某种原因,我需要确保除上述注释外,还安装了SilkSVN。我不知道这是为什么。不幸的是,我现在没有时间调查。

    正如下面两个答案所提到的,您可以使用SvnAnt;我建议将SvnKit指定为SvnAnt任务的svn客户端

    SvnKit是一个纯java svn客户端,流行的gui svn客户端SmartSVN使用该操作系统作为基础。因此,如果您想编写自己的任务,或者只是使用beanshell集成,您应该尝试svnkit。它也适用于Windows、Linux、Mac OS。。。只要你有它的JRE

    附言

    我曾经是一个SvnAnt用户,但现在我使用自己的代码调用本机svn客户端,因为我只需要使用“svn info”和“svn update”

    我使用exec调用本机Linux svn客户端来更新主干:

    <exec executable="svn" dir="${trunk.dir}" failonerror="true">
        <arg line="update -r ${to.rev} --username ${trunk.user} --password ${trunk.passwd} --depth infinity" />
    </exec>
    
    
    
    我使用process builder调用“svn info”并从输出中获取实际修订号(一个自定义ant任务):

    //ant任务的java代码
    public void execute()引发BuildException{
    //忽略可变验证代码。。。。。。
    ProcessBuilder pb=新的ProcessBuilder(“svn”、“信息”);
    //本机“svn”客户端不支持符号链接,因此在目录中运行它,而不是将目录指定为svn info的参数。
    pb.目录(_dirToTrunk);
    //确保输出为英语。
    Map env=pb.environment();
    环境put(“语言”,“en_US.UTF-8:en”);
    进程p=null;
    试试{
    p=pb.start();
    //然后获取输出并解析svn修订号。
    }
    //捕获码被忽略
    }
    

    希望这会有所帮助。

    正如下面两个答案所提到的,您可以使用SvnAnt;我建议将SvnKit指定为SvnAnt任务的svn客户端

    SvnKit是一个纯java svn客户端,流行的gui svn客户端SmartSVN使用该操作系统作为基础。因此,如果您想编写自己的任务,或者只是使用beanshell集成,您应该尝试svnkit。它也适用于Windows、Linux、Mac OS。。。只要你有它的JRE

    附言

    我曾经是一个SvnAnt用户,但现在我使用自己的代码调用本机svn客户端,因为我只需要使用“svn info”和“svn update”

    我使用exec调用本机Linux svn客户端来更新主干:

    <exec executable="svn" dir="${trunk.dir}" failonerror="true">
        <arg line="update -r ${to.rev} --username ${trunk.user} --password ${trunk.passwd} --depth infinity" />
    </exec>
    
    
    
    我使用process builder调用“svn info”并从输出中获取实际修订号(一个自定义ant任务):

    //ant任务的java代码
    public void execute()引发BuildException{
    //忽略可变验证代码。。。。。。
    ProcessBuilder pb=新的ProcessBuilder(“svn”、“信息”);
    //本机“svn”客户端不支持符号链接,因此在目录中运行它,而不是将目录指定为svn info的参数。
    pb.目录(_dirToTrunk);
    //确保输出为英语。
    Map env=pb.environment();
    环境put(“语言”,“en_US.UTF-8:en”);
    进程p=null;
    试试{
    p=pb.start();
    //然后获取输出并解析svn修订号。
    }
    //捕获码被忽略
    }
    

    希望这会有所帮助。

    这与Subversion 1.7版本兼容吗?而SvnAnt的一个问题是。。。如果使用本机客户端,它将不支持符号链接,因为本机客户端不支持符号链接。这是否与Subversion 1.7版本兼容?而SvnAnt的一个问题是。。。如果使用本机客户端,它将不支持符号链接,bec