2009-12-14 21 views
29

Lo siento por esta horrible y horrible pregunta ... pero no hay forma de que no use VSS.Usando Git con Visual Source Safe 6.0

Me gustaría poder usar Git localmente para el desarrollo de sucursales, etc. al usar Visual Source Safe 6. Mi conocimiento de todos los pormenores de Git es limitado en este momento, ya que soy un reciente convertir.

Pregunta:
Lo que me gustaría ser capaz de hacer es trabajar dentro de un repositorio Git. Me gustaría hacer esto y obtener todos los beneficios que esto me permita con la ramificación, etc. Al final de mi día, o en otros momentos necesarios, me gustaría poder tomar cualquier trabajo que esté haciendo y ubicarlo en el repositorio maestro que luego colocaría en VSS.

Idealmente, al comienzo de la jornada laboral obtendría la versión más reciente de VSS. Comprométalo con Git ... luego trabaje en una rama alternativa, volviendo a poner los cambios en el maestro cuando necesite comprometerme con VSS.

Siendo que soy un principiante relativamente git, ¿cuál podría ser la mejor manera de lograr esto ... junto con los mejores comandos para emitir/manera de configurar esto.

* nota: Source Safe necesita el archivo desprotegido antes de que se puedan realizar cambios, creo. Tal vez haya alguna herramienta/script que pueda usar para ayudar a automatizar esto para volver a introducir cambios en VSS.

+1

Sé que apesta. Solo estoy buscando la manera más fácil de hacer esto y mantener un buen repo de Git, y volver a introducir mis cambios en VSS a intervalos. –

+7

+1. Siento el mismo dolor todos los días :(¿Por qué en la Tierra se inventó VSS? – ereOn

+0

buena pregunta +1, tengo el mismo dolor de cabeza que todos ustedes tienen en este momento – cctan

Respuesta

8

La configuración que está considerando debería funcionar bien. Para los comandos de git, solo revisa los tutoriales.

El flujo de trabajo que he usado (no con VSS, pero el concepto es el mismo) es algo así como:

  • Pedido de principal (es decir,VSS)
  • Mantener una rama "tronco" que está en sincronía con VSS
    • siempre se mantendrá limpia
  • Desarrollar en ramificaciones ramificado de "tronco"
  • Actualización desde VSS:
    • interruptor en "tronco" actualización
    • con VSS
    • git commit los cambios
    • rebase las ramas que se bifurcan desde el tronco
  • Para empujar cambios a VSS:
    • empuje cambios con respecto a la rama de desarrollo de "tronco"
    • interruptor en "tronco"
    • VSS confirmar los cambios
+2

¿Cómo me movería por el VSS? Necesito tener archivos prestados. que sabe qué comprometer ... y en el mismo token, esos archivos que se agregan? –

+1

hmm, tienes razón, difícil (no estaba pensando en VSS específicamente). Probablemente escribiría un script que mire el archivos modificados desde la última sincronización (modificada/agregada/eliminada) y hace el apropiado agregar/verificar/eliminar a través de la interfaz VSS de línea de comandos. – orip

+0

Creo que tienes razón. Para hacer esto 'correcto', tendré que construir algunos scripts para encargarse de estas cosas. Definitivamente va a ser un desafío. –

2

Cualquiera pegado con VSS puede encontrar el siguiente post útil si usted tiene que tratar con ramas:

http://timwise.blogspot.com/2011/11/multiple-working-folders-for-git-on.html

Básicamente, los detalles usando SysInternals' Junction para conseguir el apoyo de enlaces simbólicos en Windows y luego compartir un repositorio git entre las carpetas de sucursales físicas VSS te obliga a copiar los archivos en la carpeta .git y a enlazar las carpetas.

Y aquí están los guiones para automatizar el intercambio de

0

También estoy atrapado en esto, la manera de hacerlo es no tener otros tocan mi VSS y tienen todos los archivos revisados ​​todo el tiempo, esto significa que nadie más puede contribuir, por lo que, naturalmente, esta no es una solución viable para todos. La solución que sugeriría es que:

  • chekout de VSS
  • crear una rama a trabajar en su función
  • trabajo de acabado en su función
  • Cambiar a la rama principal
  • actualización más reciente VSS
    • Si se realizan cambios, rebase su sucursal
  • ver los ficheros de cambiar usando $ git diff --name-status master..branchName (ver Showing which files have changed between two revisions para la fuente de esta)
  • extraer los archivos alterados utilizando VSS
  • Combinar su sucursal en maestro (preferiblemente la supresión de su rama de la característica)
  • Se comprometen a VSS

Algunas de ellas pueden ser un script para salir, pero como probablemente esté utilizando M $ (ya que está usando VSS) no puedo ayudarlo.

La manera en que funciona VSS Creo que sería mejor minimizar el tiempo que se pasa con los archivos desprotegidos de VSS y, por lo tanto, que esta es una mejor manera.

Tenga en cuenta que puede haber algunos problemas para actualizar los archivos, ya que VSS establece automágicamente el indicador de solo lectura en los archivos que no están desprotegidos. Una solución alternativa podría ser necesaria aquí.

Cuestiones relacionadas