2008-09-18 12 views
43

Para mi trabajo escolar, cambio muchas computadoras (de laboratorios a mi laptop a la biblioteca). Me gustaría poner este código bajo algún tipo de control de versión. Por supuesto, el problema es que no siempre puedo instalar software adicional en las computadoras que uso. ¿Hay algún tipo de sistema de control de versiones que pueda mantener en una memoria USB? Tengo un disco de 2GB para poner esto, pero puedo obtener uno más grande si es necesario.Control de versión en una unidad USB de 2GB

Los proyectos que estoy haciendo no son especialmente grandes para su información.

EDITAR: Esto necesita funcionar bajo Windows.

EDIT II: Bazar terminó siendo lo que yo elegí. Es incluso mejor si vas con TortoiseBzr.

Respuesta

13

Usted podría utilizar Portable Python y Bazaar (Bazar es una aplicación de Python). Me gusta usar Bazar para mis proyectos personales debido a su extrema simplicidad. Además, puede ser portátil porque Python puede ser portátil. También deberá instalar sus dependencias en su instalación de Portable Python.

10

La mejor respuesta para usted es una especie de DVCS (los populares que son Git, Mercurial, Darcs, Bazaar ...). La razón es que tienes una copia completa de todo el repositorio en cualquier máquina que estés usando. No he usado estos sistemas personalmente, por lo que otros recomendarán un DVCS con una huella pequeña y buena compatibilidad de plataforma cruzada.

8

Yo usaría git. Los repositorios Git son muy pequeños y no requieren un daemon. Probablemente pueda instalar cygwin o msysgit en su unidad flash.

Editar: here are some instructions for installing cygwin on a flash drive

+1

git en las ventanas es mucho de una molestia en com parison con Mercurial o Bazaar. Uso git cuando estoy en Linux y Mercurial cuando estoy en Windows. – Valentin

+1

@Valentin: No estoy de acuerdo. Git funciona bien en Windows sin ninguna instalación (es decir, desde una unidad USB). También tenga en cuenta que msys Git recientemente comenzó a incluir la creación de "PortableGit" en su sitio de Google Code (http://code.google.com/p/msysgit/). –

3

Podrías poner los binarios de subversión allí, son solo 16 megas, por lo que tendrás mucho espacio para algunos repositorios también. Puede utilizar los archivos binarios oficiales desde la línea de comandos o señalar una herramienta gráfica (como TortoiseSVN) al directorio del repositorio. Si te sientes con ganas de lujo, entonces puedes manipular la unidad para ejecutar automáticamente la aplicación SVNSERVE, convirtiendo cualquier computadora en un servidor subversivo liviano en el momento en que enchufas la unidad.

Encontré algunas instrucciones para este proceso here.

21

Hago esto con Git. Simplemente, crear un repositorio Git de su directorio:

git-init 
git add . 
git commit -m "Done" 

Inserte el dispositivo, cambie al directorio en el mismo (tengo un gran archivo ext2 montes con -o loop), y hacer:

git-clone --bare /path/to/my/dir 

Luego, llevo el dispositivo a otra computadora (casa, etc.). Puedo trabajar directamente en stick, o clonar una vez más. Ir a algún directorio en el disco duro y:

git-clone /path/to/stick/repos 

Cuando he terminado con los cambios, lo hago 'git push' volver a pegarse, y cuando estoy de vuelta en el trabajo, Me git push "una vez de nuevo para mover los cambios de la memoria al ordenador de trabajo. Una vez que lo configure, puede usar 'git pull' para buscar los cambios solamente (no necesita clonar más, solo la primera vez) y 'git push' para enviar los cambios de otra manera.

La belleza de esto es que puedes ver todos los cambios con 'git log' e incluso mantener sincronizados algunos trabajos no relacionados cuando cambian en ambos lugares mientras tanto.

Si no te gusta la línea de comandos, puedes usar herramientas gráficas como gitk y git-gui.

+0

Estoy usando Windows desafortunadamente. Puse eso en las etiquetas, pero supongo que debería haberlo puesto también en la pregunta. –

+7

Git funciona bastante bien en Windows, incluso las herramientas gráficas como Git-GUI y Gitk funcionan tan bien como en Linux. Recomiendo usar el puerto msysgit desde http://code.google.com/p/msysgit/ –

+0

Gracias a Milan por dar pasos breves pero significativos. –

1

Subversion funcionaría un poco. Ver thread

Personalmente, prefiero mantener todo en una sola máquina y Escritorio remoto en él.

18

Darcs es ideal para este propósito.

  • no puedo dar fe de otras plataformas, pero en Windows es sólo un único archivo ejecutable la que se podía mantener en la unidad.
  • que es más importante, su interfaz de línea de comandos interactiva es fantástica y muy rápidamente se convierte en intuitiva (ahora mucho de menos interactivos comete en cualquier VCS, que carece de ellos) - que no es necesario memorizar muchos comandos como parte de su flujo de trabajo normal tampoco. Este es la razón principal por la que lo uso en git para proyectos personales de .

Configuración:

darcs init 
darcs add -r * 
darcs record -am "Initial commit" 

Creación de un repositorio en el equipo de laboratorio:

darcs get E:\path\to\repos 

Comprobación de lo que ha cambiado:

darcs whatsnew  # Show all changed hunks of code 
darcs whatsnew -ls # List all modified & new files 

crear interactivamente un nuevo parche de sus cambios:

darcs record 

empujando de forma interactiva parches al repositorio en la unidad:

darcs push 

Es conocido por ser lento para grandes proyectos, pero nunca he tenido ningún problema de rendimiento con el pequeño a proyectos personales medianas I' lo he usado.

Dado que no es necesario realizar ninguna instalación, puede incluso omitir la unidad y simplemente tomar el binario de darcs de la web. Si olvidé mi unidad, saco una copia del depósito en el que quiero trabajar desde el espejo. mantener en mi espacio web, a continuación, crear y parches de correo electrónico a mí mismo como archivos:

darcs get http://example.com/repos/forum/ 
# Make changes and record patches 
darcs send -o C:\changes.patch 
3

utilizo la subversión en mi unidad de disco USB, los binarios oficiales funcionará la derecha de la unidad. El problema con este truco es que necesita acceder a una línea de comando para que esto funcione o para poder ejecutar archivos por lotes. Por supuesto, sincronizo los archivos en mi memoria USB con un servidor que pago. Siempre puede alojar el repositorio en un escritorio (use el protocolo file: ///) si no desea obtener espacio de alojamiento en la web.

+0

Mientras que la integración de tortise no funcionaría sin instalarse. Puede usar soem de UIs fuera de una unidad de memoria USB. No lo he intentado yo mismo, pero puede ser más fácil que las líneas de comando de SVN. –

3

Me van a linchar por decir esta respuesta, pero funciona en Windows: RCS.

Simplemente haga un directorio RCS en cada uno de los directorios con su código. Cuando llega el momento de verificar las cosas, ci -u $FILE. (Los archivos binarios también requieren que se ejecute rcs -i -kb $FILE antes del primer registro.)

Dentro del directorio RCS son un montón de ,v archivos, que son compatibles con CVS, caso de que deseen "ascenso" para que un día (y desde allí a cualquiera de los otros sistemas VCS otros carteles mencionados). :-)

0

bitnami stack subversion es fácil de instalar. Puede intentar instalar también xampp con portableapps.com y subversion.

5

Solo para agregar un recurso adicional Subversion on a Stick. Acabo de configurar esto en mi unidad USB de 4GB, bastante simple e indolora.

Pensé que ahora estoy muy tentado de probar Bazar.

Actualización: He configurado PortablePython en mi unidad USB, simple, pero obteniendo bazar allí ... Me rendí, una dependencia tras otra, y como tengo svn funcionando.
Si alguien sabe de un instalador portátil fácil, me gustaría.

1

La memoria flash y el control de versiones no me parecen una buena idea para mis oídos. Me temo que la memoria se agotará muy pronto, especialmente si utiliza varias operaciones de control de versiones que realizan muchas operaciones de disco pequeño (fusión, reversión, etc.).

Como mínimo, asegúrese de realizar una copia de seguridad del repositorio con la frecuencia que sea humanamente posible, en caso de que la unidad falle.

+0

Usted pensaría que sí. Sin embargo, como el control de versiones ocurre a escala humana (no lo hago muchas veces por segundo), esto no es un problema en la práctica. –

+0

No me refería al rendimiento, sino a la duración y calidad de una memoria Flash deficiente. –

+0

Esto no es 1985. Los controladores flash más nuevos moverán los datos para obtener más ciclos por macrocélula. Además, cada celda generalmente tiene más de 10k ciclos. No creo que un simple repositorio de deberes cause tanto problema. –

4

recomiendo fósil http://www.fossil-scm.org/

incluye

  • línea de comandos
  • DVCS
  • multiplataforma (y fácil compilar)
  • comando 'sincronización automática' hacer la tarea esencial de la sincronización de una copia de seguridad fácil.
  • la configuración del servidor de copia de seguridad es un doddle.
  • fácil de aprender/utilizar
  • muy útiles comunidad
  • interfaz de usuario web de wiki y bugtracker incluido.
  • 3,5Mb, solo ejecutable
  • base de datos SQLite
  • uno como repositorio
1

estoy usando GIT acuerdo con la respuesta de Milán Babuškov:

(1) crear repositorio y comprometerse (en PC de oficina)

mkdir/home/yoda/proyecto & & cd/home/yoda/proyecto

git init

git add.

git commit -m "Hecho"

(2) insertar una memoria USB y hacer un clon del repositorio

cat/proc/particiones

mount -t ext3/dev/sdc1/mnt/usb

git clone --bare/home/yoda/proyecto/proyecto/mnt/usb

(3) tomar el lápiz de memoria USB a casa y hacer un clon del repositorio en el hogar

cat/proc/particiones

mount -t ext3/dev/sdc1/mnt/usb

git clone/mnt/usb/proyecto/home/yoda/proyecto

(4) empuje se compromete desde el PC de vuelta a casa a una memoria USB

mount -t ext3/dev/sdc1/mnt/usb

cd/home/yoda/proyecto

git push

(5) tener una memoria USB a la oficina y se compromete empuje del palo para PC de la oficina

mount -t ext3/dev/sdc1/mnt/usb

cd/mnt/usb/proyecto

git push

(6) comete tirón de PC de la oficina de memoria USB

mount -t ext3/dev/sdc1/mnt/usb

cd/mnt/usb/proyecto

git pull

(7) de tracción se compromete desde una memoria USB al PC de casa

mount -t ext3/dev/sdc1/mnt/usb

cd/home/yoda/proyecto

git pull

Cuestiones relacionadas