visual studio - visual - ¿Git o Subversion?
ignore visual studio (15)
Asumiendo que estoy comenzando un nuevo proyecto web en casa usando Visual Studio, que sistema de control de versiones, viz. ¿Será mejor usar Git o Subversion? ¿Cuál tendrá la menor complejidad de configuración?
Dado que esto es para tu propio juego personal, mi pregunta es simple: ¿ya conoces Subversion o Git?
- Si conoce SVN, use Git.
- Si conoces a Git, usa SVN.
Si no sabe tampoco, use SVN. Es una mejor introducción.
El que decida usar depende en gran medida de cuáles son sus necesidades ahora y en el futuro. Git tiene una comunidad muy bonita construida alrededor de GitHub, que es ideal para compartir código y proyectos. SVN es bastante simple de configurar y poner en marcha, pero en los equipos grandes, Git lo ha derrotado con sus ramificaciones y fusiones. Esto es ideal en los casos en que tenga varias personas trabajando en el mismo proyecto, ya sea en una oficina o en un sentido de OSS donde el equipo esté disperso.
Si todo lo que necesita es algo rápido y simple de configurar y poner en marcha para que pueda comenzar su proyecto, SVN debería estar bien. SVN también está integrado en muchos editores e IDE, así como en muchos sistemas de seguimiento de errores y de integración continua.
Si planea tener un equipo, o ya lo hace, Git vale la pena buscar su configuración de bifurcación y fusión. Sin embargo, Git, debido en gran medida a que todavía es un poco joven, no tiene casi tanto apoyo disponible
Git es una configuración de control de fuente distribuida y como usted es el único usuario que no puedo imaginar, se beneficiaría mucho de sus características. Subversion es (en mi opinión) más fácil de configurar, por lo que te recomendaría que lo hicieras.
Me iría con Mercurial en su lugar. Se supone que es similar a Git (que nunca pude ejecutar debido al problema de Windows) y es muy fácil de configurar en Windows y muy bueno para los sistemas de control de versiones "personales".
Si está trabajando solo y quiere algún tipo de control de versión fácil de usar, entonces use Subversion. Funciona muy bien en Windows, la configuración del repositorio es un clic derecho en un vacío con Tortoise SVN . Ankh SVN ofrece una muy buena integración con Visual Studio, casi a la par con TFS, siempre que utilice VS 2005 o más reciente.
Por otro lado, Git es mucho más prometedor que SVN. Lo verificaré durante este año, pero las herramientas de terceros aún no están a la par.
Subversion es mucho más amigable para Windows en mi experiencia y también más útil para el desarrollador en solitario.
Otra posibilidad es Perforce, que es ligeramente menos amigable para Windows, pero con todas las funciones y bastante fácil de usar, sin mencionar que es gratuita para hasta dos usuarios.
Vamos a mi paseo en su pregunta y pregunte:
- ¿Git trabaja en Windows?
- ¿Tiene algo equivalente a Tortuga? (De lo contrario, no veo cómo podría competir con SVN en términos de facilidad de uso)
En una nota al margen: si realmente es un proyecto de un solo hogar, realmente no necesita ninguna herramienta de control de origen. Simplemente coloque su proyecto en una carpeta DropBox y listo (autocompromisos, revisiones infinitas, recuperación). A menos que realmente pienses que vas a necesitar etiquetas, ramas y demás. Pero para proyectos domésticos personales ... ¿verdad?
Yo iría con Git. No es tan malo ponerse al día sobre lo básico (ahora hay una tonelada de buenos recursos, incluido learn.github.com) y va a pagar en espadas. Y lo he estado usando en Vista sin problemas.
Si desea la integración de Visual Studio, no hay duda. Solo Subversion tiene integraciones de Visual Studio ( AnkhSVN , VisualSVN y varios scripts que permiten el acceso a TortoiseSVN ).
Una de las razones más importantes por las que Subversion tiene una cantidad tan grande de herramientas escritas es porque fue diseñada como una biblioteca estable para el uso de múltiples clientes.
Es poco probable que Git obtenga el mismo nivel de integración en Visual Studio antes de que el soporte git esté disponible como algún tipo de biblioteca reutilizable. (Hay planes para una libgit2 que podría hacer esto realidad).
Si planea llevar su proyecto en una memoria USB, use Subversion. Windows XP realmente, realmente, realmente malo en el almacenamiento en caché de muchos archivos pequeños en una memoria USB. Git escribe muchos archivos pequeños para las operaciones de confirmación y eso lleva años en Windows.
[EDITAR] El problema con Windows XP y los archivos en una memoria USB es el almacenamiento en caché (o la falta de ellos). Para evitar la pérdida de datos, XP siempre escribirá archivos de manera sincronizada en una memoria USB (por lo que cualquier escritura volverá solo después de que la FS haya informado que todos los bloques se han escrito en la memoria). Agregue eso al hecho de que las memorias USB son lentas cuando se manejan archivos pequeños (tienen mucha sobrecarga inicializando su gestión del nivel de desgaste) lo que conduce a un rendimiento muy pobre para cualquier tipo de aplicación que escriba muchos archivos pequeños.
[EDIT2] Si coloca un checkout SVN en el dispositivo USB, también tendrá muchos archivos pequeños (especialmente en los directorios .svn). Entonces, la solución en este caso es colocar el repositorio de Subversion (el "servidor") en la unidad USB. El repositorio usa solo un montón de archivos grandes (si usa la opción de base de datos en lugar del archivo basado en uno: svnadmin create --fs-type bdb
). Esto evita el problema de "muchos pequeños archivos". No hay forma de lograr lo mismo con las versiones actuales de Git.
Con SVN, tendrá que configurar un servidor, crear un repositorio allí, verificar el repositorio (vacío), agregar sus archivos y luego confirmar.
Con Git, todo lo que necesitas es git init
en el directorio raíz de tu proyecto. Luego puede agregar y confirmar archivos como mejor le parezca.
No hay ninguna idea en la configuración de un servidor de Subversion, ya que usted es el único que trabaja en la fuente. Al contrario de lo que mucha gente piensa, los proyectos en solitario son una combinación perfecta para las herramientas de control de versiones distribuidas. También es muy fácil hacer crecer tu proyecto más adelante.
Usted puede hacer su propia opinión después de leer esto: http://whygitisbetterthanx.com
En mi experiencia, Subversion es más fácil de "grok", pero Git es más rápido y más fácil participar en las mejores prácticas de desarrollo de software. Como antiguo usuario de CVS, Subversion tuvo sentido inmediato para mí cuando comencé a usarlo. Git tomó un estudio y todavía tengo que consultar el manual de vez en cuando, pero me encanta lo fácil que es ramificar y fusionar el código cuando tengo que mantener un proceso de lanzamiento.
Si ya está familiarizado con CVS y solo necesita algo para mantener su historial y sus diferencias, será más fácil comenzar con Subversion. Si eres nuevo en el control de versiones, la marea está cambiando hacia DVCS en general y hacia Git en particular, por lo que puedes sacar más provecho de eso en general.
Te recomiendo que consultes un proveedor alojado para que no tengas que preocuparte por configurar un servidor de Subversion o para que puedas tener una ubicación de respaldo para tus datos de Git. Puede buscar " alojamiento de subversión " o " alojamiento de git " en Google para ver a los principales proveedores en el espacio.
Git ................................ (estos puntos están ahí porque SO no aceptará una respuesta de 3 letras).
Una gran respuesta a esta pregunta fue recientemente escrita por Jack Repenning aquí:
Si tiene requisitos convincentes para una única copia maestra de su trabajo, use Subversion. Puedes hacer esto con Git, siempre y cuando no haya deslices. Pero no puedes hacer nada más con Subversion (slip-ups o no), y los "requisitos convincentes" como Sarbanes-Oxley son más felices con las garantías que con las posibilidades.
Si planea mantener líneas paralelas, en gran medida compartidas pero permanentemente diferentes del mismo producto, use Git. Un ejemplo común: quizás tenga un producto grande que personalice para cada cliente. Las personalizaciones son permanentes, y generalmente no se comparten entre líneas de código, pero la mayoría del código es común a todos. Git fue diseñado solo para este caso (en términos de Git, personalizaciones locales para el núcleo común, y funciones ocasionales o contribuciones de errores en el árbol de respaldo)
Ninguno de esos? Haga su elección, debería estar bien con cualquiera de las herramientas. *
Publicación completa del blog aquí: http://blog.codesion.com/post/15692788883/subversion-or-git-decisions-decisions