source:
git-cache-meta --store
destination:
git-cache-meta --apply
#!/bin/sh -e | |
#git-cache-meta -- simple file meta data caching and applying. | |
#Simpler than etckeeper, metastore, setgitperms, etc. | |
#from http://www.kerneltrap.org/mailarchive/git/2009/1/9/4654694 | |
#modified by n1k | |
# - save all files metadata not only from other users | |
# - save numeric uid and gid | |
# 2012-03-05 - added filetime, andris9 | |
: ${GIT_CACHE_META_FILE=.git_cache_meta} | |
case $@ in | |
--store|--stdout) | |
case $1 in --store) exec > $GIT_CACHE_META_FILE; esac | |
find $(git ls-files)\ | |
\( -printf 'chown %U %p\n' \) \ | |
\( -printf 'chgrp %G %p\n' \) \ | |
\( -printf 'touch -c -d "%AY-%Am-%Ad %AH:%AM:%AS" %p\n' \) \ | |
\( -printf 'chmod %#m %p\n' \) ;; | |
--apply) sh -e $GIT_CACHE_META_FILE;; | |
*) 1>&2 echo "Usage: $0 --store|--stdout|--apply"; exit 1;; | |
esac |
source:
git-cache-meta --store
destination:
git-cache-meta --apply
Download jgit.sh
Config
cat > ~/.jgit
accesskey: aws access key
secretkey: aws secret access key
<Ctrl-D>
Setup repo
git remote add origin amazon-s3://[email protected]/repo-name.git
Push
jgit push origin master
Clone
jgit clone amazon-s3://[email protected]/repo-name.git
Pull
jgit fetch
git merge origin/master
@spoelstraethan
Just to inform that
pushd
andpopd
are bashism and thus unportable. There is one more problem withpushd
is that you do need to handle whenpushd
itself fails (e.g. when directory doesn't exist), and if you are not careful you would end up popping one more directory from the stack than needed (which could become a security vulnerability in certain applications).If you need to return to the original directory, the safest as well as the simplest approach is to
cd
in a subshell, and exit the subshell when you are done or an error occurred in that directory. Like this: