/usr/bin/ikiwiki-makerepo is in ikiwiki 3.20160121.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | #!/bin/sh
set -e
rcs="$1"
srcdir="$2"
repository="$3"
usage () {
echo "usage: ikiwiki-makerepo svn|git|svn|monotone|darcs|cvs srcdir repository" >&2
echo " ikiwiki-makerepo bzr|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 ] && [ "$rcs" != bzr ]; then
if [ -z "$repository" ]; then
echo "you need to specify both a srcdir and a repository for $rcs" >&2
usage
fi
if [ -e "$repository" ]; then
echo "repository $repository already exists, aborting" >&2
exit 1
fi
repository="$(perl -e 'use Cwd; $r=shift; $r=getcwd.q{/}.$r if $r!~m!^/!; print $r' "$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
cvs)
if [ -e "$srcdir/CVS" ]; then
echo "$srcdir already seems to be a cvs working copy" >&2
exit 1
fi
cvs -Q -d "$repository" init
cd "$srcdir"/..
cvs -Q -d "$repository" get -P CVSROOT
cd CVSROOT
echo .ikiwiki >> cvsignore
cvs -Q add cvsignore
echo "^ikiwiki $repository/CVSROOT/post-commit %{sVv} &" >> loginfo
cvs -Q commit -m "ikiwiki-makerepo setup" cvsignore loginfo
cd ..
rm -rf CVSROOT
cd "$srcdir"
cvs -Q -d "$repository" import -m "initial import" ikiwiki IKIWIKI PRE_CVS
cd ..
mv "$srcdir" "$srcdir.orig"
cvs -Q -d "$repository" get -P -d "$(basename "$srcdir")" ikiwiki
[ -d "$srcdir.orig/.ikiwiki" ] && mv "$srcdir.orig/.ikiwiki" "$srcdir"
rm -rf "$srcdir.orig"
echo "Directory $srcdir is now a checkout of $rcs repository $repository"
;;
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)
# There are better ways to do this, but this works with older
# versions of git.)
mkdir -p "$repository"
(cd "$repository" && git --bare init --shared)
cd "$srcdir"
git init
if [ -z "$(git config user.name)" ]; then
git config user.name IkiWiki
fi
if [ -z "$(git config user.email)" ]; then
git config user.email ikiwiki.info
fi
echo /.ikiwiki > .gitignore
git add .
git commit -m "initial commit"
git remote add origin "$repository"
git config branch.master.merge refs/heads/master
git config branch.master.remote origin
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
hg commit -m "initial import"
echo "Directory $srcdir is now set up as a mercurial repository"
;;
bzr)
bzr init "$srcdir"
cd "$srcdir"
echo .ikiwiki > .bzrignore
bzr add
bzr commit -m "initial import"
echo "Directory $srcdir is now set up as a bzr repository"
;;
monotone)
if [ -e "$srcdir/_MTN" ]; then
echo "$srcdir already seems to be a monotone working copy" >&2
exit 1
fi
mkdir -p "$(dirname "$repository")"
mtn db init -d "$repository"
cleaned_srcdir=$(basename "$srcdir" | tr -s "[:space:]" "_" | sed 's/_$//g')
reverse_hostname=$( (hostname -f 2>/dev/null || hostname) |\
tr "." "\n" | ( tac 2>/dev/null || tail -r ) | tr "\n" "." )
branch_name="$reverse_hostname$cleaned_srcdir"
mtn setup -d "$repository" -b "$branch_name" "$srcdir"
cd "$srcdir"
echo \.ikiwiki$ > .mtn-ignore
mtn add -R .
# this expects that you already have a working mtn environment
# with a default key floating around...
mtn ci -m "initial import"
echo "Directory $srcdir is now set up as a monotone repository"
echo ""
echo "Note: If your monotone key has a passphrase, you need to configure"
echo "monotone to automatically use it. Otherwise, web commits to ikiwiki"
echo "will fail."
echo ""
echo "You can create a $srcdir/_MTN/monotonerc"
echo "containing the passphrase:"
echo ""
echo "function get_passphrase (branchname)"
echo ' return "passphrasehere"'
echo "end"
;;
darcs)
if [ -e "$srcdir/_darcs" ]; then
echo "$srcdir already seems to be a darcs repository" >&2
exit 1
fi
mkdir -p "$repository"
(cd "$repository" && darcs initialize)
mkdir -p "$srcdir"
cd "$srcdir"
darcs initialize
echo .ikiwiki >> _darcs/prefs/boring
darcs record -a -l -q -m "initial import"
darcs pull -a -q "$repository"
darcs push -a -q "$repository"
echo "Directory $srcdir is now a branch of darcs repo $repository"
# set up master repo's apply hook and tell user to adjust it if desired
darcsdefaults="$repository/_darcs/prefs/defaults"
echo "Preconfiguring apply hook in $darcsdefaults - adjust as desired!"
echo "apply posthook $repository/_darcs/ikiwiki-wrapper" >> "$darcsdefaults"
echo "apply run-posthook" >> "$darcsdefaults"
;;
*)
echo "Unsupported revision control system $rcs" >&2
usage
;;
esac
|