是否有任何Javascript 库可以读取文件并将其提交到Subversion 服务器?
服务器可能正在使用svn://
协议或http://
(dav_svn) 协议。如果一个更方便,那没关系,尽管可以处理这两种类型的库更好。
我想避免创建存储库的本地工作副本(甚至可以在 Javascript 中签出存储库:p ...)。
有人看到解决方案吗?我一直在四处寻找,但没有找到任何东西。
是否有任何Javascript 库可以读取文件并将其提交到Subversion 服务器?
服务器可能正在使用svn://
协议或http://
(dav_svn) 协议。如果一个更方便,那没关系,尽管可以处理这两种类型的库更好。
我想避免创建存储库的本地工作副本(甚至可以在 Javascript 中签出存储库:p ...)。
有人看到解决方案吗?我一直在四处寻找,但没有找到任何东西。
我不知道一个真正现成的解决方案,但也许这个:https ://github.com/sara-nl/js-webdav-client可以提供帮助。那是一个用 JS 编写的 WebDAV 客户端,这样它也应该可以检查 SVN。
否则你将不得不自己实现 WebDAV。您可以在此处找到规范:http ://webdav.org/specs/
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");
如果您将xmlString中第一个对象的内容设置为Harry,您将获得一个包含每个名为xml成员的对象的数组- a[0].textContent = "Harry";
>您可以drawTable()
稍后再刷新您的表格
编辑:
在方法中,drawTable()
您必须在现有表“membertable”中执行a.find("")
var list = [];
list.push("html text for a table")
$("#membertable").html(list);
这hashBase
对于承诺很重要。我还没有完成提交,但几乎完成了。当前代码和流程在这里:如何在 html 中执行 SVN http-request checkin/commit
您可以在一组命令文件中编写自己的 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" );
但如您所知,这并不安全。
我有同样的问题,我刚刚发现svnjs似乎正是这个;我自己没有尝试过,但它声称支持 add、rm、propset、propdel、mkdir 和 commit。没有移动、复制、锁定或解锁。
它看起来也像是四年前最后一次触摸它,因为它的价值。