summaryrefslogtreecommitdiff
path: root/doc/tips/centralized_git_repository_tutorial.mdwn
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-22 17:16:42 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-22 17:16:42 -0400
commit5d31e8feb6d5740eb4b4c7277c6122e46f5fc70d (patch)
tree20e777b43cdde72c38c846284f142629cdbe58bf /doc/tips/centralized_git_repository_tutorial.mdwn
parent9dd7c17ad9ce26aa4e3a37401f617afc25c66cb5 (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.mdwn149
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]].