--plugin=haiku --plugin=polygen --plugin=fortune
./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man
./mdwn2man ikiwiki-mass-rebuild 8 doc/ikiwiki-mass-rebuild.mdwn > ikiwiki-mass-rebuild.man
+ ./mdwn2man ikiwiki-makerepo 1 doc/ikiwiki-makerepo.mdwn > ikiwiki-makerepo.man
./mdwn2man ikiwiki-update-wikilist 1 doc/ikiwiki-update-wikilist.mdwn > ikiwiki-update-wikilist.man
$(MAKE) -C po
if [ "$$PROFILE" = 1 ]; then dprofpp; fi
extra_clean:
rm -rf html doc/.ikiwiki
- rm -f ikiwiki.man ikiwiki-mass-rebuild.man ikiwiki-update-wikilist.man ikiwiki.out
+ rm -f *.man ikiwiki.out
$(MAKE) -C po clean
extra_install:
install -d $(DESTDIR)$(PREFIX)/share/man/man1
install -m 644 ikiwiki.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki.1
+ install -m 644 ikiwiki-makerepo.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-makerepo.1
install -m 644 ikiwiki-update-wikilist.man $(DESTDIR)$(PREFIX)/share/man/man1/ikiwiki-update-wikilist.1
install -d $(DESTDIR)$(PREFIX)/share/man/man8
install -d $(DESTDIR)$(PREFIX)/bin
install ikiwiki.out $(DESTDIR)$(PREFIX)/bin/ikiwiki
+ install ikiwiki-makerepo ikiwiki-update-wikilist $(DESTDIR)$(PREFIX)/bin/
$(MAKE) -C po install DESTDIR=$(DESTDIR) PREFIX=$(PREFIX)
}
+ikiwiki (2.15) UNRELEASED; urgency=low
+
+ * Add a new ikiwiki-makerepo program, that automates setting up a repo
+ and importing existing content for svn, git, and mercurial. This makes
+ the setup process much simpler.
+ * Reorganised git documentation.
+ * Actually install the ikiwiki-update-wikilist program.
+
+ -- Joey Hess <joeyh@debian.org> Tue, 27 Nov 2007 00:16:40 -0500
+
ikiwiki (2.14) unstable; urgency=high
* Let CC be used to control what compiler is used to build wrappers.
--- /dev/null
+# NAME
+
+ikiwiki-makerepo - check an ikiwiki srcdir into revision control
+
+# SYNOPSIS
+
+ikiwiki-makerepo svn|git srcdir repository
+ikiwiki-makerepo mercurial srcdir
+
+# DESCRIPTION
+
+`ikiwiki-makerepo` injects a `srcdir` directory, containing an ikiwiki wiki,
+into a `repository` that it creates. The repository can be a svn, git, or
+mercurial repository.
+
+Note that for mercurial, the srcdir is converted into a mercurial
+repository. There is no need to have a separate repository with mercurial.
+
+# AUTHOR
+
+Joey Hess <joey@ikiwiki.info>
+
+Warning: this page is automatically made into ikiwiki-makerepo's man page, edit with care
[git]: http://git.or.cz/
-Ikiwiki can run as a post-update hook to update a wiki whenever commits
+Ikiwiki can run as a `post-update` hook to update a wiki whenever commits
come in. When running as a [[cgi]] with Git, ikiwiki automatically
commits edited pages, and uses the Git history to generate the
[[RecentChanges]] page.
-[[Setup]] documents current best practice for using git with ikiwiki. This
-involves setting up a pair of git repositories. This method isn't the most
-obvious, but it works the best.
+## git repository setup
-See also: [[common_git_pitfalls|/setup/git_pitfalls]]
+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), and the other one with a working tree will be used as
+ikiwiki's srcdir for compiling the wiki. [[ikiwiki-makerepo]] can automate
+setting this up. Using a pair of repositories isn't the most obvious set up,
+but it works the best for typical ikiwiki use.
+[[tips/Laptop_wiki_with_git]] describes a different way to set up ikiwiki
+and git.
+
+It is **paramount** that you **never** push to the non-bare repository
+([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
+the bare repository, using either the `git` transport (if available), or
+`ssh`.
+
+The ikiwiki `post-commit` hook should be put in the bare repository.
system so you can keep track of changes and revert edits. Depending
on the revision control system you choose, the way this is done varies.
-There's little that's ikiwiki specific about these instructions; this is
-just how you put a directory under revision control using the various
-systems that ikiwiki supports. Note that the .ikiwiki subdirectory is
-where ikiwiki keeps its state, and should be preserved, but not checked
-into revision control.
+Note that the .ikiwiki subdirectory is where ikiwiki keeps its state, and
+should be preserved, but not checked into revision control.
+
+The new [[ikiwiki-makerepo]] command automates setting up a wiki in
+revision control.
[[toggle id=subversion text="Subversion"]]
[[toggleable id=subversion text="""
REPOSITORY=~/wikirepo
- svnadmin create $REPOSITORY
- svn mkdir file://$REPOSITORY/trunk -m "create trunk"
- cd $SRCDIR
- svn co file://$REPOSITORY/trunk .
- svn add *
- svn commit -m "initial import"
+ ikiwiki-makerepo svn $SRCDIR $REPOSITORY
"""]]
[[toggle id=git text="Git"]]
[[toggleable id=git text="""
-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:
-
REPOSITORY=~/wiki.git
- GIT_DIR=$REPOSITORY git --bare init --shared
- cd $SRCDIR
- git init
- 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
-`$REPOSITORY`, using either the `git` transport (if available), or
-`ssh`.
-
-If at any point you commit changes in `$SRCDIR`, make sure to `git
-push` them to the `$REPOSITORY`. ikiwiki will do this automatically
-for any changes made via the web.
-
-Finally, see [[Git_pitfalls]] if you experience problems.
+ ikiwiki-makerepo git $SRCDIR $REPOSITORY
+
+ Please see [[rcs/git]] for detailed documentation about how
+ ikiwiki uses git repositories, and some important caveats
+ about using the git repositories.
+"""]]
+
+[[toggle id=mercurial text="Mercurial"]]
+[[toggleable id=mercurial text="""
+ REPOSITORY=$SRCDIR
+ ikiwiki-makerepo mercurial $SRCDIR
"""]]
[[toggle id=tla text="TLA"]]
tla import
"""]]
-[[toggle id=mercurial text="Mercurial"]]
-[[toggleable id=mercurial text="""
- REPOSITORY=$SRCDIR
- hg init $REPOSITORY
- cd $REPOSITORY
- hg add *
- hg commit -m "initial import"
-"""]]
-
[[toggle id=monotone text="Monotone"]]
[[toggleable id=monotone text="""
# These instructions are standard instructions to import a directory into monotone
+++ /dev/null
-I want to collect common problems and their solutions when using Ikiwiki with Git here. Nothing here yet though, so feel free to add...
-
-> Well, I have a question. :-)
->
-> If I follow the instructions, I get a bare $REPOSITORY and a $SRCDIR that
-> is cloned off of it. Web edits change the SRCDIR and ikiwiki automatically
-> pushes to origin, which updates REPOSITORY. But the instructions say not
-> to clone from SRCDIR; so I clone from REPOSITORY. Now if I manually edit
-> a file and push the commit, it goes to REPOSITORY. The wiki isn't
-> updated.
->
-> Seems like REPOSITORY needs a post-receive hook that cd's to SRCDIR and
-> does a git pull, and manually triggers ikiwiki. Which seems very messy.
->
-> Am I doing something wrong? --[[Joey]]
->
-> Hmm, perhaps I installed the wrapper to the wrong place? I had thought
-> it would go in $SRCDIR/.git/hooks/post-commit, but on second read, I see
-> that [[setup]] says it should be $REPOSITORY/hooks/post-update
->
-> That seems to have sorted it. Based on [[this|rcs/git/discussion]], I'm
-> not the only one to trip over how to do this. --[[Joey]]
--- /dev/null
+#!/bin/sh
+set -e
+
+rcs="$1"
+srcdir="$2"
+repository="$3"
+
+usage () {
+ echo "usage: ikiwiki-makerepo svn|git srcdir repository" >&2
+ echo " ikiwiki-makerepo mercurial srcdir" >&2
+ exit 1
+}
+
+if [ -z "$rcs" ] || [ -z "$srcdir" ]; then
+ usage
+fi
+
+if [ ! -d "$srcdir" ]; then
+ echo "srcdir $srcdir not found" >&2
+ exit 1
+fi
+
+if [ "$rcs" != mercurial ]; then
+ if [ -e "$repository" ]; then
+ echo "repository $repository already exists, aborting" >&2
+ exit 1
+ fi
+ repository="$(perl -e 'use Cwd q{abs_path}; print abs_path(shift)' $repository)"
+ if [ -z "$repository" ]; then
+ echo "internal error finding repository abs_path" >&2
+ exit 1
+ fi
+fi
+
+echo "Importing $srcdir into $rcs"
+
+case "$rcs" in
+svn)
+ if [ -e "$srcdir/.svn" ]; then
+ echo "$srcdir already seems to be a svn working copy" >&2
+ exit 1
+ fi
+ svnadmin create "$repository"
+ svn mkdir "file://$repository/trunk" -m "create trunk directory"
+ cd "$srcdir"
+ svn co "file://$repository/trunk" .
+ svn propset svn:ignore ".ikiwiki" .
+ svn add *
+ svn commit -m "initial import"
+ echo "Directory $srcdir is now a checkout of $rcs repository $repository"
+;;
+git)
+ GIT_DIR="$repository" git --bare init --shared
+ cd "$srcdir"
+ git init
+ 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
+ echo "Directory $srcdir is now a clone of $rcs repository $repository"
+;;
+mercurial)
+ hg init "$srcdir"
+ cd "$srcdir"
+ echo .ikiwiki > .hgignore
+ hg add * .hgignore
+ hg commit -m "initial import"
+ echo "Directory $srcdir is now set up as a mercurial repository"
+;;
+*)
+ echo "Unsupported revision control system $rcs" >&2
+ usage
+;;
+esac