Оболочка Javascript SVN - PullRequest
       19

Оболочка Javascript SVN

22 голосов
/ 14 декабря 2011

Существует ли библиотека Javascript , которая позволяет читать и фиксировать файлы на сервере Subversion ?

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

Я бы не хотел создавать локальную рабочую копию хранилища (возможно ли даже извлечь хранилище в Javascript: p ...).

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

Ответы [ 4 ]

10 голосов
/ 22 декабря 2011

Я не знаю действительно готового решения, но, может быть, это: https://github.com/sara-nl/js-webdav-client может помочь. То есть WebDAV-клиент, написанный на JS, и с этим можно сделать проверку SVN.

В противном случае вам придется самостоятельно внедрять WebDAV. Вы можете найти спецификацию здесь: http://webdav.org/specs/

4 голосов
/ 22 июля 2014

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 если вы делаете a[0].textContent = "Harry";, вы устанавливаете содержимое первого объекта в вашей xmlString на Harry -> вы можете просто сделать drawTable() впоследствии, чтобы обновить таблицу

EDIT: В методе drawTable() вы должны выполнить a.find(""), var list = []; и list.push("html text for a table") и $("#membertable").html(list);, чтобы написать что-нибудь в существующей таблице "membertable"

hashBase важен для совершения. Я не закончил с коммитом, но почти. текущий код и процесс завершены здесь: как выполнить проверку / принятие http-запроса SVN в html

0 голосов
/ 03 апреля 2019

У меня тот же вопрос, и я только что нашел svnjs , который, кажется, именно это;Я сам не пробовал, но он утверждает, что поддерживает add, rm, propset, propdel, mkdir и commit.Не перемещать, копировать, блокировать или разблокировать.

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

0 голосов
/ 25 декабря 2011

Вы можете написать свои собственные команды 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" );

Но, как вы знаете, это небезопасно.

...