2011-12-14 14 views
21

¿Hay alguna biblioteca Javascript que permite leer y cometer archivos a un servidor Subversion ?Javascript SVN envoltorio

El servidor podría estar utilizando el protocolo svn:// o el protocolo http:// (dav_svn). Si uno es más conveniente, está bien, aunque una biblioteca que podría manejar ambos tipos es mejor.

Me gustaría evitar tener que crear una copia de trabajo local del repositorio (es que incluso es posible consultar un repositorio en Javascript: p ...).

Cualquiera ve una solución? He estado mirando alrededor pero no encontré nada.

+0

¿Qué tipo de JavaScript desea utilizar? JavaScript en un navegador o por ejemplo. node.js? – TimWolla

+0

Javascript en un navegador. Me gustaría hacer algún tipo de vista/edición rápida para un repositorio SVN (y sin depender de un servidor PHP/Java para hacer el trabajo). –

+0

En realidad tengo la misma pregunta, pero quería hacer DIFF de esta manera, proporcionando una forma de mostrar los cambios para una revisión determinada sin pasar por los comandos basados ​​en el servidor.Matthieu: ¿finalmente lo hiciste funcionar? ¿Eres capaz de hacer DIFF también? –

Respuesta

0

Puede escribir sus propios comandos Svn en un conjunto de archivos de comandos y luego ejecutarlos dentro de su secuencia de comandos.

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

Pero como sabes, esto no es seguro.

+0

Además de no ser seguro, también tiene dos inconvenientes: 1) tendrá problemas para ejecutarlo en todos los sistemas operativos (debe adaptar la línea de comandos para cada sistema operativo compatible, lo cual es un problema), Y 2) requiere que todos los usuarios tengan un cliente SVN de línea de comandos instalado y disponible en el PATH, lo que no siempre será el caso; supongo que no siempre verás esta página web desde tu máquina de desarrollo. –

3

El https://github.com/sara-nl/js-webdav-client no funcionó para mí

he usado jQuery para leer un archivo 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); 
            }, 
           }); 
          }, 
         }); 
        }, 
       }); 
      }, 
     }); 
    }, 
}); 

Si desea importar otros archivos XML que buscarlo aquí: http://api.jquery.com/jQuery.ajax/

En

data4/svnSpecs se puede encontrar cada palabra clave que se utiliza dentro de su xml - acaba de hacer lo mismo que con el xmlString

Con a = xmlString.find("Member"); se obtiene una matriz con todos los miembros del objeto denominado xml si lo hace a[0].textContent = "Harry"; se establece el contenido del primer objeto dentro de su xmlString a Harry -> sólo se puede hacer una drawTable() a refrescar la mesa después

EDIT: Dentro de la méthode drawTable() que tiene que hacer el a.find(""), var list = []; y list.push("html text for a table") y un $("#membertable").html(list); escribir Everthing en la tabla existente "membertable"

el hashBase es importante para cometer. no he terminado con el compromiso, pero casi. el código actual y el proceso ha terminado aquí: how to do SVN http-request checkin/commit within html

+0

Tenga en cuenta que este código es compatible con SVN versión 1.7+ – Inferpse

Cuestiones relacionadas