如何在html中完成SVN的http-request签入/提交
how to do SVN http-request checkin/commit within html
我有一个问题
我想使用一个网站做签入和结帐在我的SVN服务器上。我已经得到了一切的点,我可以做一个结帐使用jQuery。我剩下的问题是合并过程的处理。在MERGE中,svn发送一个分块响应。但我的主机只是报告错误的请求。wireshark告诉我传输编码是分块的。但我不能把它设置成块。如果我将contentType设置为chunked,则正文将被分块,而不是传输编码。jquery.ajax()不提供传输编码之类的功能。试图把它放在标题没有工作,以及…它甚至没有显示标题
my checkin code:
$.ajax({
type: "OPTIONS",
url: baseURL,
contentType: "text/xml",
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){
$.ajax({
type: "POST",
url: baseURL + "/!svn/me",
contentType: "application/vnd.svn-skel",
data: "(create-txn-with-props (svn:txn-user-agent 40 SVN/1.8.9(i686-pc-linux-gnu) serf/1.3.4 svn:log function svn:txn-client-compat-version 5 1.8.9))",
success: function(data2, status, jqxhr){
rev = jqxhr.getResponseHeader('SVN-Txn-Name');
newdata = new XMLSerializer().serializeToString(xmlString["context"]);
hashResult = calcMD5(newdata);
$.ajax({
type: "PUT",
url: baseURL + "/!svn/txr/" + rev + file + ".xml",
headers: {"X-SVN-Version-Name": latestRev, "X-SVN-Base-Fulltext-MD5":hashBase, "X-SVN-Result-Fulltext-MD5": hashResult},
contentType: "text/xml",
data: newdata,
success: function(data3, status, jqxhr){
chunked1 = '<?xml version="1.0" encoding="utf-8"?><D:merge xmlns:D="DAV:"><D:source><D:href>/svn/check/!svn/txn/' + rev + '</D:href></D:source><D:no-auto-merge></D:no-auto-merge><D:no-checkout></D:no-checkout><D:prop><D:checked-in></D:checked-in><D:version-name></D:version-name><D:resourcetype></D:resourcetype><D:creationdate></D:creationdate><D:creator-displayname>';
chunked2 = '</D:creator-displayname></D:prop></D:merge>';
length1 = chunked1.length;
length2 = chunked2.length;
$.ajax({
type: "MERGE",
url: baseURL,
headers: {"X-SVN-Options": "release-locks"},
contentType: "text/xml",
data: length1 + chunked1 + length2 + chunked2,
success: function(data4, status, jqxhr){
alert('file submitted');
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' at MERGE 'n' + textStatus);
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' at PUT'n' + textStatus);
$.ajax({
type: "DELETE",
url: baseURL + "/!svn/txn/" + rev,
success: function(data3, status, jqxhr){
alert('file deleted');
}
});
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' at POST'n' + textStatus);
}
});
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' at OPTIONS'n' + textStatus);
}
});
编辑:更正了我代码中的一些错误将问题焦点从PUT更改为MERGE,因为我发现了问题问题是我在"x - svn - version - name"范围内传输。不只是数字,而是"数字",因此错误"File is out of Date"
设置contentType: "text/xml"
和data: chunked1 + chunked2
一切正常,SVN接受文件
相关文章:
- 使用jQuery签入文本
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- Angular JS $http request?
- 如果日期是星期一,如何在javascript中签入
- JavaScript 中的 http request in while 循环
- Angular Js Curl -d http request
- 根据签入的表单,在html电子邮件模板中将复选框标记为true
- 将单选按钮设置为签入jquery,而不将其显示为签入视图
- 使用导航键翻页会显示:已签入输入
- 将Http请求放入js中
- 如何在js中签入用户已选中Google验证码中的复选框
- 字符串可用签入循环
- 如何使用 javascript for http request 使用 .com url.
- 无法从响应的结束事件中对 Http.Request 进行递归调用
- 如何在 NodeJS 中传递响应参数,包括来自 POST http.request 的正文
- 将缓存页签入集成到索引文件中
- RxJS + Node.js Http Request
- 在表单中签入的强制单选按钮不起作用
- 使用 http.request 会生成错误
- 如何在html中完成SVN的http-request签入/提交