2011-12-14 12 views
21

Czy istnieje Javascript Biblioteka który umożliwia czytać i popełnić plików na serwerze Subversion?JavaScript SVN wrapper

Serwer może korzystać z protokołu svn:// lub protokołu http:// (dav_svn). Jeśli jest wygodniej, to jest w porządku, chociaż lepiej radzi sobie biblioteka obsługująca oba typy.

Chciałbym uniknąć konieczności tworzenia lokalnej kopii roboczej repozytorium (jest to nawet możliwe do kasowania repozytorium w JavaScript: p ...).

Ktoś widzi rozwiązanie? Rozglądałem się, ale niczego nie znalazłem.

+0

Jaki typ JavaScriptu chcesz użyć? JavaScript w przeglądarce lub np. node.js? – TimWolla

+0

Javascript w przeglądarce. Chciałbym zrobić szybki podgląd/edytować dla repozytorium SVN (i bez polegania na serwerze PHP/Java do wykonywania pracy). –

+0

Mam właściwie to samo pytanie, ale chciałem zrobić DIFF w ten sposób - zapewniając sposób na pokazanie zmian dla danej wersji bez przechodzenia przez polecenia oparte na serwerze.Matthieu - czy w końcu udało ci się to uruchomić? Czy jesteś w stanie zrobić również DIFF-y? –

Odpowiedz

0

Możesz napisać własne polecenia Svn w zbiorze plików poleceń, a następnie uruchomić je w swoim skrypcie.

/* 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"); 

Ale jak wiadomo, nie jest to bezpieczne.

+0

Oprócz tego, że nie jest bezpieczny, ma również dwie wady: 1) będziesz mieć problem z uruchomieniem go we wszystkich systemach operacyjnych (musisz dostosować wiersz poleceń dla każdego obsługiwanego systemu operacyjnego, co jest uciążliwe), ORAZ 2) wymaga, aby wszyscy użytkownicy mieli zainstalowanego klienta wiersza poleceń SVN i dostępnego w PATH, co nie zawsze ma miejsce - nie zawsze, jak sądzę, nie zawsze patrzysz na tę stronę z komputera. –

3

https://github.com/sara-nl/js-webdav-client nie działa mi

użyłem jQuery odczytać plik 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); 
            }, 
           }); 
          }, 
         }); 
        }, 
       }); 
      }, 
     }); 
    }, 
}); 

Jeśli chcesz importować inne pliki niż xml szukać go tutaj: http://api.jquery.com/jQuery.ajax/

W data4/svnSpecs możesz znaleźć każde słowo kluczowe użyte w twoim xml - po prostu wykonaj to samo, co przy pomocy xmlString

Z a = xmlString.find("Member"); masz tablicę z każdego obiektu o nazwie członek xml jeśli nie a[0].textContent = "Harry"; ustawić zawartość pierwszego obiektu w swoim xmlString do Harry'ego -> można po prostu zrobić drawTable() potem odświeżyć tabelę

EDIT: w drawTable() Methode trzeba zrobić a.find(""), var list = []; i list.push("html text for a table") i $("#membertable").html(list); napisać everthing w istniejącej tabeli „membertable”

hashBase jest ważne dla popełnienia. Nie skończyłem z zatwierdzeniem, ale prawie. obecny kod i proces jest już zakończony: how to do SVN http-request checkin/commit within html

+0

Należy pamiętać, że ten kod jest zgodny z wersją SVN 1.7+ – Inferpse