Support for symlinked directories (#17)

This commit is contained in:
Tim Byrne 2016-08-05 16:09:26 -05:00
parent 85abcf981c
commit fa286f0c9d
No known key found for this signature in database
GPG Key ID: 6CBE24C2FD8CF76E
2 changed files with 18 additions and 7 deletions

21
yadm
View File

@ -117,16 +117,23 @@ function alt() {
#; loop over all "tracked" files #; loop over all "tracked" files
#; for every file which matches the above regex, create a symlink #; for every file which matches the above regex, create a symlink
last_linked=''
for tracked_file in $(git ls-files | sort); do for tracked_file in $(git ls-files | sort); do
tracked_file="$YADM_WORK/$tracked_file" tracked_file="$YADM_WORK/$tracked_file"
if [ -e "$tracked_file" ] ; then #; process both the path, and it's parent directory
if [[ $tracked_file =~ $match ]] ; then for alt_path in "$tracked_file" "${tracked_file%/*}"; do
new_link="${BASH_REMATCH[1]}" if [ -e "$alt_path" ] ; then
debug "Linking $tracked_file to $new_link" if [[ $alt_path =~ $match ]] ; then
[ -n "$loud" ] && echo "Linking $tracked_file to $new_link" if [ "$alt_path" != "$last_linked" ] ; then
ln -fs "$tracked_file" "$new_link" new_link="${BASH_REMATCH[1]}"
debug "Linking $alt_path to $new_link"
[ -n "$loud" ] && echo "Linking $alt_path to $new_link"
ln -nfs "$alt_path" "$new_link"
last_linked="$alt_path"
fi
fi
fi fi
fi done
done done
} }

4
yadm.1
View File

@ -356,6 +356,10 @@ If running on a Solaris server, the link use the default "##" version:
If no "##" version exists and no files match the current OS/HOSTNAME/USER, then no link will be created. If no "##" version exists and no files match the current 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.
OS is determined by running OS is determined by running
.BR uname\ -s , .BR uname\ -s ,
HOSTNAME by running HOSTNAME by running