diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-07-22 17:16:42 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-07-22 17:16:42 -0400 |
commit | 5d31e8feb6d5740eb4b4c7277c6122e46f5fc70d (patch) | |
tree | 20e777b43cdde72c38c846284f142629cdbe58bf /doc/tips/centralized_git_repository_tutorial.mdwn | |
parent | 9dd7c17ad9ce26aa4e3a37401f617afc25c66cb5 (diff) |
split centralized_git_repository_tutorial into 3
Diffstat (limited to 'doc/tips/centralized_git_repository_tutorial.mdwn')
-rw-r--r-- | doc/tips/centralized_git_repository_tutorial.mdwn | 149 |
1 files changed, 12 insertions, 137 deletions
diff --git a/doc/tips/centralized_git_repository_tutorial.mdwn b/doc/tips/centralized_git_repository_tutorial.mdwn index e646ed0ee..d12593bd2 100644 --- a/doc/tips/centralized_git_repository_tutorial.mdwn +++ b/doc/tips/centralized_git_repository_tutorial.mdwn @@ -1,142 +1,17 @@ The [[walkthrough]] builds up a decentralized git repository setup, but -git-annex can also be used with a centralized bare repository, just like -git can. This tutorial shows how to set up a centralized repository hosted on -GitHub on GitLab or your own git server. +git-annex can also be used with a centralized git repository. -## set up the repository, and make a checkout +We have separate tutorials depending on where the centralized git +repository is hosted. -I've created a repository for technical talk videos, which you can -[fork on Github](https://github.com/joeyh/techtalks). -Or make your own repository on GitHub (or GitLab elsewhere) now. +* You can use GitHub. However, GitHub does not currently let git-annex + store the contents of large files there. So, things get a little more + complicated. See [[centralized_git_repository_tutorial/on_GitHub]] + for a tutorial for using git-annex with GitHub. -On your laptop, [[install]] git-annex, and clone the repository: +* You can use GitLab. This service is similar to GitHub, but supports + git-annex. See [[centralized_git_repository_tutorial/on_GitLab]] - # git clone git@github.com:joeyh/techtalks.git - # cd techtalks - -Tell git-annex to use the repository, and describe where this clone is -located: - - # git annex init 'my laptop' - init my laptop ok - -Let's tell git-annex that GitHub doesn't support running git-annex-shell there. - - # git config remote.origin.annex-ignore true - -This means you can't store annexed file *contents* on GitHub; it would -really be better to host the bare repository on your own server, which -would not have this limitation. (If you want to do that, check out -[[using_gitolite_with_git-annex]].) Or, you could use GitLab, which -*does* [support git-annex on their servers](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/). - -## add files to the repository - -Add some files, obtained however. - - # youtube-dl -t 'http://www.youtube.com/watch?v=b9FagOVqxmI' - # git annex add *.mp4 - add Haskell_Amuse_Bouche-b9FagOVqxmI.mp4 (checksum) ok - (Recording state in git...) - # git commit -m "added a video. I have not watched it yet but it sounds interesting" - -This file is available directly from the web; so git-annex can download it: - - # git annex addurl http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg - addurl kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg - (downloading http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg ...) - (checksum...) ok - (Recording state in git...) - # git commit -a -m 'added a screencast I made' - -Feel free to rename the files, etc, using normal git commands: - - # git mv Haskell_Amuse_Bouche-b9FagOVqxmI.mp4 Haskell_Amuse_Bouche.mp4 - # git mv kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg git-annex_coding_in_haskell.ogg - # git commit -m 'better filenames' - -Now push your changes back to the central repository. As well as pushing -the master branch, remember to push the git-annex branch, which is used to -track the file contents. - - # git push origin master git-annex - To git@github.com:joeyh/techtalks.git - * [new branch] master -> master - * [new branch] git-annex -> git-annex - -That push went fast, because it didn't upload large videos to GitHub. -To check this, you can ask git-annex where the contents of the videos are: - - # git annex whereis - whereis Haskell_Amuse_Bouche.mp4 (1 copy) - 767e8558-0955-11e1-be83-cbbeaab7fff8 -- here - ok - whereis git-annex_coding_in_haskell.ogg (2 copies) - 00000000-0000-0000-0000-000000000001 -- web - 767e8558-0955-11e1-be83-cbbeaab7fff8 -- here - ok - -## make more checkouts - -So far you have a central repository, and a checkout on a laptop. -Let's make another checkout that's used as a backup. You can put it anywhere -you like, just make it be somewhere your laptop can access. A few options: - -* Put it on a USB drive that you can plug into the laptop. -* Put it on a desktop. -* Put it on some server in the local network. -* Put it on a remote VPS. - -I'll use the VPS option, but these instructions should work for -any of the above. - - # ssh server - server# sudo apt-get install git-annex - -Clone the central repository as before. (If the clone fails, you need -to add your server's ssh public key to github -- see -[this page](http://help.github.com/ssh-issues/).) - - server# git clone git@github.com:joeyh/techtalks.git - server# cd techtalks - server# git config remote.origin.annex-ignore true - server# git annex init 'backup' - init backup (merging origin/git-annex into git-annex...) ok - -Notice that the server does not have the contents of any of the files yet. -If you run `ls`, you'll see broken symlinks. We want to populate this -backup with the file contents, by copying them from your laptop. - -Back on your laptop, you need to configure a git remote for the backup. -Adjust the ssh url as needed to point to wherever the backup is. (If it -was on a local USB drive, you'd use the path to the repository instead.) - - # git remote add backup ssh://server/~/techtalks - -Now git-annex on your laptop knows how to reach the backup repository, -and can do things like copy files to it: - - # git annex copy --to backup git-annex_coding_in_haskell.ogg - copy git-annex_coding_in_haskell.ogg (checking backup...) - 12877824 2% 255.11kB/s 00:00 - ok - -You can also `git annex move` files to it, to free up space on your laptop. -And then you can `git annex get` files back to your laptop later on, as -desired. - -After you use git-annex to move files around, remember to push, -which will broadcast its updated location information. - - # git push origin master git-annex - -## take it farther - -Of course you can create as many checkouts as you desire. If you have a -desktop machine too, you can make a checkout there, and use `git remote -add` to also let your desktop access the backup repository. - -You can add remotes for each direct connection between machines you find you -need -- so make the laptop have the desktop as a remote, and the desktop -have the laptop as a remote, and then on either machine git-annex can -access files stored on the other. +* You can use your own git server, which can be any unix system with + ssh and git and git-annex installed. A VPS, a home server, etc. + See [[[[centralized_git_repository_tutorial/on_your_own_server]]. |