Pregunta

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


El aspecto más importante de mi pregunta está arriba. 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 interesado principalmente en la carpeta de inicio y las convenciones de línea de comandos que generalmente se encuentran en UNIX, no en Windows (a menos que use cygwin).

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

En particular, me pregunto qué trucos o consejos podrían tener para hacer que los proyectos sean de fácil acceso a través de la línea de comandos y fáciles de navegar mientras se apartan cuando necesita concentrarse en un proyecto específico.

¿Hay convenciones útiles que le resulten útiles para mantener ordenados varios repositorios de origen? En particular con git, ¿cómo mantiene organizadas las diferentes ramas y repositorios relacionados? ¿Sueles eliminar copias de trabajo y actualizas por completo desde el control de origen? ¿Qué guardas y por qué? ¿Y cómo maneja los espacios de nombres y las rutas si un proyecto en particular tiene muchas dependencias de ruta que debe asignar a su propia estructura de carpetas de inicio?

¿Qué pasa con las carpetas bin y las bibliotecas comunes? ¿Cómo gestiona 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 sistemas experimentados, ¿qué funciona por experiencia y qué no funciona?

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

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

¿Mueve rutinariamente proyectos fuera de su espacio de trabajo y los vuelve a importar desde el control de origen? ¿Cómo evitar la acumulación de cruft mientras se reduce la necesidad de recrear entornos de proyecto con demasiada frecuencia?

¿Cómo limpia o elimina todo su espacio de trabajo para que pueda comenzar con una pizarra en blanco, sin perder el acceso al valioso código fuente y las eficiencias organizativas obtenidas de proyectos anteriores?

¿Fue útil?

Solución

Mantengo el software que he escrito en un directorio especial, que lleva el nombre de mi sitio web principal, llamémoslo "malabarismo" en aras de la discusión. Tendría ~ / malabares / software / dentro del cual es un subdirectorio para cada proyecto que escribo (generalmente administrado con git) y ~ / malabares / sitios web / bajo el cual tengo un subdirectorio para cada dominio del sitio web, ya sea html sin formato o algo así como webgen o staticmatic.

Para ayudarme a saltar entre ellos, utilizo 'apparix' que se vincula muy bien con bash.

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

Así que ahora desde cualquier lugar puedo hacer esto

$ to wolfsbaen

Para el software que descargué, tengo ~ / software / y dentro de eso:

  • archivos - para mantener tarballs fuente descargados
  • documentación - para documentos HTML descargados y libros PDF
  • pirateo - para proyectos descartables para probar nuevas ideas o bibliotecas de software
  • proyectos: para proyectos en los que colaboro, pero no comencé yo mismo
  • simple: para programas bash / python / ruby ??que pueden ejecutarse dentro de sus directorios desempaquetados
  • subversiones: para todos los pagos de control de revisión: cvs, svn, git, hg, etc.
  • desempaquetado - para tarball desempaquetados antes de compilarlos

También tengo ~ / bin para scripts ú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 mi espacio de trabajo. Hago nuevas ramas mientras estoy en el directorio de trabajo, y guardo los cambios recientes si tengo que cambiar de rama de repente. También mantengo un clon de repositorio desnudo de toda mi fuente de software y sitio web:

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

'Empujo' a esto al final de cada fase de trabajo. Esto hace que / srv / git sea una opción obvia para realizar copias de seguridad.

Otros consejos

No voy a responder todas tus preguntas; Sin embargo, diré que uso SVN y sigo sus convenciones para proyectos. Entonces tengo una carpeta llamada:

d:\development

Y dentro de eso, todos mis proyectos son como subcarpetas (quizás 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 centro de medios: P), y en ella tengo SVN ejecutándose bajo apache, y también trac , para gestionar tareas y errores en cada uno. También tengo CC.net, para compilaciones.

  

¿Cómo organizas tu personal   espacio de trabajo para sus proyectos de código en   su carpeta de inicio?

En cuanto a las cosas de UNIXy, coloco las carpetas de proyectos en ~ / dev. Por lo general, terminaré revisando algo de Subversion en esas carpetas de proyectos.

  

Y lo que más te da   flexibilidad para trabajar en múltiples   proyectos a la vez?

Para proyectos web, mantener un conjunto de Apache hosts virtuales basados ??en nombres 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 también es clave para mi flujo de trabajo de desarrollo local. Si necesito cambiar de marcha a otro proyecto, simplemente presionaré Ctrl-a, c y tendré una nueva terminal aislada para usar.

Me gustaría compartir mi propia experiencia en la organización del sistema (aunque la pregunta es demasiado antigua, espero que esto pueda ayudar a alguien o podría obtener mejores sugerencias)

Sigo cambiando las distribuciones de Linux y a veces uso Windows para trabajar. Así que particioné HDD en 4 unidades.

  1. ventanas
  2. linux
  3. principal
  4. extra


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

  • Documentos
    • todos los documentos que almacené (por ejemplo, libros, libros blancos, etc.)
  • Imágenes
  • Música
    • canciones
    • listas de reproducción (actualmente usando banshee)
  • Películas
  • Trabajo
    • oficina
      • proyecto de oficina 1
      • proyecto de oficina 2
    • personal
      • público (principalmente proyectos que publiqué en github)
        • proyecto personal 1
        • proyecto personal 2
      • privado
        • proyecto personal 3
        • proyecto personal 4
    • recursos
      • mayormente repos descargados de github o cualquier otro código fuente o material relacionado
  • Rasguño
    • Básicamente todo va aquí primero en caso de que no sepa dónde ponerlo o tenga prisa. Más tarde los clasifico según la necesidad
    • También configuro enlaces suaves en este directorio a varios otros directorios a los que accedo con frecuencia. La razón de esto es que configuré la carpeta scratch como Desktop
  • Volcado
    • Cosas que ya abordé pero que tengo que mantener durante algún tiempo y luego eliminar
    • Sigo limpiando esta carpeta en el tiempo libre
  • Dropbox
    • Pocas cosas a las que accedo desde múltiples dispositivos se almacenan en Dropbox. Pero debido a problemas de privacidad de Dropbox, no puedo almacenar todo en él. Y todavía estoy descubriendo la solución ideal para esto. Intenté ejecutar alternativas de código abierto de Dropbox en mis propios servidores pero manteniéndolas en hassel. (También como soy de uno de los países del tercer mundo, tengo que desconectarme muchas veces)
    • Actualmente estoy implementando una aplicación web simple para almacenar cosas como citas / 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 un nuevo sistema operativo, primero cambio las carpetas predeterminadas y las ubicaciones marcadas como Escritorio, Música, Documentos, etc. a las carpetas de la unidad principal y la configuración de Dropbox. Configuré la carpeta scratch como escritorio
Para los archivos de configuración (editor / shell, etc.), puede usar la unidad principal / dropbox / dotfiles.
También en la nota al margen, uso zsh / vim / emacs con algunos complementos interesantes para hacerme más productivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top