Herramienta de gestión de archivos de puntos, para controlar qué archivos de puntos en el trabajo y en casa

Tengo varios entornos diferentes en los que trabajo y varios conjuntos diferentes de archivos de puntos que uso en cada uno.

Caso de uso

Considere el ejemplo (escenario simplificado). Tengo 3 ambientes:

  • escritorio de trabajo
  • servidor de trabajo
  • escritorio de casa

y tengo algunos dotfiles, que quiero replicar en diferentes entornos.

  • .tmuxrc--> escritorio de trabajo , servidor de trabajo , escritorio de casa
  • .fish/--> hogar-escritorio
  • .subversion/--> escritorio de trabajo , servidor de trabajo
  • Una diferente .zshrcpara cada escritorio de trabajo , servidor de trabajo y escritorio doméstico
  • uno .vimrcpara escritorio de trabajo y servidor de trabajo , y otro .vimrcpara escritorio doméstico

Más tarde, me gustaría cambiar las cosas para tener uno .vimrcpara todas partes (cuando actualice mi homeone para usar vundle y rompa la compatibilidad con python de vim en el trabajo).


Requisitos:

  • Debe admitir la especificación de diferentes archivos para diferentes entornos.

  • Debe ser compatible con algunos archivos que se comparten en algunos entornos

  • Debe evitar que tenga que copiar archivos manualmente y luego vincularlos de nuevo

  • Debe comprometerse con el control de versiones cuando se activa

  • Debería extraerse del control de versiones cuando se llama a una actualización.

  • Debería admitir git

  • Sería bueno si admitiera otro control de versión (como SVN y Hg)

  • Sería bueno si su archivo de configuración para especificar qué archivos llegaron a qué entornos tomaron una lista de nombres de host, pero existen otras soluciones.

  • No importa si depende de algo (muchas de las herramientas de administración de .dotfile que vi anunciadas no dependen de nada más que del shell)

  • Debe funcionar en todas las versiones de Linux (pero realmente no me importa Mac).

  • Debe ser gratuito y de código abierto.

Observé detenidamente RCM , pero no estoy seguro de que cumpla con mis requisitos de control de versiones. También eché un vistazo más breve a GNU STOW y Dotbot .

Respuestas (2)

Hay vcsh que hace una magia loca con múltiples repositorios de git que tienen su hogar como directorio de trabajo, y los directorios de sus git están separados. Pero parece demasiado complejo para mis necesidades, solo mantengo un repositorio de git en otro lugar de mi sistema y simultaneo manualmente lo que necesito.

El wiki de arch linux tiene un gran artículo sobre dotfiles .

esta respuesta no responde directamente a si el programa cumple o no con los requisitos enumerados
No lo he usado, pero me parece que lo haría. Tendría que organizar sus dotfiles en diferentes repositorios, como dice en el archivo Léame. Luego puede elegir qué repositorios van a qué máquinas. vcsh lo ayuda a realizar acciones en todos los repositorios en una máquina, por lo que vcsh pullactualizará sus archivos de puntos.
El archivo Léame tiene muy poca información. Los documentos dejan un poco más claro cómo usarlo.
aquí en Software Rec SE. preferimos fuertemente las respuestas que vienen de la experiencia.
Aquí en internet preferimos a la gente agradable. Es lo que tengo. Si no te gusta sigue adelante.
Hola amigo, relájate, supuse que eras nuevo y no lo sabías, así que pensé en informarte (en lugar de votar negativamente). Debería haber publicado los metaenlaces, pero tenía prisa. No se requiere experiencia pero es preferible. Vea estas publicaciones: meta.softwarerecs.stackexchange.com/questions/86/… meta.softwarerecs.stackexchange.com/questions/326/… y siempre: meta.softwarerecs.stackexchange.com/questions/356/… No quiero con la intención de parecer abiertamente brusco (supongo que lo hice)

¿Por qué no usar secuencias de comandos bash o python simples? Podría tener en su VCS uno y una variante de cada uno de los archivos .que necesita controlar, todo en un solo directorio, y dos scripts simples save_env y set_env más un archivo .env en cada sistema home.:wdesk.wserv.

  • set_envestablecería el .env y sobrescribiría los .files con el env . versiones y probablemente desee activar una nueva lectura de ellas con source o el equivalente para el archivo en cuestión .
  • save_envusaría el valor .env para sobrescribir el env apropiado . archivos con los actuales. Luego, puede revisar cualquier cambio y comprometerse con su VCS.

Ejecutando sus requisitos:

  • Admitirá casi todos los archivos que pueda necesitar
  • Admitirá archivos compartidos
  • Evita el 95% de las operaciones manuales
  • Puede comprometerse/retirarse de VCS si es necesario
  • Podría tomar una lista de nombres de host
  • Funcionará en la mayoría de las variantes de Linux y también debería funcionar en Mac.
  • Gratis: código abierto si lo desea.
  • Flexible
  • Rápido
  • Simplemente no es bonito y tienes que trabajar un poco más para configurarlo.
Consulte el requisito 3: debe evitar que tenga que copiar archivos manualmente y luego vincularlos de nuevo. Crear uno propio es siempre una opción para la mayoría de las cosas, pero preferiría no hacerlo.
manualmente, una secuencia de comandos que lo hace por usted no es manual: ejecutar el suyo propio suele ser la mejor manera si tiene requisitos personalizados.
tendrá que informar a la herramienta dónde quiere qué archivos de todos modos, entonces, ¿por qué no poner esa información en un script? Se trata de la misma cantidad de trabajo.