2011-12-14 36 views
21

是否有任何Javascript库,使以阅读提交文件到Subversion服务器的Javascript SVN包装

服务器可能使用svn://协议或http://(dav_svn)协议。如果更方便的话可以,但是可以处理这两种类型的库更好。

我想避免创建存储库的本地工作副本(甚至可能签出使用Javascript的存储库:p ...)。

任何人都看到一个解决方案?我一直在环顾四周,但没有找到任何东西。

+0

您想使用哪种类型的JavaScript?浏览器中的JavaScript或者例如。 Node.js的? – TimWolla 2011-12-21 20:01:31

+0

在浏览器中的Javascript。我想为SVN存储库做一些快速查看/编辑(并且不需要依靠PHP/Java服务器来完成这项工作)。 – 2011-12-21 22:39:17

+0

我实际上有同样的问题,但我想这样做DIFF - 提供一种方法来显示给定修订的更改,而无需通过基于服务器的命令。Matthieu - 你最终得到它的工作?你也可以做DIFF吗? – 2012-07-16 08:21:28

回答

0

你可以在一组命令文件中编写自己的Svn命令,然后在脚本中运行它们。

/* Create WSH Shell */ 
oShell = WScript.CreateObject("WScript.Shell"); 

/* Launch svn.exe with other orguments */ 
oShell.Run("svn.exe svn://192.168.40.41 Param1 param2"); 

/* Let the user know that we are done   */ 
WScript.Echo("Done"); 

但是如你所知,这是不安全的。

3

https://github.com/sara-nl/js-webdav-client没有为我工作

我用jQuery来读取XML文件:

var URL = window.location.href; 
var baseURL = URL.substring(0, URL.lastIndexOf('/')); 
$.ajax({ 
    type: "OPTIONS", 
    url: baseURL, 
    contentType: "text/xml", //for other files look up the api link below 
    headers: {Depth: "0"}, 
    data: '<?xml version="1.0" encoding="utf-8" ?><D:options xmlns:D="DAV:"><D:activity-collection-set></D:activity-collection-set></D:options>', 
    success: function(data1, status, jqxhr){ 
     latestRev = jqxhr.getResponseHeader('SVN-Youngest-Rev'); 
     $.ajax({ 
      type: "PROPFIND", 
      url: baseURL + '/!svn/rvr/' + latestRev, 
      contentType: "text/xml", 
      headers: {Depth: "0"}, 
      data: '<?xml version="1.0" encoding="utf-8" ?><propfind xmlns="DAV:"><prop><resourcetype xmlns="DAV:"/></prop></propfind>', 
      success: function(data2, status, jqxhr){ 
       $.ajax({ 
        type: "OPTIONS", 
        url: baseURL, 
        contentType: "text/xml", 
        headers: {Depth: "0"}, 
        data: '<?xml version="1.0" encoding="utf-8" ?><D:options xmlns:D="DAV:"><D:activity-collection-set></D:activity-collection-set></D:options>', 
        success: function(data3, status, jqxhr){ 
         $.ajax({ 
          type: "REPORT", 
          url: baseURL + "/!svn/me", 
          contentType: "text/xml", 
          data: '<S:update-report xmlns:S="svn:"><S:include-props>yes</S:include-props><S:src-path>/svn/check</S:src-path><S:target-revision>' + latestRev + '</S:target-revision><S:depth>unknown</S:depth><S:entry depth="infinity" rev="' + latestRev + '"></S:entry></S:update-report>', 
          success: function(data4,status,jqxhr){ 
           svnSpecs = data4; 
           $.ajax({ 
            type: "GET", 
            url: '/svn/check/!svn/rvr/' + latestRev + '/KickOff.xml', 
            converters: {"text xml": function(obj) { 
             hashBase = calcMD5(obj); 
             return obj; 
            }}, 
            cache: false, 
            async: false, 
            success: function(data5, status, jqxhr){ 
             hashdata5 = calcMD5(data5); 
             xmlString = $($.parseXML(data5)); 
             drawTable(xmlString); 
            }, 
           }); 
          }, 
         }); 
        }, 
       }); 
      }, 
     }); 
    }, 
}); 

如果要导入其他文件比XML这里看看它:http://api.jquery.com/jQuery.ajax/

data4/svnSpecs中,您可以找到您在xml中使用的每个关键字 - 只需使用与xmlString相同的关键字

随着a = xmlString.find("Member");你的XML 的每一个命名对象成员的数组,如果你这样做​​您设置的xmlString哈利内的第一个对象的内容 - >你可以做一个drawTable()后刷新表

编辑:drawTable()梅索德你必须做的a.find("")var list = [];list.push("html text for a table")$("#membertable").html(list);写寄托都在现有表“membertable”

hashBase是commiting重要。 我没有完成提交但接近。 当前代码和过程结束于:how to do SVN http-request checkin/commit within html