]> 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 c8df099edc7728c5754eb40b37f1336a15ffb233..8570833259b0db90c2b90c369bc64ee4645cc9db 100644 (file)
@@ -1,3 +1,5 @@
+[[!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
 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
@@ -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.
 
 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.
 
 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
 
 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
 
 * 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.
 
 
 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.