2011-01-08 18 views
6

¿Cuál recomienda para un proyecto comercial con desarrolladores que necesitan tener acceso solo a una parte específica del repositorio?SVN o Git para repositorio con control de acceso jerárquico

IDE de desarrollo es Eclipse

y el lenguaje de programación es C/C++

Las principales características de la exigencia es: Autorizada y ACL acceso jerárquico al repositorio

Respuesta

2

Git, en combinación con un servidor "central" administrado con Gitolite, puede proporcionarle todo el control detallado que necesita (por usuario/por grupo, con acceso a todas o solo a una parte del repositorio, incluso a solo algunas sucursales).

Dicho esto, si sus desarrolladores están más familiarizados con un CVC como SVN, podría ser más prudente utilizar ese conocimiento, al menos, para iniciar el proyecto (y utiliza el método de autenticación en la configuración del servidor Apache): un CVCS can be quite different from a DVCS.
(además, puede convertir más adelante un repositorio SVN en un Git)

+0

Sin embargo, elegí Git, con Git es más fácil lograr cualquier modelo, su sistema de control de versiones distribuido permite mucho más fácil el control de acceso jerárquico. Está claro que tenemos que permitir que los desarrolladores trabajen en sus proyectos particulares, ¿por qué no? tienen una copia de la rama de repositorio o módulo en el que están trabajando, de todos modos tienen que saber en qué están trabajando para desarrollarlo, por lo tanto necesitan esa parte, lo que encontré muy interesante con respecto a Git es que podemos lograr esta estructura jerárquica estableciendo diferentes repositorios Git luego fusionar su resultado en uno anterior, – kay

+0

Acepto con SVN también es posible lograr tales tareas con mucho más dolor, por supuesto, personalmente he estado usando SVN, pero encontré Git más fácil y rápido con opciones ilimitadas y soporte de Eclipse ya que EGit y JGit son lo suficientemente aceptables para llevarse bien con Git, sin necesidad de desarrolladores de dolor cómo trabajar con Git subyacente, otros conceptos son los mismos que SVN en realidad por la forma en que es control de versión – kay

2

Git es mucho más modular y flexible que SVN. Si algunos desarrolladores solo necesitan acceder a una parte del repositorio, puede convertirlo en un submódulo (es decir, un repositorio independiente agregado por su repositorio principal). Es mucho más fácil otorgar acceso a un repositorio diferente que a un único directorio dentro de un sistema de archivos.

Es una práctica común que las API o complementos se separen del repositorio principal. Para obtener más información, echar un vistazo there.

El último punto, software como Gitolite (el que uso para mis propios proyectos) y Gitosis (el que utilizamos en el trabajo) hace que la administración de repositorios git sea muy fácil.

+0

También estoy de acuerdo con usted, lo que encontré más fácil es que es posible tener múltiples repositorios Git y simplemente empujarlos a principal Git Repository, es más fácil lograr el control de acceso jerárquico y también tener control de calidad de esta manera, de alguna manera como proyecto de FreeBSD pero usan CVS – kay

1

Debería usar SVN. Razones:
- Para un proyecto comercial, más desarrolladores familiarizados con SVN. Y SVN tiene potentes herramientas GUI. Supongo que no quieres oír quejas sobre "git es difícil de usar". (Me gustan tanto git y svn)
- Git mantiene demasiada información de versión localmente, eso no es lo que quiere para un proyecto comercial en general.

+2

¿Por qué exactamente no debería un proyecto comercial almacenar información de la versión a nivel local? Permite a los desarrolladores trabajar de manera eficiente localmente, y luego presionar al servidor de la compañía central en el momento apropiado. Si tus desarrolladores no siguen la política de la compañía, entonces pueden usar 'svnsync' y luego realizar cualquier acto infame del que tengas miedo. –

+1

No me hagas la pregunta. No importa lo que reproduzca, la verdad es que algunas personas piensan así en el mundo. –

+0

No hay absolutamente ninguna razón para ocultar sucursales o árboles, el concepto detrás del acceso jerárquico a las fuentes es mucho más fácil de lograr con Git y múltiples repositorios, de una manera que no incluye aquellas partes que el Desarrollador no debería conocer o trabajar , por ejemplo, un desarrollador de GUI no debe tratar con el Procesador de señal digital y, por lo tanto, el código DSP no está disponible para él, simplemente quitándolo de su repositorio de Git o reemplazando archivos de objetos en lugar de fuentes, – kay

2

Usando Apache o svnserve como servidor, de grano fino Per-directory access control está disponible. Path-Based Authorization otorga a usuarios o grupos acceso definido a su repositorio. Lo mismo se aplica al websvn, si una interfaz web debe estar disponible también.

+0

. Es posible lograr lo mismo con SVN , pero como usuario de SVN desde hace mucho tiempo, encontré que Git es mucho más fácil de lograr, ya que puedo establecer repositorios jerárquicos también, veo que es posible en SVN pero con mucho más dolor – kay

+0

@kay: ¿Qué es * "mucho más dolor "*? Configurar * gitolite * o * authz * no será una gran diferencia. Con respecto a ** estrategias de fusión ** DVCS como * GIT * tiene ventajas, pero no se refiere a la administración de acceso. – zellus

+0

sí, el problema es que no entiendes el punto, es sep, no es solo una contracción de acceso, con Git es posible tener repositorios de repositorios, y comprometer (empujar) repositorios hacia arriba (esto no está disponible en SVN. – kay

Cuestiones relacionadas