|
|
|
@ -22,6 +22,8 @@ init |
|
|
|
|
.RB [ -f ] |
|
|
|
|
.RB [ -w |
|
|
|
|
.IR directory ] |
|
|
|
|
.RB [ --bootstrap ] |
|
|
|
|
.RB [ --no-bootstrap ] |
|
|
|
|
|
|
|
|
|
.B yadm |
|
|
|
|
.RI config " name |
|
|
|
@ -35,6 +37,8 @@ config |
|
|
|
|
list |
|
|
|
|
.RB [ -a ] |
|
|
|
|
|
|
|
|
|
.BR yadm " bootstrap |
|
|
|
|
|
|
|
|
|
.BR yadm " encrypt |
|
|
|
|
|
|
|
|
|
.BR yadm " decrypt |
|
|
|
@ -93,6 +97,11 @@ This automatic behavior can be disabled by setting the configuration |
|
|
|
|
.I yadm.auto-alt |
|
|
|
|
to "false". |
|
|
|
|
.TP |
|
|
|
|
.B bootstrap |
|
|
|
|
Execute |
|
|
|
|
.I $HOME/.yadm/bootstrap |
|
|
|
|
if it exists. |
|
|
|
|
.TP |
|
|
|
|
.BI clone " url |
|
|
|
|
Clone a remote repository for tracking dotfiles. |
|
|
|
|
After the contents of the remote repository have been fetched, a "merge" of |
|
|
|
@ -102,17 +111,28 @@ If there are conflicting files already present in the |
|
|
|
|
.IR work-tree , |
|
|
|
|
this merge will fail and instead a "reset" of |
|
|
|
|
.I origin/master |
|
|
|
|
will be done. |
|
|
|
|
It is up to the user to resolve these conflicts, |
|
|
|
|
but if the desired action is to have the contents in the repository overwrite the existing files, |
|
|
|
|
then a "hard reset" should accomplish that: |
|
|
|
|
will be done, followed by a "stash". This "stash" operation will preserve the |
|
|
|
|
original data. |
|
|
|
|
|
|
|
|
|
You can review the stashed conflicts by running the command |
|
|
|
|
|
|
|
|
|
.RS |
|
|
|
|
.RS |
|
|
|
|
yadm reset --hard origin/master |
|
|
|
|
yadm stash show -p |
|
|
|
|
.RE |
|
|
|
|
|
|
|
|
|
from within your |
|
|
|
|
.I $HOME |
|
|
|
|
directory. If you want to restore the stashed data, you can run |
|
|
|
|
|
|
|
|
|
.RS |
|
|
|
|
yadm stash apply |
|
|
|
|
.RE |
|
|
|
|
or |
|
|
|
|
.RS |
|
|
|
|
yadm stash pop |
|
|
|
|
.RE |
|
|
|
|
.IP |
|
|
|
|
|
|
|
|
|
The repository is stored in |
|
|
|
|
.IR $HOME/.yadm/repo.git . |
|
|
|
|
By default, |
|
|
|
@ -124,6 +144,14 @@ but this can be overridden with the |
|
|
|
|
.B yadm |
|
|
|
|
can be forced to overwrite an existing repository by providing the |
|
|
|
|
.BR -f " option. |
|
|
|
|
By default |
|
|
|
|
.B yadm |
|
|
|
|
will ask the user if the bootstrap program should be run (if it exists). The |
|
|
|
|
options |
|
|
|
|
.BR --bootstrap " or " --no-bootstrap |
|
|
|
|
will either force the bootstrap to be run, or prevent it from being run, |
|
|
|
|
without prompting the user. |
|
|
|
|
.RE |
|
|
|
|
.TP |
|
|
|
|
.B config |
|
|
|
|
This command manages configurations for |
|
|
|
@ -250,6 +278,11 @@ encryption configuration. |
|
|
|
|
Override the location of the |
|
|
|
|
.B yadm |
|
|
|
|
encrypted files archive. |
|
|
|
|
.TP |
|
|
|
|
.B --yadm-bootstrap |
|
|
|
|
Override the location of the |
|
|
|
|
.B yadm |
|
|
|
|
bootstrap program. |
|
|
|
|
.SH CONFIGURATION |
|
|
|
|
.B yadm |
|
|
|
|
uses a configuration file named |
|
|
|
@ -309,6 +342,25 @@ By default, the first "gpg" found in $PATH is used. |
|
|
|
|
.B yadm.git-program |
|
|
|
|
Specify an alternate program to use instead of "git". |
|
|
|
|
By default, the first "git" found in $PATH is used. |
|
|
|
|
|
|
|
|
|
.RE |
|
|
|
|
These last four "local" configurations are not stored in the |
|
|
|
|
.IR $HOME/.yadm/config, |
|
|
|
|
they are stored in the local repository. |
|
|
|
|
|
|
|
|
|
.TP |
|
|
|
|
.B local.class |
|
|
|
|
Specify a CLASS for the purpose of symlinking alternate files. |
|
|
|
|
By default, no CLASS will be matched. |
|
|
|
|
.TP |
|
|
|
|
.B local.os |
|
|
|
|
Override the OS for the purpose of symlinking alternate files. |
|
|
|
|
.TP |
|
|
|
|
.B local.hostname |
|
|
|
|
Override the HOSTNAME for the purpose of symlinking alternate files. |
|
|
|
|
.TP |
|
|
|
|
.B local.user |
|
|
|
|
Override the USER for the purpose of symlinking alternate files. |
|
|
|
|
.SH ALTERNATES |
|
|
|
|
When managing a set of files across different systems, it can be useful to have |
|
|
|
|
an automated way of choosing an alternate version of a file for a different |
|
|
|
@ -318,11 +370,16 @@ implements a feature which will automatically create a symbolic link to |
|
|
|
|
the appropriate version of a file, as long as you follow a specific naming |
|
|
|
|
convention. |
|
|
|
|
.B yadm |
|
|
|
|
can detect files with names ending in: |
|
|
|
|
can detect files with names ending in any of the following: |
|
|
|
|
|
|
|
|
|
.RS |
|
|
|
|
.BR ## " or " ##OS " or " ##OS.HOSTNAME " or " ##OS.HOSTNAME.USER |
|
|
|
|
.RE |
|
|
|
|
## |
|
|
|
|
##CLASS |
|
|
|
|
##CLASS.OS |
|
|
|
|
##CLASS.OS.HOSTNAME |
|
|
|
|
##CLASS.OS.HOSTNAME.USER |
|
|
|
|
##OS |
|
|
|
|
##OS.HOSTNAME |
|
|
|
|
##OS.HOSTNAME.USER |
|
|
|
|
|
|
|
|
|
If there are any files managed by |
|
|
|
|
.BR yadm \'s |
|
|
|
@ -336,6 +393,7 @@ This may best be demonstrated by example. Assume the following files are managed |
|
|
|
|
repository: |
|
|
|
|
|
|
|
|
|
- $HOME/path/example.txt## |
|
|
|
|
- $HOME/path/example.txt##Work |
|
|
|
|
- $HOME/path/example.txt##Darwin |
|
|
|
|
- $HOME/path/example.txt##Darwin.host1 |
|
|
|
|
- $HOME/path/example.txt##Darwin.host2 |
|
|
|
@ -365,16 +423,22 @@ If running on a Solaris server, the link use the default "##" version: |
|
|
|
|
|
|
|
|
|
.IR $HOME/path/example.txt " -> " $HOME/path/example.txt## |
|
|
|
|
|
|
|
|
|
If no "##" version exists and no files match the current OS/HOSTNAME/USER, then no link will be created. |
|
|
|
|
If running on a system, with CLASS set to "Work", the link will be: |
|
|
|
|
|
|
|
|
|
.IR $HOME/path/example.txt " -> " $HOME/path/example.txt##WORK |
|
|
|
|
|
|
|
|
|
If no "##" version exists and no files match the current CLASS/OS/HOSTNAME/USER, then no link will be created. |
|
|
|
|
|
|
|
|
|
Links are also created for directories named this way, as long as they have at least one |
|
|
|
|
.B yadm |
|
|
|
|
managed file within them. |
|
|
|
|
|
|
|
|
|
CLASS must be manually set using |
|
|
|
|
.BR yadm\ config\ local.class\ <class> . |
|
|
|
|
OS is determined by running |
|
|
|
|
.BR uname\ -s , |
|
|
|
|
HOSTNAME by running |
|
|
|
|
.BR hostname\ -s , |
|
|
|
|
.BR hostname , |
|
|
|
|
and USER by running |
|
|
|
|
.BR id\ -u\ -n . |
|
|
|
|
.B yadm |
|
|
|
@ -383,6 +447,32 @@ will automatically create these links by default. This can be disabled using the |
|
|
|
|
configuration. |
|
|
|
|
Even if disabled, links can be manually created by running |
|
|
|
|
.BR yadm\ alt . |
|
|
|
|
|
|
|
|
|
It is possible to use "%" as a "wildcard" in place of CLASS, OS, HOSTNAME, or |
|
|
|
|
USER. For example, The following file could be linked for any host when the |
|
|
|
|
user is "harvey". |
|
|
|
|
|
|
|
|
|
.IR $HOME/path/example.txt##%.%.harvey |
|
|
|
|
|
|
|
|
|
CLASS is a special value which is stored locally on each host (inside the local |
|
|
|
|
repository). To use alternate symlinks using CLASS, you must set the value of |
|
|
|
|
class using the configuration |
|
|
|
|
.BR local.class . |
|
|
|
|
This is set like any other |
|
|
|
|
.B yadm |
|
|
|
|
configuration with the |
|
|
|
|
.B yadm config |
|
|
|
|
command. The following sets the CLASS to be "Work". |
|
|
|
|
|
|
|
|
|
yadm config local.class Work |
|
|
|
|
|
|
|
|
|
Similarly, the values of OS, HOSTNAME, and USER can be manually overridden |
|
|
|
|
using the configuration options |
|
|
|
|
.BR local.os , |
|
|
|
|
.BR local.hostname , |
|
|
|
|
and |
|
|
|
|
.BR local.user . |
|
|
|
|
|
|
|
|
|
.SH ENCRYPTION |
|
|
|
|
It can be useful to manage confidential files, like SSH or GPG keys, across |
|
|
|
|
multiple systems. However, doing so would put plain text data into a Git |
|
|
|
|