Cómo organizar un repository SVN para un código C ++

Soy nuevo en SVN y quiero enviar 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 cargar 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?

Actualizar

Entonces, después de verificar las respuestas, hice las cosas un poco más claras. Una estructura de carpeta habitual es la siguiente para un proyecto:

/trunk /branches /tags 

Pero también encontré una estructura similar que me gustó mucho, 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 less me gusta para el código de aplicaciones multimedia.

ACTUALIZACIÓN 2

Esta actualización es solo para explicar cómo estoy creando mi repository. 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 (file: /// c: / svn_repos) para que automáticamente la estructura se cree en svn_repos, sin la carpeta structure_svn .

Quiero destacar esto porque la carpeta en la que hace clic derecho para importar nunca aparecerá. Me di count 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.

Así es como estructurar mi tree en un proyecto de progtwigción (principalmente desde una perspectiva de C / C ++):

  • /
    • src – Archivos de origen y encabezado escritos por mí mismo
    • ext – Dependencias externas; contiene bibliotecas de terceros
      • libname-1.2.8
        • include – Encabezados
        • lib – Archivos lib comstackdos
        • Donwload.txt – Contiene un enlace para download la versión utilizada
    • ideGuardo los files del proyecto aquí
      • vc10organizo files de proyecto por IDE
    • bin – Los binarys comstackdos van aquí
    • obj – Los files de compilation del comstackdor
      • gcc : si el tamaño de tu proyecto lo justifica, crea una carpeta separada para cada file del comstackdor
    • doc – Documentación de cualquier tipo
    • README
    • INSTALAR
    • PROCESO DE COPIAR
    • makefile: algo para automatizar la generación de files de proyectos IDE. Prefiero CMake.

Algunas notas:

  1. Si estoy escribiendo una biblioteca (y estoy usando C / C ++) voy a organizar mis files de origen primero en dos carpetas llamadas "src / include" y "src / source" y luego por module. Si se trata de una aplicación, entonces voy a organizarlos solo por module (los encabezados y las fonts irán en la misma carpeta).

  2. Los files y directorys que enumeré arriba en cursiva no los agregaré al repository de código.

Editar: Tenga en count que estoy usando Mercurial, no SVN, por lo que la estructura de arriba está adaptada para ese sistema de control de versiones. De todos modos, veo en tu actualización que ya encontraste la que te gusta.

Un gran paso adelante es asegurarse de que todos sus proyectos realicen construcciones fuera de la fuente, es decir, coloque el file temporal en $ TEMP y coloque todos los files de salida en un directory bin / lib dedicado. Si se hace correctamente, esto te deja con directorys fuente que contienen solo fuente. ¿Qué hay en un nombre? Además de los files fuente "puros", asegúrese de que todo lo que se necesita para comstackr el código fuente esté en el repository: files / generadores de proyectos, resources.

Una vez que hayas colocado eso correctamente, hay una gran probabilidad de que solo tengas que colocar algunos files típicos generados por el proyecto (como * .suo para Visual Studio) en la list de ignorados de SVN, y estás listo para la confirmación.

Básicamente puedes poner en svn justo lo que quieras. El único estándar que puede considerar seguir aquí es el layout del repository estándar: consulte aquí :

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

  • Cada class en un encabezado ( .h) y un file fuente ( .cpp) dentro del mismo directory
  • El encabezado y el origen están separados (por lo que tiene una carpeta especialmente para los encabezados). Esto es útil para las bibliotecas, de modo que los proyectos de capa superior puedan usar esta ruta.

Luego necesita una carpeta para libs de terceros, otra para los files de destino y otras, como files de compilation o documentation.

¡Tienes una buena explicación en el siguiente enlace si eres novato con svn!