tag - ¿Cómo usar Github para gestionar archivos de puntos?
git versioning (7)
Actualiza / sincroniza tus archivos de puntos con los comandos git push/pull
(GitHub actúa como repositorio ''central''). Cuando se trata de symlinking dotfiles escribí un artículo al respecto. Échale un vistazo: gestiona tus archivos de puntos con facilidad .
Guardé mis archivos de puntos en github, con muchos dolores, debido a la falta de automatización. Tengo que actualizarlo yo mismo.
¿Hay alguna forma de autoinstalar / actualizar / sincronizar archivos de puntos? Quiero decir, en un servidor nuevo, descargo archivos de puntos y ejecuto un script de install
para copiar archivos de puntos en locales. Después de un tiempo, puedo updateToRemote
un script updateToRemote
para enviar cambios locales al repositorio remoto, y en otro servidor, puedo updateToLocal
un script updateToLocal
para llevar los cambios remotos al local.
Algo como eso.
Bueno, son tres años más tarde y nadie ha encontrado nada bueno, así que probé este problema. Es independiente de la plataforma y de la shell, sin dependencias que no sean la shell compatible con bourne que tenga disponible (bash, zsh, ksh, etc.). Funciona en mac, linux, y windows:
Sincronizará automáticamente los cambios en tus archivos de puntos con github y múltiples máquinas, junto con muchas otras características.
Encontré una forma interesante de usar git simple para administrar tus archivos de puntos, sin necesidad de enlaces simbólicos. De esta manera, deberías poder empujar y tirar de la forma habitual:
Preparar
git init --bare $HOME/.myconf
alias config=''/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME''
config config status.showUntrackedFiles no
donde mi directorio ~ / .myconf es un repositorio simple de git.
Uso
Los comandos de git habituales se pueden usar con el alias de git, por ejemplo, config o lo que sea que elija.
config status
config add .vimrc
config commit -m "Add vimrc"
config push
Beneficios
- Sin herramientas adicionales
- sin enlaces simbólicos
Más infos
- Fuente: https://news.ycombinator.com/item?id=11071754
- Artículo con más información: https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/
Estoy usando el repositorio git (github) y el script bash para crear enlaces simbólicos. Pero ahora encontré esta herramienta que parece ser más poderosa. Compruébalo: https://github.com/shanx/python-dotfiles .
La idea principal es tener un directorio separado (generalmente llamado .dotfiles) con todos los archivos de puntos reales que desea mantener en git y tener enlaces simbólicos en el directorio de inicio.
Ya se ha trabajado mucho para este enfoque, por lo que le recomendaré que compruebe DFM (administrador de archivos de puntos):
- Aquí está mi selección de dotfiles usando dfm (puede considerarlo un ejemplo): dotfiles de vicente
- Github repositorio oficial del sitio DFM
La principal fuente de información sobre dotfiles es dotfiles.github.io
.
Hace referencia a publicaciones de blog como Using Git y Github para administrar tus archivos de puntos , basado en un método de enlace simbólico.
Para empezar, pondremos todos nuestros archivos de puntos en una carpeta llamada archivos de puntos, como por ejemplo:
/home/smalleycreative/dotfiles/vimrc
.
Luego, simplemente haremos un enlace simbólico a ellos desde nuestro directorio principal.
Jaime menciona el tutorial de Atlassian " La mejor manera de almacenar tus archivos de puntos: un repositorio de Git simple "
La técnica consiste en almacenar un repositorio
$HOME/.myconfig
Git en una carpeta "lateral" (como$HOME/.cfg
o$HOME/.myconfig
) usando un alias especialmente diseñado para que los comandos se ejecuten en ese repositorio y no en el habitual.git/
local carpeta, que podría interferir con cualquier otro repositorio Git alrededor.
(y luego la carpeta dotfiles se gestiona como un repositorio git)
Las respuestas anteriores son excelentes y son exactamente como lo haría en "sistemas operativos reales".
Me encontré con un problema con esto en un sistema operativo comercial conocido que usa cygwin / msys, por lo que el uso de enlaces simbólicos a veces puede ser problemático con los puertos "nativos" de algunos de mis programas favoritos.
Para solucionar este problema, experimenté simplemente haciendo que la carpeta $ HOME fuera un repositorio de git directamente. Después de algunos fallos, encontré que la clave está en el archivo .gitignore.
Así que la configuración que he estado usando por un tiempo se creó al hacer de $ HOME un repositorio, crear un archivo .gitignore y agregar los archivos "dotfiles" requeridos individualmente. También agregué un repositorio en una unidad de copia de seguridad (z: en este caso) como flujo ascendente solo para obtener las copias de seguridad automáticas. Si su carpeta ya tiene una copia de seguridad, agregar una conexión ascendente es una complicación innecesaria. Entonces, asumiendo que "/z/Backups/Dotfiles.git" es un repositorio "simple" preexistente, en el shell msys, los pasos para configurar las cosas son:
$ cd $HOME
$ git init
Initialised empty Git repository in $HOME
$ git add .bashrc .emacs .gitconfig # for example
$ git commit -m "Initial import of dotfiles"
[master (root-commit) xxxxxxxx] Initial import for dotfiles
3 files changed, xxx instertions(+)
create mode 100644 .bashrc
create mode 100644 .emacs
create mode 100644 .gitconfig
# The following two lines just add an "upstream" purely for backup purposes.
$ git remote add origin /z/Backups/Dotfiles.git
$ git push -u origin master
<< snip >>
A continuación pongo lo siguiente en $ HOME / .gitignore:
# First exclude everything.
*
# then re-include all "dotfiles"
!/.*
# then a bunch of specific excludes as they are more-or-less "cache" data rather than configuration.
/.bash_history
/.dbus-keyrings/
/.emacs.d/
/.gimp-2.8/
/.git/
/.gitk
/.idlerc/
/.lesshst
/.saves/
/.thumbnails/
Finalmente, los siguientes comandos (disculpas, no capturé la salida de estos) agregan el .gitignore en sí mismo al repositorio:
$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git push
Ahora, cualquier archivo "normal" que agregue a su directorio de inicio será ignorado por el repositorio de archivos de puntos, pero todos los archivos de puntos nuevos aparecerán en estado git, por ejemplo:
$ cd $HOME
$ touch NewFile.txt
$ git status
On branch master
Your branch is up-to-date with ''origin/master''.
nothing to commit, working directory clean
$ touch .funkychicken
$ git status
On branch master
Your branch is up-to-date with ''origin/master''.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.funkychicken
nothing added to commit but untracked files present (use "git add" to track)
Hasta ahora, esto ha funcionado bien, incluso con algunos subdirios que son su propio repositorio git (no relacionado). A veces hay "peculiaridades" con subdirecciones que no son git, pero hasta ahora nada problemático.