Git

Convert existing git repo to bare repo

mkdir repo.git
mv repo/.git repo.git
rm -rf repo
cd repo.git
git config --bool core.bare true

https://stackoverflow.com/questions/160608/do-a-git-export-like-svn-export

# local
git archive --format zip --output /path master
# remote
# path is optional
git archive --format=tar \
--remote=ssh://remote_server/remote_repository master path1/ path2/ | tar -xv

Convert shallow clone to full clone

git fetch --unshallow
git fetch --depth=2147483647

Convert full clone to shallow clone

https://stackoverflow.com/questions/38171899/how-to-reduce-the-depth-of-an-existing-git-clone

git fetch --depth 10 / git fetch --deepen 10
git reflog expire --expire=all --all
git tag -l | xargs git tag -d
git gc --prune=all

https://stackoverflow.com/questions/4515580/how-do-i-remove-the-old-history-from-a-git-repository

; Shallow to last 5 commits
git rev-parse HEAD~5 > .git/shallow

; Manually remove all other branches, tags and remotes that refers to old commits

; Prune unreachable objects
git fsck --unreachable ; Will show you the list of what will be deleted
git gc --prune=now     ; Will actually delete your data
[core]
sharedRepository = 0666
git svn clone -s http://svn-server/repo
git svn fetch
git svn dcommit
git svn rebase

Stash

git stash show -p stash@{1}

Rewrite

svn-remote.<name>.rewriteRoot
This allows users to create repositories from alternate URLs. For example, an administrator could run git svn on the server locally (accessing via file://) but wish to distribute the repository with a public http:// or svn:// URL in the metadata so users of it will see the public URL.

svn-remote.<name>.rewriteUUID
Similar to the useSvmProps option; this is for users who need to remap the UUID manually. This may be useful in situations where the original UUID is not available via either useSvmProps or useSvnsyncProps.