* 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.master
parent
892c981f47
commit
491847ed53
|
@ -39,13 +39,14 @@ extra_build: ikiwiki.out
|
|||
--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:
|
||||
|
@ -70,6 +71,7 @@ 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
|
||||
|
@ -83,6 +85,7 @@ extra_install:
|
|||
|
||||
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)
|
||||
}
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
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.
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# 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
|
|
@ -5,13 +5,26 @@ the Linux kernel. Ikiwiki supports storing a wiki in git.
|
|||
|
||||
[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.
|
||||
|
|
|
@ -107,56 +107,32 @@ At this point you might want to check your wiki in to a revision control
|
|||
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
|
||||
ikiwiki-makerepo git $SRCDIR $REPOSITORY
|
||||
|
||||
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`.
|
||||
Please see [[rcs/git]] for detailed documentation about how
|
||||
ikiwiki uses git repositories, and some important caveats
|
||||
about using the git repositories.
|
||||
"""]]
|
||||
|
||||
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.
|
||||
[[toggle id=mercurial text="Mercurial"]]
|
||||
[[toggleable id=mercurial text="""
|
||||
REPOSITORY=$SRCDIR
|
||||
ikiwiki-makerepo mercurial $SRCDIR
|
||||
"""]]
|
||||
|
||||
[[toggle id=tla text="TLA"]]
|
||||
|
@ -173,15 +149,6 @@ Finally, see [[Git_pitfalls]] if you experience problems.
|
|||
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
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
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]]
|
|
@ -0,0 +1,76 @@
|
|||
#!/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
|
Loading…
Reference in New Issue