2009-02-02 19 views
7

Para programar en mi tiempo libre, tengo una computadora de escritorio y una computadora portátil (ambas Mac, aunque dudo que eso haga la diferencia). Tengo VMware en ambos, con imágenes de Linux para ejecutar mi código. Son imágenes idénticas, así que tengo el mismo entorno en ambos lugares.Control de versiones para coordinarse con usted

El truco es que me gusta usar el control de versiones para TODA mi codificación, incluso cuando no estoy coordinando con otra persona. Quiero ver la versión más reciente de mi código en el sistema que estoy usando.

No quiero depender de tener acceso a la red en todo momento - Podría estar codificando en algún lugar sin wi-fi (sí, es raro, pero algunos lugares todavía están en la edad de piedra). Estoy buscando usar git, pero algo como SVN también haría si tuviera el repositorio disponible localmente. O tal vez la computadora portátil se convierte en el servidor SVN y el escritorio accede a ella.

¿Alguien ha hecho este tipo de cosas antes? ¿Alguna trampa/trampa/lección aprendida?

Respuesta

8

Bueno, definitivamente recomendaría buscar un sistema distribuido en lugar de Subversion. Eso satisfará su requisito de no depender del acceso a la red, y probablemente se ajuste mejor a su flujo de trabajo. Las principales opciones para un VCS distribuido son git, Mercurial (también conocido como "hg") y Bazaar (o "bzr"). Mi preferencia personal es Mercurial, pero todos son bastante comparables.

Sin embargo, una cosa que Mercurial tiene sobre los demás (y es algo que sería muy útil en su situación) es el comando "hg serve". Puede leer sobre esto aquí: Informal sharing with "hg serve". Básicamente configura un servidor muy simple (temporal) para permitir tirar de su repositorio a través de la red. Utilizo esto todo el tiempo para mantener el código sincronizado entre mi computadora de escritorio y portátil. Si realicé algunos cambios en la computadora portátil, simplemente ejecuto "hg serve" allí y luego "hg pull" desde el escritorio, o viceversa, si he estado trabajando en el escritorio.

Así que, en general, definitivamente sugeriría buscar en los sistemas distribuidos, creo que harán el mejor trabajo para configurar el tipo de entorno que desee. Hay una buena cantidad de información disponible en la web sobre el uso de todos ellos. No he pasado mucho tiempo con los demás, pero si quieres probar Mercurial, this free online book covers pretty much everything you'll need to get started.

+0

Parece que eres la única persona que realmente ha hecho esto de alguna manera. Mi preocupación con la verdadera distribución es que tendré que fusionar entre las computadoras, lo cual es una receta para que me olvide de fusionar las cosas. ¿Alguna solución mágica para eso? – edebill

+0

Bueno, cualquier VCS va a requerir que recuerdes comprometer/actualizar, por lo que realmente no hay nada que pueda deshacerse de eso. La fusión en todos los sistemas DVCS es muy buena, por lo que no debería tener que considerar esto como una tarea difícil. –

+0

A menos que por alguna razón haya cambiado el mismo código de una manera diferente en las máquinas separadas (y su memoria es probablemente mejor que eso), nunca debe haber conflictos de fusión, y todo se fusionará automáticamente sin necesidad de interacción. . –

7

Recomiendo encarecidamente que no tenga acceso a la red en todo momento.

Sin embargo, si todavía necesita trabajar con repositorios de subversión, puede obtener lo mejor de ambos mundos usando git-svn.

+0

Git-svn o solo un repositorio de git fuera del sitio (como github) al que puede presionar. Es probable que desee tener una copia de seguridad en otro lugar que no sea su computadora portátil. –

+0

No estoy de acuerdo en que obtengas lo mejor de git cuando uses git-svn. Es mucho mejor que intentar usar svn sin git, por supuesto. – Dustin

2

Hagas lo que hagas, asegúrate de que tu repositorio esté respaldado regularmente. Esto es especialmente cierto si su computadora portátil alberga su repositorio. También querrás pensar qué pasará si te roban tu laptop. Puede ser mejor usar git y dejar el repositorio en el escritorio.

+0

Definitivamente haré algo para asegurarme de que esté respaldado fuera del sitio. Tal vez un trabajo de cron para sincronizarlo con mi iDisk con frecuencia, o copiar el repositorio en mi escritorio (que está respaldado) regularmente. – edebill

+0

Eso es lo bello de Mercurial ... cada computadora tiene un 'clon' del repositorio. – Pete

0

SVN se vuelve bastante incómodo de usar cuando no tiene acceso al repositorio. Como desarrollé todo mi desarrollo en una computadora, me ha ido bien con SVN, pero es posible que no lo encuentre tan fácil. Por lo que he escuchado, ese es exactamente el tipo de problema que git está diseñado para tratar: le permite realizar confirmaciones que están registradas en su copia local, y luego cargarlas en el repositorio cuando tenga acceso a ellas.

0

Se podría considerar la obtención de un host SVN - que son bastante asequibles y toma el dolor de cabeza lejos de tener que lidiar con su propia conectividad de red:

http://www.google.com/search?hl=en&q=svn+hosting&btnG=Google+Search&aq=f&oq=

+0

O simplemente obtenga un servidor web regular que ofrezca SVN como característica. – Kibbee

+0

Desafortunadamente, esto no funcionará si estoy trabajando en algún lugar sin acceso inmediato a la red. – edebill

1

Como alternativa a Git, que ya ha sido mencionado, recomendaría encarecidamente Bazaar. Es un VCS distribuido como lo es git, aunque con algunas diferencias.

Para una comparación (algo parcial, por supuesto), consulte this page.

+0

Yo sería el segundo esto. Bazar se adapta mejor a mi gusto por la facilidad de uso que a git, pero creo que es efectivamente un lavado. –

+0

@Darcy, de acuerdo. Sin embargo, una diferencia notable es el esfuerzo realizado para soportar Windows (lo que no parece relevante para el OP). –

+0

No. Irrelevante. Sin embargo, necesito el soporte de MacOS y el soporte de Linux. Parece que debería investigar Mercurial y Bazaar (ya lo intenté con git). – edebill

1

Si buscas simplicidad (configuración), SVN está bien. Funciona sin conectividad de red porque su historial completo se guarda en todas las PC sincronizadas, y SVN + SSH es TRIVIAL para la configuración. Utiliza la capacidad incorporada de SSH para ejecutar un programa, por lo que si tienes un servidor SSH configurado, simplemente creas un repositorio y todo funciona ... no hay configuración de servidor alguna.

Esto también puede actuar como copia de seguridad ya que tiene todo su repositorio en cada computadora con la que sincroniza.

Los sistemas de control de versiones distribuidas también son interesantes, pero creo que la inversión inicial es mayor pero tiene la ventaja de que puede guardar en su repositorio sin estar conectado (no demasiado crítico si trabaja solo, pero puede punto de control y reversión en cualquier lugar puede tener sus ventajas).

+0

Esa simplicidad era parte de por qué ejecutar un repositorio SVN en la computadora portátil parecía tentador. Ya que siempre sería local o tengo garantizada la disponibilidad de la computadora portátil, nunca habría problemas para llegar a ella. Al tener solo 1 repo no tendría que fusionarme conmigo mismo. – edebill

+0

Prueba SVK, he oído que se supone que es casi tan simple, pero también siempre tiene un repositorio local. Sin embargo, no fue una experiencia de primera mano. –

0

Mi VCS favorito es darcs ya que es compatible con parche de recogida de cerezas. Es un VCS distribuido y es MUY fácil de usar.

+0

git y mercurial tienen un excelente soporte para cherry-picking también.:) – Dustin

+0

Pero hasta donde sé, eso no es posible con git y hg: repo A contiene parches 1, 2, 3 y 4; Repo B contiene parches 1, 5, 6; el repo C no contiene nada. Con darcs ahora puedo sacar el parche 1, 2, 4 de A y 6 de B, de modo que C ahora contiene 1,2,4,6 y A y B permanecen sin cambios. –

+0

Ah y una adición importante: más tarde puedo anular cualquier parche, ¡ahora solo el último! No hay versiones en darcs. –

Cuestiones relacionadas