2011-12-21 30 views
5

Soy nuevo en SVN y quiero asignar un código a SVN usando TortoiseSVN. Tengo encabezados C++ y fuente del código, pero no sé cómo organizar las carpetas de manera eficiente antes de subir la versión a SVN. ¿Alguna sugerencia sobre cómo suele ser la gente? ¿Hay alguna diferencia entre la estructura de códigos para diferentes idiomas, por ejemplo, C++ o Java? ¿Debo seguir alguna regla específica?Cómo organizar un repositorio SVN para un código C++

actualización

Así que después de comprobar las respuestas que hizo las cosas un poco más claras. Una estructura de carpetas habitual es la siguiente para un proyecto:

/trunk 
/branches 
/tags 

Pero también encontré una estructura similar que me ha gustado mucho, lo que es:

/trunk     #Keep it to developement mode always. 
    /samples   #samples of use 
    /modules   #software modules 
     /project_modName 
      /include  # .hpp files 
      /src   # .cpp files 
    /test    #unitary tests 
/branches    #experimental developements (copies of trunk at various stages) 
/tags     #estable versions 
/extras 
    /3rdparty   #libs 
    /data    #necessary data for developement 
    /doc    #documentation 
    /resources   #for window applications 

Al menos me gusta por código de aplicaciones multimedia .

ACTUALIZACIÓN 2

Esta actualización es sólo para explicar la forma en que estoy creando mi repositorio. Creé una carpeta llamada structure_svn. En el interior creé la estructura mostrada arriba. Hago clic derecho en la carpeta principal y selecciono importar. En la URL escribo la ruta de la carpeta (archivo: /// c:/svn_repos) para que la estructura se cree automáticamente en svn_repos, sin la estructura de la carpeta_svn.

Quiero destacar esto porque la carpeta en la que hace clic derecho para importar nunca aparecerá. Me di cuenta cuando lo probé, y también se explica en toturials.

El siguiente paso es dividir con éxito mi código dentro de la estructura creada.

+0

Según mi experiencia, las cosas más comunes a tener en cuenta incluyen los archivos generados automáticamente y los archivos de usuario IDE. Esas cosas que realmente no notas hasta que trabajas en un proyecto compartido. –

+1

¿Quiere decir registros de errores, por ejemplo? En realidad, estaba pensando principalmente en la estructura de carpetas y el son on, cómo nombrarlos y cómo organizarlos. –

+1

Me refiero, por ejemplo, a los archivos * .designer.cs que se generan a partir de archivos .resx. También sé que quería un diseño/nombramiento de proyecto, pero todavía estoy luchando con eso después de 5 años, así que lo mejor que puedo sugerir es mirar a su alrededor, la mayoría de los proyectos de código abierto le permite ver su control de fuente, encontrar algo que le guste y pasar de ahí. –

Respuesta

9

Así es como estructuro mi árbol en un proyecto de programación (principalmente de un C/C++ perspectiva):

  • /
    • src — archivos de origen y de cabecera escritos por mí mismo
    • ext — externa dependencias; contiene las bibliotecas de terceros
      • lib — Compilado archivos lib libname-1.2.8
        • incluyen — encabezados
        • Donwload.txt — Contiene enlace para descargar la versión utilizada
    • ide — almaceno archivos de proyecto aquí
      • VC10 — puedo organizar los archivos de proyecto por el IDE
    • bin — Binarios compilados ir aquí
    • obj — ficheros de construcción del compilador
      • gcc — Si el tamaño del proyecto lo justifica, hacer una carpeta separada para los archivos de cada compilador
    • doc — documentación de cualquier tipo
    • README
    • INSTALAR
    • COPIAR
    • makefile — Algo para automatizar la generación de archivos de proyecto IDE. Prefiero CMake.

Unas pocas notas:

  1. Si estoy escribiendo una biblioteca (y estoy usando C/C++) Voy a organizar mis archivos de origen por primera vez en dos carpetas llamado "src/include" y "src/source" y luego por módulo. Si se trata de una aplicación, entonces voy a organizarlos solo por módulo (los encabezados y las fuentes irán en la misma carpeta).

  2. Archivos y directorios que he enumerado anteriormente en cursiva No añadiré al repositorio de código.

Editar: Tenga en cuenta que estoy usando Mercurial, no SVN, por lo que la estructura anterior se adapta para que el sistema de control de versiones. De todos modos, veo en tu actualización que ya encontraste la que te gusta.

+0

Gracias, muy útil. –

+0

src sin ide no parece particularmente útil. ¿Cómo se pueden construir grandes proyectos sin ningún archivo de proyecto (ya sea un Makefile/CMakeFile/cvproj) .. – stijn

+0

@stijn Por supuesto que debe tener algún tipo de archivo MAKE presente (prefiero CMake, personalmente). Agregaré eso a la lista, para evitar confusiones. :) –

4

Un gran paso adelante es asegurarse de que todos sus proyectos se construyen fuera de la fuente, es decir, poner archivo temporal en $ TEMP y poner todos los archivos de salida en un directorio bin/lib dedicado. Si se hace correctamente, esto te deja con directorios fuente que contienen solo fuente. Lo que hay en un nombre. Además de los archivos fuente "puros", asegúrese de que todo lo que se necesita para compilar el código fuente esté en el repositorio: archivos/generadores de proyectos, recursos.

Una vez que hayas colocado eso correctamente, es muy probable que solo tengas que colocar algunos archivos generados por proyectos típicos (como * .suo para Visual Studio) en la lista de ignorados de SVN, y estás listo para la confirmación.

4

Básicamente puedes poner en svn justo lo que quieras. El único estándar que puede considerar seguir aquí es el diseño del repositorio estándar: Consulte here:

Dentro del proyecto tiene razón de que existen varias prácticas recomendadas. Y son diferentes para cada idioma. Por ejemplo, un paquete Java está organizado por espacio de nombres. En el mundo de C++ que he visto dos formas principales cómo organizarlo:

  • cada clase en una cabecera (.h ) y un archivo de origen (.cpp) dentro del mismo directorio
  • encabezado y fuente está separado (por lo que tiene una carpeta especialmente para encabezados). Esto es útil para bibliotecas, de modo que esta ruta pueda ser utilizada por proyectos de capa superior.

Luego necesita una carpeta para libs de terceros, otra para los archivos de destino y otros, como archivos de compilación o documentación.

+0

Útil. Probaré distintos enfoques y luego decidiré qué es lo que más me gusta. –

4

Tienes una buena explicación en el próximo Link si eres novato con svn !!

+0

muchas gracias, lo aprecio –

Cuestiones relacionadas