2009-09-12 19 views
19

¿Cómo se organiza el espacio de trabajo personal para los proyectos de código en la carpeta de inicio? ¿Y cómo mantiene el espacio de trabajo eficiente para manejar proyectos múltiples al mismo tiempo?¿Cómo se organiza el espacio de trabajo de código y la carpeta de inicio?


El aspecto más importante de mi pregunta es anterior. Puede dejar de leer a menos que desee abordar subpartes específicas del tema. A continuación hay varias preguntas relacionadas sobre la organización de espacios de trabajo. No es necesario abordarlos a todos. Interesado en escuchar incluso respuestas parciales a algunas de las siguientes preguntas relacionadas. Esta pregunta es principalmente en el contexto de UNIX y OS X. Los usuarios basados ​​en Windows pueden ofrecer sugerencias, pero estoy más interesado en la carpeta de inicio y las convenciones de línea de comandos que generalmente se encuentran en UNIX no Windows (a menos que use cygwin).

En particular, ¿qué tipo de estructura de carpetas ¿Le resulta útil cuando el mantenimiento de múltiples proyectos de código al mismo tiempo? Y cuando está descargando una variedad de proyectos de código fuente abierto, ¿cómo se mantienen organizados todos los árboles fuente sin saturar demasiado su espacio de trabajo?

En particular, me pregunto qué trucos o consejos pueden tener para facilitar el acceso a los proyectos a través de la línea de comandos y fácil de navegar mientras se quitan de en medio cuando necesita enfocarse en un proyecto específico.

¿Hay convenciones útiles que encuentre útil para mantener diversos repositorios de origen ordenada? En particular con git, ¿cómo se organizan las diferentes sucursales y repositorios relacionados? ¿A menudo soplas copias de trabajo y actualizas completamente por completo desde el control de la fuente? ¿Qué guardas y por qué? ¿Y cómo se manejan los espacios de nombres y las rutas si un proyecto en particular tiene muchas dependencias de ruta que se deben asignar a la estructura de su propia carpeta de inicio?

¿Qué pasa con las carpetas bin y las bibliotecas comunes? ¿Cómo se maneja esto si necesita crear muchos entornos de desarrollo potenciales para varios proyectos (quizás diferentes versiones de PHP, Ruby, Perl, servidores web, compiladores, etc.)?

Para los Administradores de sys experimentados por ahí lo que funciona de la experiencia y lo que no funciona?

¿Cómo lo mantienes lo más simple posible pero no demasiado simple?

¿Y qué le da la mayor flexibilidad para trabajar en múltiples proyectos a la vez?

Cómo se mueve de forma rutinaria proyectos fuera de su espacio de trabajo y volver a importar de control de código fuente. ¿Cómo se evita la acumulación de cruces y se reduce la necesidad de recrear entornos de proyectos con demasiada frecuencia?

¿Cómo limpiar o soplar a toda su área de trabajo para que pueda comenzar con una pizarra en blanco, sin perder el acceso al código fuente valiosa y la eficiencia organizativa adquirida en proyectos anteriores?

+1

Casi todas las oraciones que ha escrito terminan con un signo de interrogación. Te sugiero que condenes tu publicación en una pregunta manejable :) –

+2

Esta publicación podría ser un buen candidato para la wiki de la comunidad. – Amber

+0

la pregunta en la sala de chat fue "¿alguna vez has usado git?" Y la respuesta fue no, así que si, como yo, pensabas "volar tu repositorio? Limpiar el árbol de compilación?" entonces es por eso. Solo pensé que aclararía por él. – jcolebrand

Respuesta

12

Guardo el software que he escrito en un directorio especial, llamado así por mi sitio web principal, llamémoslo 'malabares' por razones de argumento. Tendría ~/malabares/software/dentro de los cuales hay un subdirectorio para cada proyecto que escribo (generalmente administrado con git) y ~/malabares/sitios web/bajo el cual tengo un subdirectorio para cada dominio de sitio web, ya sea html en bruto o algo como webgen o staticmatic.

Para ayudarme a saltar entre ellos, uso 'apparix', que se relaciona bastante bien con bash.

$ cd ~/juggle/software/wolfsbaen 
$ bm # bookmarks this with apparix 

Así que ahora desde cualquier lugar que pueda hacer esto

$ to wolfsbaen 

Para el software que he descargado, tengo ~/software/y en su interior que:

  • archivos - Mantener descargado fuente tarballs
  • documentación - para documentos HTML y PDF descargados
  • hack - f o proyectos de usar y tirar para probar ideas o bibliotecas de software nueva
  • proyectos para proyectos de I - colaborar en, pero no empezaron a mí mismo
  • sencilla - para los programas de fiesta/Python/Ruby que pueden funcionar dentro de sus directorios sin envasar
  • subversiones - para todas las cajas de control de revisión: CVS, sVN, GIT, etc. hg
  • descomprimido - bolas de alquitrán para descomprimidos antes de que los compile

también tengo ~/bin de secuencias de comandos útiles que escribo y me encuentro usando todo el tiempo. Agrego esto a la RUTA en ~/.bashrc

No creo que el resto de sus preguntas realmente se apliquen tan bien a mí; excepto que con git casi nunca tengo que bombardear ninguno de mis espacios de trabajo.Hago nuevas ramas mientras estoy en el directorio de trabajo y escondo cambios recientes si tengo que cambiar de rama repentinamente. Yo también guardo un clon del repositorio desnuda de toda mi propia fuente de software y páginas web:

$ git clone --bare . /srv/git/wolfsbaen.git 

I 'git push' a esto al final de cada fase de trabajo. Esto hace que/srv/git sea una elección obvia para la copia de seguridad.

+0

Gracias Cathal. Estoy cavando git. Y su flujo de trabajo aquí tiene mucho sentido para mí. Y gracias por el consejo de "apparix". Me preguntaba cómo hacer marcadores en la línea de comando. Eso responde a una pregunta que he querido hacerle a mis amigos administradores del sistema. –

+0

Cathal, he estado teniendo problemas para configurar Apparix en OS X. Google me llevó a su respuesta. ¿Te importaría escribir una guía rápida? –

3

No voy a responder todas sus preguntas; Diré, sin embargo, que uso SVN, y sigo sus convenciones para proyectos. Así que tengo una carpeta llamada:

d:\development 

Y dentro de eso, todos mis proyectos son las subcarpetas (tal vez 20 o más). En cada uno de ellos, es

\trunk 
\branches 
\tags 

Y eso es todo.Tengo una segunda máquina aquí en casa en mi servidor (y también en el centro de medios: P), y en ella tengo SVN ejecutándose en apache, y también trac, para administrar tareas y errores en cada uno. También tengo CC.net, para compilaciones.

3

¿Cómo se organiza su espacio de trabajo personal para sus proyectos de código en la carpeta de inicio?

En lo que respecta a UNIXy cosas, coloco carpetas de proyecto en ~/dev. Por lo general, termino revisando algo de Subversion en esas carpetas de proyectos.

Y lo que le da la flexibilidad más a trabajar en varios proyectos a la vez ?

Para proyectos web, mantener un conjunto de Apache name-based virtual hosts es extremadamente útil para trabajar en múltiples proyectos simultáneamente. http://foo.localhost/ puede apuntar a ~/dev/foo/public, http://bar.localhost/ -> ~/dev/bar/public, y así sucesivamente.

GNU Screen es también clave para mi flujo de trabajo de desarrollo local. Si necesito cambiar de velocidad a otro proyecto, solo presionaré Ctrl-a, c y tendré un nuevo terminal aislado para usar.

+0

He estado usando MAMP sobre todo en OS X. Pero su consejo sobre el nombre de los hosts virtuales tiene mucho sentido. –

1

Me gustaría compartir mi experiencia en el sistema de organización (A pesar de que la pregunta es demasiado viejo, espero que esto podría ayudar a alguien o que podría obtener mejores sugerencias)

sigo cambiando distribuciones de Linux y, a veces el uso de Windows para el trabajo. Así que he dividido HDD en 4 unidades.

  1. ventanas
  2. Linux
  3. principal
  4. adicional uno


Todo mi trabajo va en tercera unidad que es NTFS, por lo que se puede acceder tanto ventanas y linux. (Es posible que necesite alguna configuración fstab para no interferir con los permisos de archivos al montar esta unidad en Linux). Ahora en esta unidad, coloco las siguientes carpetas.

  • Documentos
    • todos los documentos que almacenado (por ejemplo,libros, documentos, etc.)
  • Fotos
  • Música
    • canciones
    • listas de reproducción (En la actualidad el uso de Banshee)
  • Películas
  • trabajo
    • offic e
      • proyecto de oficinas 1
      • proyecto de oficinas 2
    • personales
      • públicos (en su mayoría proyectos que he publicado en github)
        • proyecto personal 1
        • proyecto personal 2
      • privada
        • proyectos personales 3
        • proyectos personales 4
    • recursos
      • mayoría repos descargados desde github o cualquier otro código fuente o cosas relacionadas
  • Rasca
    • Básicamente todo lo que ocurre aquí en primer lugar en caso de no sé dónde poner o estoy en prisa. Más tarde los clasifico según sea necesario
    • También establezco enlaces suaves en este directorio a varios otros directorios a los que accedo con frecuencia. La razón de esto es, puse scratch carpeta como Desktop
  • volcado
    • cosas que ya ha dirigido, pero hav para mantener alrededor por algún tiempo luego retire
    • sigo limpieza de esta carpeta en el tiempo libre
  • Dropbox
    • Pocas cosas que el acceso de múltiples Los dispositivos se almacenan en Dropbox. Pero debido a problemas de privacidad de dropbox, no puedo almacenar todo lo que contiene. Y todavía estoy resolviendo la solución ideal para esto. Traté de ejecutar alternativas dropbox de código abierto en mis propios servidores pero manteniéndolos en hassel.(Además, como soy de uno de los países del tercer mundo, tengo que salir de la red muchas veces)
    • Actualmente estoy lanzando una aplicación web simple para almacenar cosas como presupuestos/libros que me gustan. También tomo muchas notas cuando trabajo. Por ahora, los estoy almacenando en Dropbox, pero pronto los moveré a mi aplicación.

Cuando instalo nuevo sistema operativo, primero que cambiar carpetas predeterminadas y las ubicaciones marcadas como escritorio, música, documentos, etc a carpetas de la unidad principal y caja de reenvío de configuración. Establecí la carpeta scratch como escritorio
Para archivos de configuración (editor/shell, etc.), puede usar drive/dropbox/dotfiles.
También en nota al margen, uso zsh/vim/emacs con algunos complementos interesantes para hacerme más productivo.

Cuestiones relacionadas