Подтвердить что ты не робот

Javascript SVN-обертка

Есть ли библиотека JavaScript, которая позволяет читать и фиксировать файлы на сервере Subversion?? p >

Сервер может использовать протокол svn:// или протокол http:// (dav_svn). Если удобнее это нормально, хотя библиотека, которая может обрабатывать оба типа, лучше.

Мне бы хотелось избежать создания локальной рабочей копии репозитория (это даже возможность проверить репозиторий в Javascript: p...).

Кто-нибудь видит решение? Я искал вокруг, но ничего не нашел.

4b9b3361

Ответ 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. Нет перемещения, копирования, блокировки или разблокировки.

Похоже, что в последний раз его трогали четыре года назад.