]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/tips/laptop_wiki_with_git.mdwn
corrected the update-the-laptop-from-the-server section
[ikiwiki.git] / doc / tips / laptop_wiki_with_git.mdwn
index 0ab098128eb8cb99d5f68d73fc48a3b361ec8fd3..8570833259b0db90c2b90c369bc64ee4645cc9db 100644 (file)
@@ -1,4 +1,6 @@
-Using ikiwiki with the [[git]] backend, some interesting things can be done
+[[!toc]]
+
+Using ikiwiki with the [[rcs/git]] backend, some interesting things can be done
 with creating mirrors (or, really, branches) of a wiki. In this tip, I'll
 assume your wiki is located on a server, and you want to take a copy with
 you on your laptop.
@@ -8,19 +10,24 @@ version on the laptop, perhaps while offline. You can browse and edit the
 wiki using a local web server. When you're ready, you can manually push the
 changes to the main wiki on the server.
 
+## simple clone approach
+
 First, set up the wiki on the server, if it isn't already. Nothing special
 needs to be done here, just follow the regular instructions in [[setup]]
 for setting up ikiwiki with git.
 
-Next, git clone the source from the server to the laptop.
+Next, `git clone` the source (`$REPOSITORY`, not `$SRCDIR`)
+from the server to the laptop.
 
-Now, set up a web server on your laptop, if it doesn't already have one.
+Now, set up a [[web_server|dot_cgi]] on your laptop, if it doesn't
+already have one.
 
 Now you need to write a setup file for ikiwiki on the laptop. Mostly this
 is standard, but a few special settings are needed:
 
 * Configure a cgi wrapper as usual, but configure the git wrapper to
-  be written to the `post-commit` hook of the git clone.
+  be written to the `post-commit` hook of the git clone, rather than the
+  usual `post-update` hook.
 
 * By default, ikiwiki pulls and pushes from `origin`. This shouldn't be 
   done on the laptop, because the origin may not be accessible (when the
@@ -41,8 +48,32 @@ run setup.)
 
 Use standard git commands to handle pulling from and pushing to the server.
 
-Note: Currently, after pulling changes, you will need to manually update
-the wiki, with a command such as `ikiwiki -setup wiki.setup -refresh`. This
-is because git 1.5.4 doesn't have a hook that is run locally after pulling
-changes. Newer versions of git will have a `post-merge` hook that should
-work for this purpose.
+Note that if changes are pulled from the server, you will need to manually
+update the wiki, with a command such as `ikiwiki -setup wiki.setup -refresh`.
+If you'd like it to automatically update when changes are merged in, you
+can simply make a symlink `post-merge` hook pointing at the `post-update`
+hook ikiwiki created.
+
+## bare mirror approach
+
+As above, set up a normal ikiwiki on the server, with the usual bare repository.
+
+Next, `git clone --mirror server:/path/to/bare/repository`
+
+This will be used as the $REPOSITORY on the laptop.  Then you can follow
+the instructions in [[setup by hand|/setup/byhand]] as per a normal ikiwiki
+installation. This means that you can clone from the local bare repository
+as many times as you want (thus being able to have a repository which is
+used by the ikiwiki CGI, and another which you can use for updating via
+git).
+
+When you want to update the server from the laptop, do a `git push` from
+within the laptop's bare repository.
+
+To update the laptop from the server, add a section for the laptop to the config file of the server's bare repository:
+
+       [remote "laptop"]
+               fetch = +refs/*:refs/*
+               url = me@laptop:/path/to/bare/repository
+
+Then do a `git push laptop` from within the server's bare repository.