83 lines
2.7 KiB
Bash
Executable File
83 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#!/usr/bin/env bash
|
|
set -x
|
|
# Using in combination with bfg to remove large binary files from a git repo and replace them with a pointer to a uri/url
|
|
# debianized repo
|
|
# git clone https://github.com/git-lfs/git-lfs
|
|
|
|
#dist=$(lsb_release -c | cut -f2)
|
|
dist=$(cat /etc/devuan_version | awk -F '/' {'print $1'})
|
|
if [ "$dist" == 'jessie' ]
|
|
then
|
|
DIST='jessie'
|
|
elif [ "$dist" == 'ascii' ]
|
|
then
|
|
DIST='stretch'
|
|
elif [ "$dist" == 'beowulf' ]
|
|
then
|
|
DIST='buster'
|
|
else [ "$dist" == 'ceres' ]
|
|
DIST='sid'
|
|
fi
|
|
|
|
# FIXME: buster version no yet available
|
|
DIST='stretch'
|
|
OS=debian
|
|
|
|
DEST=/etc/apt/sources.list-available
|
|
LINK=/etc/apt/sources.list.d
|
|
mkdir -p ${DEST}
|
|
mkdir -p ${LINK}
|
|
|
|
cat > ${DEST}/git-lfs.list << EOF
|
|
deb https://packagecloud.io/github/git-lfs/${OS}/ ${DIST} main
|
|
deb-src https://packagecloud.io/github/git-lfs/${OS}/ ${DIST} main
|
|
EOF
|
|
|
|
ln -sfr ${DEST}/git-lfs.list ${LINK}/git-lfs.list
|
|
|
|
gpg_key_url="https://packagecloud.io/github/git-lfs/gpgkey"
|
|
|
|
echo -n "Importing packagecloud gpg key... "
|
|
# import the gpg key
|
|
curl -L "${gpg_key_url}" 2> /dev/null | apt-key add - &>/dev/null
|
|
echo "done."
|
|
|
|
apt-get update
|
|
|
|
apt-get install -y git-lfs
|
|
apt-get -f install -y
|
|
|
|
|
|
echo "See: http://github.com/git-lfs/git-lfs/wiki/Tutorial"
|
|
|
|
echo "Per user:
|
|
git lfs install"
|
|
echo "Per repo:
|
|
git lfs install --local"
|
|
echo "Use --skip-smudge to prevent automatic download on clone/pull"
|
|
echo "Add pattern to track with:"
|
|
echo " git lfs track '*.tar.xz'"
|
|
echo "and add the resulting .gitattribute to the repo with:"
|
|
echo " git add .gitattrubute"
|
|
echo "To see the LFS url:"
|
|
echo " git lfs env | grep 'Endpoint='"
|
|
echo "To set it:"
|
|
echo " git config -f .lfsconfig lfs.url https://my_other_server.example.com/foo/bar/info/lfs'"
|
|
echo " git add .lfsconfig"
|
|
echo "For servers see:"
|
|
echo " https://docs.gitlab.com/ce/workflow/lfs/manage_large_binaries_with_git_lfs.html"
|
|
echo " https://about.gitlab.com/2017/01/30/getting-started-with-git-lfs-tutorial/"
|
|
echo "Migration:"
|
|
echo "Rewrite e.g. all *.mp4 video files on the current branch that are not present on a remote:"
|
|
echo ' git lfs migrate import --include="*.tar.xz"'
|
|
echo "rewrite all *.mp4 video files on a given branch(es) regardless of whether they are present on a remote (may require a force-push):"
|
|
echo " "git lfs migrate import --include="*.mp4" --include-ref=refs/heads/master --include-ref=refs/heads/my-feature"
|
|
echo "Fast checkout procedure:"
|
|
echo "Checkout without tracked file downloads"
|
|
echo " GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/username/my_lfs_repo.git destination_dir"
|
|
echo " #git lfs ls-files # optionally see all the - showing the lfs files are not checked out"
|
|
echo "Pull to download the track files:."
|
|
echo " git lfs pull"
|
|
echo " #git lfs ls-files # optionally see all the * showing the lfs files are checked out"
|