Javascript SVN-обертка
Есть ли библиотека JavaScript, которая позволяет читать и фиксировать файлы на сервере Subversion?? p >
Сервер может использовать протокол svn://
или протокол http://
(dav_svn). Если удобнее это нормально, хотя библиотека, которая может обрабатывать оба типа, лучше.
Мне бы хотелось избежать создания локальной рабочей копии репозитория (это даже возможность проверить репозиторий в Javascript: p...).
Кто-нибудь видит решение? Я искал вокруг, но ничего не нашел.
Ответы
Ответ 1
Я не знаю действительно готового решения, но возможно это: https://github.com/sara-nl/js-webdav-client может помочь. Это WebDAV-клиент, написанный в JS, и с этим должно быть возможно проверить SVN.
В противном случае вам придется самостоятельно реализовать WebDAV. Вы можете найти здесь спецификацию: http://webdav.org/specs/
Ответ 2
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");
вы получаете массив с каждым объектом с именем member xml
если вы делаете a[0].textContent = "Harry";
, вы устанавливаете содержимое первого объекта в своей xmlString для Гарри → вы можете просто сделать drawTable()
после этого, чтобы обновить таблицу
EDIT:
В методе drawTable()
вам нужно сделать a.find("")
, var list = [];
и list.push("html text for a table")
и $("#membertable").html(list);
, чтобы писать все в существующей таблице "membertable"
hashBase
важно для совершения.
Я не закончил с фиксацией, но почти.
текущий код и процесс здесь: как выполнить SVN-проверку/фиксацию HTTP-запроса в html
Ответ 3
Вы можете написать свои собственные команды Svn в наборе командных файлов, а затем запустить их внутри своего script.
/* 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" );
Но, как вы знаете, это небезопасно.
Ответ 4
У меня тот же вопрос, и я только что нашел svnjs, который, кажется, именно это; Я сам не пробовал, но он утверждает, что поддерживает add, rm, propset, propdel, mkdir и commit. Нет перемещения, копирования, блокировки или разблокировки.
Похоже, что в последний раз его трогали четыре года назад.