2011-05-11 13 views
17

Mi equipo está desarrollando una nueva aplicación (C#, .Net 4) que involucra un repositorio para contenido de usuarios compartidos. Necesitamos decidir dónde almacenarlo. Los requisitos son los siguientes:Almacenamiento basado en SQL vs SVN

  1. Comparte archivos entre los usuarios.
  2. Versiones de soporte.
  3. Habilita la búsqueda por etiquetas y admite otras consultas como "todos los archivos creados por personas del grupo X"
  4. Diferentes vistas para diferentes personas (el equipo X ve su propio contenido y nadie más puede ver el suyo).

No estoy seguro de lo que es mejor, por lo que:

  • se puede buscar en más de SVN usando etiquetas (no etiquetas SVN, por supuesto, más como etiquetas de stackoverflow)?
  • ¿Tiene algún sentido pensar en la duplicación, tanto SVN como SQL, del contenido?
  • ¿Alguna otra sugerencia?

Editar
La aplicación permite a los usuarios escribir pruebas de validación que luego se ejecutan. Esas pruebas se comparten entre muchos grupos en diferentes sitios. Necesitamos versiones por las razones habituales: deshacer cambios, eliminaciones repentinas, etc. Esto requiere SVN.
La cuestión es que también queremos agregar la opción para buscar todas las pruebas que están etiquetadas como "urgentes" y que se han ejecutado hasta ahora, con fines de seguimiento.

espero que me he hecho más claro ahora :)

Editar II
me encontré con SvnQuery y se ve bien, pero ¿tiene una API que pueda usar? Prefiero usar su mecanismo con mi propia GUI.

EDITAR III
Mi colega apoya firmemente utilizando sólo una base de datos y olvidarse de almacenamiento basado en archivos. Afirma que es mejor para la persistencia (lo que se necesita, una prueba es más que la lista de comandos para ejecutar). Agradecería sugerencias sobre este tema, ya que creo que debería ser posible hacerlo de esta manera o de la otra.

Gracias!

+0

Nunca había considerado usar svn como repositorio de documentos para una aplicación, pero la idea es intrigante. –

+0

¿Cuáles son los requisitos de rendimiento y cuál es el tamaño esperado del archivo? – rerun

+0

¿Es SharePoint una opción? – Brian

Respuesta

2

Podría usar SVN.

  1. Archivos compartidos: obvio y fácil. También es compatible con el bloqueo centralizado que podría necesitar para los archivos binarios.
  2. Versiones. Obviamente.
  3. Buscar ... Ahora nos estamos adentrando en un territorio difícil. Hay un complemento Lucene que permite la búsqueda en la web de su repositorio, svnquery o svn-search. Estos serían sus mejores puntos de partida para eso.
  4. No hay forma de evitar que las personas vean lo que está presente en un repositorio svn, pero puede evitar que accedan a él. No sé si el control de acceso podría extenderse fácilmente para proporcionar carpetas ocultas, podrías preguntarle a los desarrolladores de svn.

Hay algunas API geniales para trabajar con SVN, probablemente la más accesible es SharpSVN que le da un ensamblaje .net, pero está Python y C y todo tipo disponible.

Como se ha mencionado, existen herramientas web que se sientan en la parte superior de SVN para proporcionar una vista en él, hay Trac y Redmine y varios reposesionan espectadores como WebSVN, así que hay un montón de código de ejemplo para utilizar para cocinar su propia .


¿Usaría un DVCS como Git o Mercurial? No lo haré. Aunque estos tienen buenos mecanismos en sí mismos, no parece que sean lo que buscas. Estos permiten que las personas trabajen por su cuenta y compartan con otros de igual a igual (aunque puede establecer un repositorio "central" y trabajar con eso como un igual de todos). No funcionan de una manera centralizada y compartida. Por ejemplo, si usted y yo editamos un caso de prueba localmente y luego lo enviamos al repositorio central, es posible que tengamos problemas al fusionarnos. Tendremos problemas para fusionarnos si el archivo es un archivo binario o no perteneciente a otra. En este caso, tienes un problema con perder los cambios de una persona. Esa es una razón principal para no usar un DVCS en su caso.


Si usted está tratando de obtener pruebas compartido juntos, ¿Has mirado en algunas aplicaciones que ya lo hacen. Me di cuenta TestRail recientemente que suena como lo que estás tratando de hacer. No es gratis (¡ay!) Pero es barato.

3

En primer lugar, considere usar GIT en lugar de SVN. Es mucho más rápido, y sospecho que es más apropiado en su caso de uso: está diseñado para ser distribuido, lo que significa que sus usuarios podrán usarlo sin acceso a Internet, y no tendrá ningún cargo relacionado con la comunicación con el servidor al guardar documentos.

Aparte de eso, no estoy entendiendo bien su pregunta, pero parece que la esencia de esto podría ser mejor reformulada de esta manera: "¿Puedo hacer búsquedas basadas en etiquetas/restricción de acceso en mi sistema de control de versiones, ¿o necesito crear una capa en la parte superior para hacerlo? "

Si es así, la respuesta es que necesita una capa en la parte superior. Algunos ya existen, tanto basados ​​en la web (por ejemplo, Trac) como en el escritorio (por ejemplo, GitX). No necesariamente implementarán exactamente lo que necesitas, pero pueden ser un buen punto de partida para hacer lo que estás buscando.

+0

Ojalá pudiera, está mal visto ya que trabajamos principalmente con SVN en la compañía. ¿Hay una capa en la parte superior para SVN también (para escritorios, no para web)? – Noich

+0

Además, no me importa implementar una capa más arriba. La pregunta es, ¿es posible etiquetar archivos en SVN de alguna manera, de modo que se habiliten las consultas sobre ellos? – Noich

+0

Trac funciona para SVN de fábrica, sí, pero aún así le aconsejo a GIT, de lo contrario, cualquier archivo guardado en sus archivos se ralentizará una vez que su repositorio alcance un determinado tamaño. Y sí, puede establecer/obtener/colocar propiedades svn en los archivos. Sin embargo, lo mejor que sé es que estos no le permitirán consultar fácilmente los archivos/conjuntos de cambios en función de sus contenidos: aquí es donde una capa adicional se vuelve útil. –

Cuestiones relacionadas