[[toggle id=git text="Git"]]
[[toggleable id=git text="""
- For Git, you need two repositories, of which one should be bare
- (meaning that it does not have a working tree checked out). We call
- the bare repository the "repo" and the other the "srcdir".
+ When using Git, you probably want to set up two repositories, of which
+ one should be bare (meaning that it does not have a working tree
+ checked out). We call the bare repository the "repository" and the
+ other will be the "srcdir" (which `ikiwiki` uses to compile the wiki).
There are [other
ways](http://blog.madduck.net/vcs/2007.07.11_publishing-git-repositories)
to do the following, but this might be easiest:
- REPO=./wiki.git
- # SRCDIR is where ikiwiki compiles from. You thus need
- # to set `srcdir` in ikiwiki.setup appropriately. The
- # -wc in the name suggests "working clone" because
- # $SRCDIR holds a Git repository with a working tree.
- SRCDIR=./wiki-wc
+ REPOSITORY=~/wiki.git
+ GIT_DIR=$REPOSITORY git --bare init --shared
cd $SRCDIR
git init
- echo "Initial index page" > index.mdwn
- echo .ikiwiki > .gitignore
- git add index.mdwn .gitignore
- git commit -m'Initial commit'
- # Stop git performing fast forwards -- this is to avoid
- # overwriting the remote ref and losing other peoples'
- # commits from there.
- git config receive.denyNonFastForwards true
- git config core.bare true
- mv .git $REPO
- test -d .ikiwiki && mv .ikiwiki ..
- cd ..
- rm -r $SRCDIR
- git clone -l -s $REPO $SRCDIR
- test -d .ikiwiki && mv .ikiwiki $SRCDIR
+ echo /.ikiwiki > .gitignore
+ git add .
+ git commit -m "initial commit"
+ git remote add origin $REPOSITORY
+ git config branch.master.merge refs/heads/master
+ git push --all
It is **paramount** that you **never** push to the Git repository in
`$SRCDIR` ([this FAQ entry explains
why](http://git.or.cz/gitwiki/GitFaq#head-b6a3d85f677763313159eb39f7dbf4579d4ee28b)).
Instead, if you want to work on the wiki from a remote machine, clone
- `$REPO`, using either the `git` transport (if available), or
+ `$REPOSITORY`, using either the `git` transport (if available), or
`ssh`.
- To automatically update the wiki when you push changes to
- `$REPO`, `ikiwiki` can install a `post-update` hook. You need to
- enable this hook in `ikiwiki.setup` and the path to use should be
- `$REPO/hooks/post-update`.
-
- Finally, then, setup `ikiwiki`:
-
- ikiwiki --setup ikiwiki.setup
+ If at any point you commit changes in `$SRCDIR`, make sure to `git
+ push` them to the `$REPOSITORY`.
- If you commit changes in `$SRCDIR`, make sure to `git push` them to
- the `$REPO`.
+ Finally, see [[Git_pitfalls]] if you experience problems.
"""]]
[[toggle id=tla text="TLA"]]
you chose to use. Be sure to set `svnrepo` to $REPOSITORY, if using
subversion. Uncomment the block for the wrapper for your revision
control system, and configure the wrapper path in that block
- appropriately.
-
+ appropriately (for Git, it should be `$REPOSITORY/hooks/post-update`).
+
Once it's all set up, run `ikiwiki --setup ikiwiki.setup` once more.
Now you should be able to edit files in $SRCDIR, and use your revision
control system to commit them, and the wiki will automatically update.