2008-09-22 9 views
17

Estoy trabajando en un proyecto que ha crecido a un tamaño decente, y soy el único desarrollador. Actualmente no usamos ningún control de versión, pero definitivamente necesito comenzar.Agregar control de versión a un proyecto existente

Quiero usar Subversion. ¿Cuál sería la mejor manera de transferir un proyecto existente a él?

Tengo un servidor de prueba que utilizo para desarrollar nuevas características, luego transfiero esos archivos a los 2 servidores de producción. ¿Hay alguna herramienta que automatice la carga de la prueba y luego la implementación en los servidores en vivo?

Todo esto se desarrolla en ASP.NET utilizando Visual Studio (si lo que importa)

Respuesta

16

Para ampliar un poco en la respuesta anterior ...

1) Crear un nuevo repositorio SVN
2) Confirmar todo el código que has trabajado hasta ahora para que
3) Marque todo lo que codifique OUT otra vez, para crear una copia de trabajo en su máquina dev
4) ¡Trabaje!

Definitivamente no es un obstáculo, de verdad.

+11

¿No es esto un obstáculo realmente? Poner un proyecto existente en SVN es un horror para mí (al menos usando Tortoise). Para crear un repositorio necesita una carpeta vacía [sic!]. Puede importar cosas primero (y luego finalizar la compra), pero luego está importando a su SVN toda la basura que nunca colocaría allí (es decir, caché R #, etc.). Resulta que tiene que cambiar el nombre de su carpeta y hacer el archivo copiar/mover la danza para hacer algo simple. Realmente me sorprende lo complicado que es. Me pregunto cuántos recién llegados tienen esta mala primera impresión. –

+0

Aunque prefiero TFS, en realidad es muy fácil. 1) Cree un nuevo repositorio svn en el Servidor VisualSVN 2) Haga clic con el botón derecho en la carpeta que desee en su repositorio y vaya a TortoiseSVN -> Importar y colocar en el tronco, p. https: // localhost: 8443/svn/myproject/trunk –

3

Importe su base existente en un repositorio SVN, lo comprueba hacia fuera y empezar a trabajar de nuevo.

+0

Simplemente asegúrese de verificar que los archivos desprotegidos estén allí antes de eliminar los originales (si va a eliminarlos). Como un cartel en una de las preguntas más importantes de la WTF testificará. : D – KTC

+1

Un mal consejo, de esta manera terminarás importando toda la basura que no deberías tener en tu repositorio como R # cache, carpetas obj, etc. –

3

Debe mirar Visual SVN, que se integra perfectamente en Visual Studio.

+0

¿Vale la pena pagar los $ 49 en comparación con AnkhSVN? –

+0

Las personas de este sitio han expresado problemas con Ankh. Jeff y su equipo usan VisualSVN y yo también. Me gusta. – mmcdole

1

instalar Subversion servidor ... Subverison bibliotecas de cliente Instal ...

Instalar Ankh para la integración con VS Instalar la tortuga para la integración Administrador de archivos

En Administrador de archivos, haga clic derecho en la dirección de nivel superior con Solución ... Importar ...

0

Puede ser exagerado para lo que necesita pero crear un repositorio SVN en una máquina, y luego en otro configurar un servidor de integración contious. TeamCity es uno que recomendaría. (También puede utilizar la PC virtual para esto si el hardware es escaso)

Esto le permitirá agregar los pasos de compilación personalizados para implementar en los servidores de producción una vez que se haya completado y probado una compilación.

TeamCity para obtener más información. Thi también proporciona un complemento en Visual Studio también

0

Es fácil comenzar a usar Subversion. Descargue TortoiseSVN, que integra SVN en el Explorador de Windows. Descargue AnkhSVN para la integración de VS. Configure svnserve como un servicio de Windows (está en los documentos).

Luego, todo lo que debes hacer es retirar un directorio vacío de svn y copiar todos tus archivos de códigos en él. Luego agrégalos con Tortoise y compromételos. Cuando modifique archivos en Visual Studio, Ankh le mostrará los archivos que ha modificado y podrá enviarlos allí.

Hacemos todo nuestro despliegue con guiones NAnt, aunque es posible encontrar secuencias de comandos por lotes y xcopy suficiente.

0

estoy más familiarizado con Perforce de la subversión, pero poniendo un proyecto bajo control de versiones no es nada difícil.

Una vez que haya instalado y ejecutado su software de control de versiones, limpie su directorio de códigos de todo lo que no sea una fuente (por ejemplo, ejecute 'make clean'). Luego use simplemente use el comando para agregar nuevos archivos a su repositorio, recursivamente. Sigue eso con un envío, y listo. Recomiendo visitar una máquina diferente y construir al menos una vez para asegurarse de que tiene todo lo que necesita para construir.

En cuanto a la implementación en servidores, no es realmente un problema de control de versiones. Normalmente lo pondría en su sistema de compilación (es decir, 'make testinstall', 'make install') o simplemente escribiría scripts de shell.

2

Dejando a un lado las cuestiones técnicas, simplemente obtenga SVN y comience a usarlo. Verá los beneficios inmediatos (mirando el historial del código, la depuración de errores para ver qué cambio introdujo el error que no estaba presente la semana pasada), y nunca querrá mirar hacia atrás.

Yo, personalmente, no me gusta mi control de fuente integrado en el IDE. Uso Tortoise SVN que se integra con el Explorador de Windows y le permite registrar archivos de entrada, diferencias, fusión, etc. directamente desde el sistema operativo.

0

+1 en las respuestas proporcionadas por Joe y Steve ... También mencionaría que es importante configurar las listas de ignorar o los Accesos SVN para que no se comprueben los archivos del usuario ni la configuración de reafilado.

También asegúrese de incluir todo lo que pueda ser necesaria para la construcción, tales como scripts de construcción, montajes de 3 ª parte, las herramientas externas como nunit, Nant etc

Mientras que usted está en él, yo os lo recomiendo mira CC.net, y consigue un servidor de integración continua instalado para automatizar tu compilación.

Tener control de fuente es una cosa, usarla correctamente es otra cosa. Recuerde registrarse con frecuencia y temprano.

0

La respuesta fácil es Subversion junto con Tortoise SVN.

He usado Subversion con Visual Studio, y lo he implementado con un proyecto existente. Hay un plugin gratuito de Visual Studio llamado Ankh, que utilicé con cierto éxito. Sin embargo, he tenido algunos problemas donde Ankh se niega a mantenerse sincronizado con el estado real de los archivos como se refleja en los metadatos .svn (hacía cosas como insistir en que un archivo necesitara ser actualizado cuando la tortuga me mostrara que estaba actualizado) En estos casos, un reinicio visual del estudio solucionó los problemas, pero eso es doloroso y tedioso para mí.

Actualmente, dejé de usar Ankh y simplemente trabajo mi proyecto de forma normal en VS y luego uso Tortoise y Windows Explorer para verificarlos. Esto funciona a la perfección. Ningún VS se actualiza o reinicia necesario.

0

1) Cree un nuevo repositorio: puede crearlo en el servidor de prueba y luego transferirlo a un servidor/NAS dedicado si le facilita las cosas. 2) Importe todo su código fuente existente en el repositorio. 3) Puede crear utilizando la herramienta de línea de comandos 'svn' (y sus herramientas relacionadas, como svnadmin) un archivo por lotes que automatizará el proceso de carga e implementación (este último combinado con el compilador, por supuesto).

Puede encontrar más información aquí: SVN book - acaba de empezar a leerlo - que no es necesario leerlo todo para iniciar y obtener SVN en ejecución. MSBuild - una plataforma de automatización de compilación por microsoft, aunque puede ser una exageración, dependiendo del tamaño de su proyecto.

Si tiene Visual Studio en la misma computadora que el archivo de proceso por lotes, you may use it to compile your solution, aunque sospecho que tendrá problemas de escalado en el futuro.

0

El control y la implementación de la versión son dos cuestiones diferentes (aunque un buen sistema de control de versiones puede hacer que la implementación sea un proceso más consistente y reproducible). Una vez que haya configurado su servidor de control de versiones, puede usar un conjunto de archivos de script/lote simples para automatizar la verificación del código y su implementación en el servidor.

7

No he visto a nadie hacer frente a esta parte de su pregunta/mensaje:

¿Existe una herramienta que permitirá automatizar la carga a la prueba, entonces el despliegue a los servidores de juego?

Una sorpresa es que Subversion crea carpetas ocultas .svn en su copia de trabajo. Una de las soluciones es usar el comando svn export. Eso hará una copia de su repositorio en otro directorio sin las carpetas .svn.

Por lo que sé, no hay una herramienta automatizada para esto. Se puede crear un archivo por lotes que ejecute el comando svn export así:

svn export C:\MyReporitosy\Path C:\DestinationPath 

basta con incluir esto como parte de su proceso de implementación. Asegúrese de implementar su código desde este directorio exportado y no su copia de trabajo. Deberías estar bien entonces.

2

No se requiere servidor SVN.
Uso tortuga Mercurial http://sourceforge.net/project/showfiles.php?group_id=199155

Configuración repo local de
1) Descargar e instalar
2) Abra una ventana del explorador al directorio base de proyectar
3) Haga clic en -> TortoiseHG -> Crear repositorio Aquí -> Ok
4) Haga clic derecho -> HG Commit ...
5) Ingrese cometer comentario, seleccione los archivos que desea realizar un seguimiento, y haga clic en Confirmar repo remota

la instalación a través de archivos compartidos (otros métodos de transporte disponibles)
1) Abrir ventana del explorador a la carpeta remota
2a) Derecho -Haga clic aquí -> TortoiseHG -> clonar un repositorio
2b) Como alternativa, simplemente copia tu repositorio local sobre

actualización remota de recompra después de cometer locales
1) Abrir ventana del explorador a la carpeta remota
2) Haga clic en -> TortoiseHG -> Sincronizar
3) Seleccione "Actualización a la nueva punta" en el menú pull
4) Introduzca la ruta a tu repositorio local en la "Ruta remota:" cuadro de entrada 5) Haga clic Tire

0

para añadir a las respuestas anteriores, me gustaría recomendar también lo obvio (pero deben ser explicitados) consejos:

  • elegir un estado estable de su proyecto para importar en su repositorio (cualquier herramienta usted elige)
  • crear inmediatamente una etiqueta (o etiqueta en SVN), una vez que se realiza la importación y se 'marca' (como '¿compila?', '¿Tenemos todos los archivos de configuración necesarios?', ...)
  • piensa en los diferentes 'esfuerzos de desarrollo' que necesitarás hacer durante el ciclo de vida de este proyecto, y eso le dará una buena idea de cómo deberían ser sus ramas.
    (rama de mantenimiento para una versión antigua ya en producción, mientras que su están desarrollando la próxima versión, fusionar la rama de aislar fusiones complicados, ramas de conexión, ...)

Ahora, tenga cuidado:

¿Hay alguna herramienta que automatice la carga de la prueba y luego la implementación en los servidores en vivo?

Esa parte de su pregunta se refiere a un 'gestión de la liberación' del proceso, y que es muy diferente que 'la gestión de versiones'.
No estoy seguro de que la herramienta de versión que elija pueda ayudar activamente. Especialmente cuando considera que no debe haber una herramienta de control de versiones en un servidor de producción (para mantener al mínimo la dependencia de un servidor de producción con cualquier herramienta: solo debe permitirse la herramienta de supervisión e informes, además del curso de su programa - aquí un servidor web, por ejemplo -)

1

Me pregunto por qué has elegido Subversion? Si su proyecto no utiliza ninguna vc, puede considerar usar Mercurial o Git.

Su punto más fuerte es que no necesitan un repositorio central, lo que significa que los programadores pueden verificar su proyecto, ir a su casa, trabajar (sin tener que tener conexión con sus servidores) y al día siguiente vuelve a la oficina y sincroniza sus repositorios.

Si SVN no es un requisito mayor, recomiendo considerar cualquiera de los dos sistemas dvc.

0

además de todos los otros comentarios sobre los aspectos prácticos de conseguir el proyecto bajo control de código fuente me animo a echar un vistazo a Streamed Lines: Branching Patterns for Parallel Software Development como guía a la línea de código y las políticas de ramificación - podría ahorrar algo de re-trabajo posterior.

también Eric Sink tenían una gran colección de mensajes introdcing los diversos conceptos de control de código fuente - Source Control HOWTO

0

recientemente he empezado a amar a la simplicidad de bazar para resolver el problema de iniciar el control de versión tras ya haber cortado en una aplicación por un momento.

Con bazar En realidad, sólo unos pocos comandos simples: 1) bzr init 2) bzr add [los archivos que le interesan] 3) bzr commit

en cuenta que esto no instalación cualquier repositorio central Pero puedes hacer eso también.

En cuanto a usarlo como una herramienta de implementación estoy bastante seguro de que leí algo al respecto no hace mucho tiempo. La documentación es realmente buena de todos modos.

-1

Uso mercurial en mi escritorio y me encanta. Crear el repositorio es muy fácil ...

hg init /path/to/repository 

Añadir los archivos ...

hg add /folder/pattern 

OR 

hg add FILE 

A continuación, sólo se compromete ...

hg commit 

Y ya está en marcha y funcionando .

La otra gran cosa es cuando quiero sincronizar con mi portátil es que ...

hg pull //desktop_name/path/to/repo/ 
hg update 

Lo que más me gusta de la subversión es el pluggin para Visual Studio, me quedo en la parte superior de mis actualizaciones más cuando los íconos de estado me están mirando a la cara todo el tiempo. El plugin definitivamente puede compensar la necesidad de configurar el repositorio svn si va a trabajar mucho con el proyecto.

0

La pregunta está claramente en Subversion (SVN es el alias).

Estos son los pasos:

1) Create a New Repository (if needed, if using VisualSVN Server then very easy) 
2) Right click on the Folder of which you want to put the folders and files into your repository 
3) With having the right click menu go to TortoiseSVN 
4) Choose IMPORT 
5) Place in trunk (best practice) 

e.g. https://computername:8443/svn/MyCoolCode/trunk 
+0

Use MSBuild con Jenkins si está utilizando .NET y quiere herramientas populares gratuitas para compilaciones y automatización –

4

+1 para la respuesta de Matt Howell.

No sé cuántas veces he agregado un nuevo proyecto al crear el directorio en el repositorio, Importar el nuevo proyecto en él, luego volver a verificarlo. Esta es la razón por la respuesta de Matt es mejor:

  1. creo un proyecto llamado Fred y hacer algún trabajo

  2. puedo crear un directorio en el SVN repo, y la importación FRED en ella.

  3. Pero el directorio FRED aún no está bajo control de código fuente - le falta.svn files, entonces necesito verlo, en un nuevo directorio, llamémoslo FRED-NEW, recreando todos los archivos

  4. Necesito eliminar FRED, dejándome algo nervioso de que se haya perdido o corrompido en el camino .

Como dice Matt, echa un vistazo a un paso anterior, mientras que la carpeta en el repositorio SVN sigue vacío:

  1. Crear un directorio en el SVN y comprobar que funciona en FRED-NUEVO.

  2. Copia FRED-NEW/Svn en FRED/

  3. Haga clic en Añadir todos los archivos. FRED ahora está bajo control de fuente sin volver a crear ni eliminar.

Aún mejor:

  1. Crear un directorio en el SVN y antes de la adición de archivos en él, compruebe el directorio vacío a cabo DIRECTAMENTE A FRED.

  2. Haga clic con el botón derecho en Agregar todos los archivos.

Además, si usted está utilizando CLI y no pensó en esto hasta después de cometer los nuevos archivos, ver la respuesta de alroc a continuación: --force al momento de pagar en FRED.

+0

Ni siquiera tiene que hacer mucho, al menos en la estación de trabajo donde realiza la importación. Use una [importación in situ] (https://subversion.apache.org/faq.html#in-place-import) y convierta ese directorio en una copia de trabajo directamente. Otros usuarios todavía tendrán que verificar nuevos WC y reemplazar sus copias existentes. – alroc

-1

La pregunta se centró claramente hacia un proyecto existente. Todavía no he encontrado una respuesta adecuada en este hilo y jugué hasta que tuve la solución. La molestia se produce cuando finaliza la compra, como se describe en muchas respuestas, y termina con una segunda carpeta versionada, su proyecto existente permanece sin versión y es reacio a copiar/pegar y/o renombrar sus carpetas.

La solución a este problema es el siguiente:

Suponga que tiene un montón de proyectos en el PC1, todo recogido como subcarpetas de una carpeta denominada "Proyectos" y que desea la versión de todos ellos en un repositorio. Luego, desearía verificarlo en la PC2 con la misma estructura de carpetas. A continuación, haga lo siguiente:

  1. crear una carpeta para su repositorio en la unidad de red y asegúrese de que se denomina "Proyectos", es decir, el mismo nombre que la carpeta principal de su desarrollo proyecta. Por ejemplo, cree una carpeta como X: \ Repository \ Projects en una unidad de red.
  2. Haga clic derecho en esta carpeta y elija TurtoiseSVN -> Crear repositorio aquí
  3. Haga clic derecho en su carpeta de desarrollo "Proyectos" en PC1 (su proyecto existente) y presione TurtoiseSVN -> Importar. Elija el repositorio correcto con el nombre "Proyectos" (en caso de que ya tenga otros repositorios en la unidad de red). Ahora sus proyectos están a disposición para otras PC.
  4. Crea una carpeta principal en PC2 donde quieras tener la carpeta "Proyectos".
  5. Haga clic derecho en este Carpeta principal en PC2 y elija SVN Checkout. Los proyectos ahora están disponibles en PC2.
  6. A partir de ahora, utilice "confirmar" para almacenar los cambios en el repositorio y "actualizar" para obtener la última versión del repositorio.
+0

Solo necesitaba hacerlo nuevamente y este procedimiento funciona perfectamente. Las personas que lo degradaron por favor explique lo que está mal. – alrts

Cuestiones relacionadas