Release 1.01

Update version number and update documentation
This commit is contained in:
Tim Byrne 2015-07-26 16:56:22 -05:00
parent eb60da77b8
commit cbb854a32b
3 changed files with 51 additions and 43 deletions

5
CHANGES Normal file
View File

@ -0,0 +1,5 @@
1.01
* Set `status.showUntrackedFiles` to "no"
1.00
* Initial public release

2
yadm
View File

@ -15,7 +15,7 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
VERSION=1.00 VERSION=1.01
YADM_WORK="$HOME" YADM_WORK="$HOME"
YADM_DIR="$HOME/.yadm" YADM_DIR="$HOME/.yadm"

87
yadm.md
View File

@ -90,37 +90,40 @@
Pass options to the git config command. Since yadm already uses Pass options to the git config command. Since yadm already uses
the config command to manage its own configurations, this com- the config command to manage its own configurations, this com-
mand is provided as a way to change configurations of the repos- mand is provided as a way to change configurations of the repos-
itory managed by yadm. One particularly useful case may be to itory managed by yadm. One useful case might be to configure
configure the repository so untracked files are hidden from sta- the repository so untracked files are shown in status commands.
tus commands: yadm initially configures its repository so that untracked files
are not shown. If you wish use the default git behavior (to
show untracked files and directories), you can remove this con-
figuration.
yadm gitconfig status.showUntrackedFiles no yadm gitconfig --unset status.showUntrackedFiles
help Print a summary of yadm commands. help Print a summary of yadm commands.
init Initialize a new, empty repository for tracking dotfiles. The init Initialize a new, empty repository for tracking dotfiles. The
repository is stored in $HOME/.yadm/repo.git. By default, $HOME repository is stored in $HOME/.yadm/repo.git. By default, $HOME
will be used as the work-tree, but this can be overridden with will be used as the work-tree, but this can be overridden with
the -w option. yadm can be forced to overwrite an existing the -w option. yadm can be forced to overwrite an existing
repository by providing the -f option. repository by providing the -f option.
list Print a list of files managed by yadm. The -a option will cause list Print a list of files managed by yadm. The -a option will cause
all managed files to be listed. Otherwise, the list will only all managed files to be listed. Otherwise, the list will only
include files from the current directory or below. include files from the current directory or below.
perms Update permissions as described in the PERMISSIONS section. It perms Update permissions as described in the PERMISSIONS section. It
is usually unnecessary to run this command, as yadm automati- is usually unnecessary to run this command, as yadm automati-
cally processes permissions by default. This automatic behavior cally processes permissions by default. This automatic behavior
can be disabled by setting the configuration yadm.auto-perms to can be disabled by setting the configuration yadm.auto-perms to
"false". "false".
version version
Print the version of yadm. Print the version of yadm.
## CONFIGURATION ## CONFIGURATION
yadm uses a configuration file named $HOME/.yadm/config. This file yadm uses a configuration file named $HOME/.yadm/config. This file
uses the same format as git-config(1). Also, you can control the con- uses the same format as git-config(1). Also, you can control the con-
tents of the configuration file via the yadm config command (which tents of the configuration file via the yadm config command (which
works exactly like git-config). For example, to disable alternates you works exactly like git-config). For example, to disable alternates you
can run the command: can run the command:
@ -129,14 +132,14 @@
The following is the full list of supported configurations: The following is the full list of supported configurations:
yadm.auto-alt yadm.auto-alt
Disable the automatic linking described in the section ALTER- Disable the automatic linking described in the section ALTER-
NATES. If disabled, you may still run yadm alt manually to cre- NATES. If disabled, you may still run yadm alt manually to cre-
ate the alternate links. This feature is enabled by default. ate the alternate links. This feature is enabled by default.
yadm.auto-perms yadm.auto-perms
Disable the automatic permission changes described in the sec- Disable the automatic permission changes described in the sec-
tion PERMISSIONS. If disabled, you may still run yadm perms tion PERMISSIONS. If disabled, you may still run yadm perms
manually to update permissions. This feature is enabled by manually to update permissions. This feature is enabled by
default. default.
yadm.ssh-perms yadm.ssh-perms
@ -146,16 +149,16 @@
## ALTERNATES ## ALTERNATES
When managing a set of files across different systems, it can be useful 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 to have an automated way of choosing an alternate version of a file for
a different operation system or simply for a different host. yadm a different operation system or simply for a different host. yadm
implements a feature which will automatically create a symbolic link to implements a feature which will automatically create a symbolic link to
the appropriate version of a file, as long as you follow a specific the appropriate version of a file, as long as you follow a specific
naming convention. yadm can detect files with names ending in: naming convention. yadm can detect files with names ending in:
##OS.HOSTNAME or ##OS or ## ##OS.HOSTNAME or ##OS or ##
If there are any files managed by yadm's repository which match this If there are any files managed by yadm's repository which match this
naming convention, symbolic links will be created for the most appro- naming convention, symbolic links will be created for the most appro-
priate version. This may best be demonstrated by example. Assume the priate version. This may best be demonstrated by example. Assume the
following files are managed by yadm's repository: following files are managed by yadm's repository:
- $HOME/path/example.txt## - $HOME/path/example.txt##
@ -176,7 +179,7 @@
$HOME/path/example.txt -> $HOME/path/example.txt##Darwin $HOME/path/example.txt -> $HOME/path/example.txt##Darwin
Since the hostname doesn't match any of the managed files, the more Since the hostname doesn't match any of the managed files, the more
generic version is chosen. generic version is chosen.
If running on a Linux server named "host4", the link will be: If running on a Linux server named "host4", the link will be:
@ -187,48 +190,48 @@
$HOME/path/example.txt -> $HOME/path/example.txt## $HOME/path/example.txt -> $HOME/path/example.txt##
If no "##" version exists and no files match the current OS or HOST- If no "##" version exists and no files match the current OS or HOST-
NAME, then no link will be created. NAME, then no link will be created.
OS is determined by running uname -s, and HOSTNAME by running host- OS is determined by running uname -s, and HOSTNAME by running host-
name -s. yadm will automatically create these links by default. This name -s. yadm will automatically create these links by default. This
can be disabled using the yadm.auto-alt configuration. Even if dis- can be disabled using the yadm.auto-alt configuration. Even if dis-
abled, links can be manually created by running yadm alt. abled, links can be manually created by running yadm alt.
## ENCRYPTION ## ENCRYPTION
It can be useful to manage confidential files, like SSH keys, across It can be useful to manage confidential files, like SSH keys, across
multiple systems. However, doing so would put plain text data into a multiple systems. However, doing so would put plain text data into a
Git repository, which often resides on a public system. yadm imple- Git repository, which often resides on a public system. yadm imple-
ments a feature which can make it easy to encrypt and decrypt a set of ments a feature which can make it easy to encrypt and decrypt a set of
files so the encrypted version can be maintained in the Git repository. files so the encrypted version can be maintained in the Git repository.
This feature will only work if the gpg(1) command is available. This feature will only work if the gpg(1) command is available.
To use this feature, a list of patterns must be created and saved as To use this feature, a list of patterns must be created and saved as
$HOME/.yadm/encrypt. This list of patterns should be relative to the $HOME/.yadm/encrypt. This list of patterns should be relative to the
configured work-tree (usually $HOME). For example: configured work-tree (usually $HOME). For example:
.ssh/*.key .ssh/*.key
The yadm encrypt command will find all files matching the patterns, and The yadm encrypt command will find all files matching the patterns, and
prompt for a password. Once a password has confirmed, the matching prompt for a password. Once a password has confirmed, the matching
files will be encrypted and saved as $HOME/.yadm/files.gpg. The pat- files will be encrypted and saved as $HOME/.yadm/files.gpg. The pat-
terns and files.gpg should be added to the yadm repository so they are terns and files.gpg should be added to the yadm repository so they are
available across multiple systems. available across multiple systems.
To decrypt these files later, or on another system run yadm decrypt and To decrypt these files later, or on another system run yadm decrypt and
provide the correct password. After files are decrypted, permissions provide the correct password. After files are decrypted, permissions
are automatically updated as described in the PERMISSIONS section. are automatically updated as described in the PERMISSIONS section.
NOTE: It is recommended that you use a private repository when keeping NOTE: It is recommended that you use a private repository when keeping
confidential files, even though they are encrypted. confidential files, even though they are encrypted.
## PERMISSIONS ## PERMISSIONS
When files are checked out of a Git repository, their initial permis- When files are checked out of a Git repository, their initial permis-
sions are dependent upon the user's umask. This can result in confiden- sions are dependent upon the user's umask. This can result in confiden-
tial files with lax permissions. tial files with lax permissions.
To prevent this, yadm will automatically update the permissions of con- To prevent this, yadm will automatically update the permissions of con-
fidential files. The "group" and "others" permissions will be removed fidential files. The "group" and "others" permissions will be removed
from the following files: from the following files:
- $HOME/.yadm/files.gpg - $HOME/.yadm/files.gpg
@ -238,7 +241,7 @@
- The SSH directory and files, .ssh/* - The SSH directory and files, .ssh/*
yadm will automatically update permissions by default. This can be dis- yadm will automatically update permissions by default. This can be dis-
abled using the yadm.auto-perms configuration. Even if disabled, per- abled using the yadm.auto-perms configuration. Even if disabled, per-
missions can be manually updated by running yadm perms. The SSH direc- missions can be manually updated by running yadm perms. The SSH direc-
tory processing can be disabled using the yadm.ssh-perms configuration. tory processing can be disabled using the yadm.ssh-perms configuration.