23

Subversionサーバーへのファイルの読み取りコミットを可能にするJavascriptライブラリはありますか?

サーバーは、svn://プロトコルまたはhttp://(dav_svn)プロトコルを使用している可能性があります。どちらかが便利な場合は問題ありませんが、両方のタイプを処理できるライブラリの方が優れています。

リポジトリのローカル作業コピーを作成する必要はありません(Javascript:p ...でリポジトリをチェックアウトすることも可能です)。

誰かが解決策を見ますか?周りを見回しましたが、何も見つかりませんでした。

4

4 に答える 4

10

私は本当に準備ができている解決策を知りませんが、多分これ:https ://github.com/sara-nl/js-webdav-clientが役立つかもしれません。これはJSで記述されたWebDAVクライアントであり、これを使用してSVNのチェックアウトも可能になるはずです。

それ以外の場合は、WebDAVを自分で実装する必要があります。仕様はここにあります:http ://webdav.org/specs/

于 2011-12-22T13:06:17.023 に答える
4

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/svnSpecsxml内で使用したすべてのキーワードを見つけることができます-xmlStringの場合と同じようにします

xmlString内の最初のオブジェクトのコンテンツをHarryに設定するa = xmlString.find("Member");と、xmlのmemberという名前のすべてのオブジェクトを含む配列が取得されます->後でテーブルを更新するだけで済みますa[0].textContent = "Harry";drawTable()

編集: methode 内で、既存のテーブル「membertable」にすべてを書き込むために、、およびを実行drawTable()する必要がありますa.find("")var list = [];list.push("html text for a table")$("#membertable").html(list);

コミットするhashBaseために重要です。コミットは完了していませんが、ほぼ完了しています。現在のコードとプロセスはここにあります:SVNを実行する方法http-html内でチェックイン/コミットを要求する

于 2014-07-22T08:31:41.283 に答える
0

一連のコマンドファイルに独自の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" );

しかし、ご存知のように、これは安全ではありません。

于 2011-12-25T15:02:25.723 に答える
0

同じ質問がありますが、まさにこれと思われるsvnjsを見つけました。自分で試したことはありませんが、add、rm、propset、propdel、mkdir、commitをサポートしているとのことです。移動、コピー、ロック、ロック解除はできません。

それはまた、それが価値があるものとして、4年前に最後に触れられたように見えます。

于 2019-04-02T22:13:14.357 に答える