Almacenamiento basado en SQL vs SVN

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

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

No estoy seguro de qué es lo mejor, así que:

  • ¿Puedo search sobre SVN utilizando tags (no tags SVN, por supuesto, más como tags de stackoverflow)?
  • ¿Tiene algún sentido pensar en la duplicación, tanto SVN como SQL, del contenido?
  • ¿Cualquier otra sugerencia?

Editar
La aplicación permite a los usuarios escribir testings de validation que luego ejecutan. Esas testings 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 encontrar todas las testings que están labeldas como "urgente" y que se han ejecutado hasta ahora, con fines de seguimiento.

Espero haber sido más claro ahora 🙂

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

EDIT III
Mi colega apoya firmemente el uso de solo una database y olvida el almacenamiento basado en files. Afirma que es mejor para la persistencia (lo que se necesita, una testing es más que la list de commands 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!

Podría usar SVN.

  1. Archivos compartidos : obvio y fácil. También es compatible con el locking centralizado que podría necesitar para los files binarys.
  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 repository, 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 repository 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 sea SharpSVN, que te ofrece un ensamblado .NET, pero está Python y C, y todo tipo disponible.

Como se mencionó, hay herramientas web que se encuentran en la parte superior de SVN para brindarle una vista, hay Trac, Redmine y varios repositorys como webSVN, por lo que hay un montón de código de muestra para usar para cocinar uno propio.


¿Usarías un DVCS como git o mercurial? No lo haré. Aunque estos tienen buenos mecanismos en sí mismos, no parece que sean lo que buscas. Esto permite que las personas trabajen por su count y compartan con otros de igual a igual (aunque puede establecer un repository "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 testing localmente y luego lo enviamos al repository central, es posible que tengamos problemas al fusionarnos. Tendremos problemas para fusionarnos si el file es un file binary 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 intentas compartir testings juntas, ¿has visto algunas aplicaciones que ya lo hacen? Recientemente noté TestRail que suena como lo que estás tratando de hacer. No es gratis (¡ay!) Pero es barato.

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 server al save documentos.

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

Si es así, la respuesta es que necesitas una capa en la parte superior. Algunos ya existen, tanto basados ​​en la web (por ejemplo, Trac) y basados ​​en 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.