--- a/Makefile Thu Dec 10 12:31:21 2009 +0100
+++ b/Makefile Thu Dec 10 12:31:57 2009 +0100
@@ -79,9 +79,9 @@
update-pot: i18n/hg.pot
-i18n/hg.pot: $(PYTHON_FILES) help/*.txt
+i18n/hg.pot: $(PYTHON_FILES) mercurial/help/*.txt
$(PYTHON) i18n/hggettext mercurial/commands.py \
- hgext/*.py hgext/*/__init__.py help/*.txt > i18n/hg.pot
+ hgext/*.py hgext/*/__init__.py mercurial/help/*.txt > i18n/hg.pot
# All strings marked for translation in Mercurial contain
# ASCII characters only. But some files contain string
# literals like this '\037\213'. xgettext thinks it has to
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/bash/hg Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,573 @@
+# bash completion for the Mercurial distributed SCM
+
+# Docs:
+#
+# If you source this file from your .bashrc, bash should be able to
+# complete a command line that uses hg with all the available commands
+# and options and sometimes even arguments.
+#
+# Mercurial allows you to define additional commands through extensions.
+# Bash should be able to automatically figure out the name of these new
+# commands and their options. See below for how to define _hg_opt_foo
+# and _hg_cmd_foo functions to fine-tune the completion for option and
+# non-option arguments, respectively.
+#
+#
+# Notes about completion for specific commands:
+#
+# - the completion function for the email command from the patchbomb
+# extension will try to call _hg_emails to get a list of e-mail
+# addresses. It's up to the user to define this function. For
+# example, put the addresses of the lists that you usually patchbomb
+# in ~/.patchbomb-to and the addresses that you usually use to send
+# the patchbombs in ~/.patchbomb-from and use something like this:
+#
+# _hg_emails()
+# {
+# if [ -r ~/.patchbomb-$1 ]; then
+# cat ~/.patchbomb-$1
+# fi
+# }
+#
+#
+# Writing completion functions for additional commands:
+#
+# If it exists, the function _hg_cmd_foo will be called without
+# arguments to generate the completion candidates for the hg command
+# "foo". If the command receives some arguments that aren't options
+# even though they start with a "-", you can define a function called
+# _hg_opt_foo to generate the completion candidates. If _hg_opt_foo
+# doesn't return 0, regular completion for options is attempted.
+#
+# In addition to the regular completion variables provided by bash,
+# the following variables are also set:
+# - $hg - the hg program being used (e.g. /usr/bin/hg)
+# - $cmd - the name of the hg command being completed
+# - $cmd_index - the index of $cmd in $COMP_WORDS
+# - $cur - the current argument being completed
+# - $prev - the argument before $cur
+# - $global_args - "|"-separated list of global options that accept
+# an argument (e.g. '--cwd|-R|--repository')
+# - $canonical - 1 if we canonicalized $cmd before calling the function
+# 0 otherwise
+#
+
+shopt -s extglob
+
+_hg_commands()
+{
+ local commands
+ commands="$("$hg" debugcomplete "$cur" 2>/dev/null)" || commands=""
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
+}
+
+_hg_paths()
+{
+ local paths="$("$hg" paths 2>/dev/null | sed -e 's/ = .*$//')"
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$paths' -- "$cur"))
+}
+
+_hg_repos()
+{
+ local i
+ for i in $(compgen -d -- "$cur"); do
+ test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i")
+ done
+}
+
+_hg_status()
+{
+ local files="$("$hg" status -n$1 . 2>/dev/null)"
+ local IFS=$'\n'
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
+}
+
+_hg_tags()
+{
+ local tags="$("$hg" tags -q 2>/dev/null)"
+ local IFS=$'\n'
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$tags' -- "$cur"))
+}
+
+_hg_branches()
+{
+ local branches="$("$hg" branches -q 2>/dev/null)"
+ local IFS=$'\n'
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur"))
+}
+
+# this is "kind of" ugly...
+_hg_count_non_option()
+{
+ local i count=0
+ local filters="$1"
+
+ for ((i=1; $i<=$COMP_CWORD; i++)); do
+ if [[ "${COMP_WORDS[i]}" != -* ]]; then
+ if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then
+ continue
+ fi
+ count=$(($count + 1))
+ fi
+ done
+
+ echo $(($count - 1))
+}
+
+_hg()
+{
+ local cur prev cmd cmd_index opts i
+ # global options that receive an argument
+ local global_args='--cwd|-R|--repository'
+ local hg="$1"
+ local canonical=0
+
+ COMPREPLY=()
+ cur="$2"
+ prev="$3"
+
+ # searching for the command
+ # (first non-option argument that doesn't follow a global option that
+ # receives an argument)
+ for ((i=1; $i<=$COMP_CWORD; i++)); do
+ if [[ ${COMP_WORDS[i]} != -* ]]; then
+ if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
+ cmd="${COMP_WORDS[i]}"
+ cmd_index=$i
+ break
+ fi
+ fi
+ done
+
+ if [[ "$cur" == -* ]]; then
+ if [ "$(type -t "_hg_opt_$cmd")" = function ] && "_hg_opt_$cmd"; then
+ return
+ fi
+
+ opts=$("$hg" debugcomplete --options "$cmd" 2>/dev/null)
+
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur"))
+ return
+ fi
+
+ # global options
+ case "$prev" in
+ -R|--repository)
+ _hg_paths
+ _hg_repos
+ return
+ ;;
+ --cwd)
+ # Stick with default bash completion
+ return
+ ;;
+ esac
+
+ if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
+ _hg_commands
+ return
+ fi
+
+ # try to generate completion candidates for whatever command the user typed
+ local help
+ if _hg_command_specific; then
+ return
+ fi
+
+ # canonicalize the command name and try again
+ help=$("$hg" help "$cmd" 2>/dev/null)
+ if [ $? -ne 0 ]; then
+ # Probably either the command doesn't exist or it's ambiguous
+ return
+ fi
+ cmd=${help#hg }
+ cmd=${cmd%%[$' \n']*}
+ canonical=1
+ _hg_command_specific
+}
+
+_hg_command_specific()
+{
+ if [ "$(type -t "_hg_cmd_$cmd")" = function ]; then
+ "_hg_cmd_$cmd"
+ return 0
+ fi
+
+ if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" == --rev ]; then
+ if [ $canonical = 1 ]; then
+ _hg_tags
+ _hg_branches
+ return 0
+ elif [[ status != "$cmd"* ]]; then
+ _hg_tags
+ _hg_branches
+ return 0
+ else
+ return 1
+ fi
+ fi
+
+ case "$cmd" in
+ help)
+ _hg_commands
+ ;;
+ export)
+ if _hg_ext_mq_patchlist qapplied && [ "${COMPREPLY[*]}" ]; then
+ return 0
+ fi
+ _hg_tags
+ _hg_branches
+ ;;
+ manifest|update)
+ _hg_tags
+ _hg_branches
+ ;;
+ pull|push|outgoing|incoming)
+ _hg_paths
+ _hg_repos
+ ;;
+ paths)
+ _hg_paths
+ ;;
+ add)
+ _hg_status "u"
+ ;;
+ merge)
+ _hg_tags
+ _hg_branches
+ ;;
+ commit)
+ _hg_status "mar"
+ ;;
+ remove)
+ _hg_status "d"
+ ;;
+ forget)
+ _hg_status "a"
+ ;;
+ diff)
+ _hg_status "mar"
+ ;;
+ revert)
+ _hg_status "mard"
+ ;;
+ clone)
+ local count=$(_hg_count_non_option)
+ if [ $count = 1 ]; then
+ _hg_paths
+ fi
+ _hg_repos
+ ;;
+ debugindex|debugindexdot)
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.i" -- "$cur"))
+ ;;
+ debugdata)
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.d" -- "$cur"))
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+
+ return 0
+}
+
+complete -o bashdefault -o default -F _hg hg 2>/dev/null \
+ || complete -o default -F _hg hg
+
+
+# Completion for commands provided by extensions
+
+# bookmarks
+_hg_bookmarks()
+{
+ local bookmarks="$("$hg" bookmarks --quiet 2>/dev/null )"
+ local IFS=$'\n'
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$bookmarks' -- "$cur"))
+}
+
+_hg_cmd_bookmarks()
+{
+ if [[ "$prev" = @(-d|--delete|-m|--rename) ]]; then
+ _hg_bookmarks
+ return
+ fi
+}
+
+# mq
+_hg_ext_mq_patchlist()
+{
+ local patches
+ patches=$("$hg" $1 2>/dev/null)
+ if [ $? -eq 0 ] && [ "$patches" ]; then
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$patches' -- "$cur"))
+ return 0
+ fi
+ return 1
+}
+
+_hg_ext_mq_queues()
+{
+ local root=$("$hg" root 2>/dev/null)
+ local n
+ for n in $(cd "$root"/.hg && compgen -d -- "$cur"); do
+ # I think we're usually not interested in the regular "patches" queue
+ # so just filter it.
+ if [ "$n" != patches ] && [ -e "$root/.hg/$n/series" ]; then
+ COMPREPLY=(${COMPREPLY[@]:-} "$n")
+ fi
+ done
+}
+
+_hg_cmd_qpop()
+{
+ if [[ "$prev" = @(-n|--name) ]]; then
+ _hg_ext_mq_queues
+ return
+ fi
+ _hg_ext_mq_patchlist qapplied
+}
+
+_hg_cmd_qpush()
+{
+ if [[ "$prev" = @(-n|--name) ]]; then
+ _hg_ext_mq_queues
+ return
+ fi
+ _hg_ext_mq_patchlist qunapplied
+}
+
+_hg_cmd_qgoto()
+{
+ if [[ "$prev" = @(-n|--name) ]]; then
+ _hg_ext_mq_queues
+ return
+ fi
+ _hg_ext_mq_patchlist qseries
+}
+
+_hg_cmd_qdelete()
+{
+ local qcmd=qunapplied
+ if [[ "$prev" = @(-r|--rev) ]]; then
+ qcmd=qapplied
+ fi
+ _hg_ext_mq_patchlist $qcmd
+}
+
+_hg_cmd_qfinish()
+{
+ if [[ "$prev" = @(-a|--applied) ]]; then
+ return
+ fi
+ _hg_ext_mq_patchlist qapplied
+}
+
+_hg_cmd_qsave()
+{
+ if [[ "$prev" = @(-n|--name) ]]; then
+ _hg_ext_mq_queues
+ return
+ fi
+}
+
+_hg_cmd_strip()
+{
+ _hg_tags
+ _hg_branches
+}
+
+_hg_cmd_qcommit()
+{
+ local root=$("$hg" root 2>/dev/null)
+ # this is run in a sub-shell, so we can't use _hg_status
+ local files=$(cd "$root/.hg/patches" 2>/dev/null &&
+ "$hg" status -nmar 2>/dev/null)
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
+}
+
+_hg_cmd_qfold()
+{
+ _hg_ext_mq_patchlist qunapplied
+}
+
+_hg_cmd_qrename()
+{
+ _hg_ext_mq_patchlist qseries
+}
+
+_hg_cmd_qheader()
+{
+ _hg_ext_mq_patchlist qseries
+}
+
+_hg_cmd_qclone()
+{
+ local count=$(_hg_count_non_option)
+ if [ $count = 1 ]; then
+ _hg_paths
+ fi
+ _hg_repos
+}
+
+_hg_ext_mq_guards()
+{
+ "$hg" qselect --series 2>/dev/null | sed -e 's/^.//'
+}
+
+_hg_cmd_qselect()
+{
+ local guards=$(_hg_ext_mq_guards)
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$guards' -- "$cur"))
+}
+
+_hg_cmd_qguard()
+{
+ local prefix=''
+
+ if [[ "$cur" == +* ]]; then
+ prefix=+
+ elif [[ "$cur" == -* ]]; then
+ prefix=-
+ fi
+ local ncur=${cur#[-+]}
+
+ if ! [ "$prefix" ]; then
+ _hg_ext_mq_patchlist qseries
+ return
+ fi
+
+ local guards=$(_hg_ext_mq_guards)
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -P $prefix -W '$guards' -- "$ncur"))
+}
+
+_hg_opt_qguard()
+{
+ local i
+ for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
+ if [[ ${COMP_WORDS[i]} != -* ]]; then
+ if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
+ _hg_cmd_qguard
+ return 0
+ fi
+ elif [ "${COMP_WORDS[i]}" = -- ]; then
+ _hg_cmd_qguard
+ return 0
+ fi
+ done
+ return 1
+}
+
+
+# hbisect
+_hg_cmd_bisect()
+{
+ local i subcmd
+
+ # find the sub-command
+ for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
+ if [[ ${COMP_WORDS[i]} != -* ]]; then
+ if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
+ subcmd="${COMP_WORDS[i]}"
+ break
+ fi
+ fi
+ done
+
+ if [ -z "$subcmd" ] || [ $COMP_CWORD -eq $i ] || [ "$subcmd" = help ]; then
+ COMPREPLY=(${COMPREPLY[@]:-}
+ $(compgen -W 'bad good help init next reset' -- "$cur"))
+ return
+ fi
+
+ case "$subcmd" in
+ good|bad)
+ _hg_tags
+ _hg_branches
+ ;;
+ esac
+
+ return
+}
+
+
+# patchbomb
+_hg_cmd_email()
+{
+ case "$prev" in
+ -c|--cc|-t|--to|-f|--from|--bcc)
+ # we need an e-mail address. let the user provide a function
+ # to get them
+ if [ "$(type -t _hg_emails)" = function ]; then
+ local arg=to
+ if [[ "$prev" == @(-f|--from) ]]; then
+ arg=from
+ fi
+ local addresses=$(_hg_emails $arg)
+ COMPREPLY=(${COMPREPLY[@]:-}
+ $(compgen -W '$addresses' -- "$cur"))
+ fi
+ return
+ ;;
+ -m|--mbox)
+ # fallback to standard filename completion
+ return
+ ;;
+ -s|--subject)
+ # free form string
+ return
+ ;;
+ esac
+
+ _hg_tags
+ _hg_branches
+ return
+}
+
+
+# gpg
+_hg_cmd_sign()
+{
+ _hg_tags
+ _hg_branches
+}
+
+
+# transplant
+_hg_cmd_transplant()
+{
+ case "$prev" in
+ -s|--source)
+ _hg_paths
+ _hg_repos
+ return
+ ;;
+ --filter)
+ # standard filename completion
+ return
+ ;;
+ esac
+
+ # all other transplant options values and command parameters are revisions
+ _hg_tags
+ _hg_branches
+ return
+}
+
+# shelve
+_hg_shelves()
+{
+ local shelves="$("$hg" unshelve -l . 2>/dev/null)"
+ local IFS=$'\n'
+ COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$shelves' -- "$cur"))
+}
+
+_hg_cmd_shelve()
+{
+ _hg_status "mard"
+}
+
+_hg_cmd_unshelve()
+{
+ _hg_shelves
+}
--- a/contrib/bash_completion Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,573 +0,0 @@
-# bash completion for the Mercurial distributed SCM
-
-# Docs:
-#
-# If you source this file from your .bashrc, bash should be able to
-# complete a command line that uses hg with all the available commands
-# and options and sometimes even arguments.
-#
-# Mercurial allows you to define additional commands through extensions.
-# Bash should be able to automatically figure out the name of these new
-# commands and their options. See below for how to define _hg_opt_foo
-# and _hg_cmd_foo functions to fine-tune the completion for option and
-# non-option arguments, respectively.
-#
-#
-# Notes about completion for specific commands:
-#
-# - the completion function for the email command from the patchbomb
-# extension will try to call _hg_emails to get a list of e-mail
-# addresses. It's up to the user to define this function. For
-# example, put the addresses of the lists that you usually patchbomb
-# in ~/.patchbomb-to and the addresses that you usually use to send
-# the patchbombs in ~/.patchbomb-from and use something like this:
-#
-# _hg_emails()
-# {
-# if [ -r ~/.patchbomb-$1 ]; then
-# cat ~/.patchbomb-$1
-# fi
-# }
-#
-#
-# Writing completion functions for additional commands:
-#
-# If it exists, the function _hg_cmd_foo will be called without
-# arguments to generate the completion candidates for the hg command
-# "foo". If the command receives some arguments that aren't options
-# even though they start with a "-", you can define a function called
-# _hg_opt_foo to generate the completion candidates. If _hg_opt_foo
-# doesn't return 0, regular completion for options is attempted.
-#
-# In addition to the regular completion variables provided by bash,
-# the following variables are also set:
-# - $hg - the hg program being used (e.g. /usr/bin/hg)
-# - $cmd - the name of the hg command being completed
-# - $cmd_index - the index of $cmd in $COMP_WORDS
-# - $cur - the current argument being completed
-# - $prev - the argument before $cur
-# - $global_args - "|"-separated list of global options that accept
-# an argument (e.g. '--cwd|-R|--repository')
-# - $canonical - 1 if we canonicalized $cmd before calling the function
-# 0 otherwise
-#
-
-shopt -s extglob
-
-_hg_commands()
-{
- local commands
- commands="$("$hg" debugcomplete "$cur" 2>/dev/null)" || commands=""
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$commands' -- "$cur"))
-}
-
-_hg_paths()
-{
- local paths="$("$hg" paths 2>/dev/null | sed -e 's/ = .*$//')"
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$paths' -- "$cur"))
-}
-
-_hg_repos()
-{
- local i
- for i in $(compgen -d -- "$cur"); do
- test ! -d "$i"/.hg || COMPREPLY=(${COMPREPLY[@]:-} "$i")
- done
-}
-
-_hg_status()
-{
- local files="$("$hg" status -n$1 . 2>/dev/null)"
- local IFS=$'\n'
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
-}
-
-_hg_tags()
-{
- local tags="$("$hg" tags -q 2>/dev/null)"
- local IFS=$'\n'
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$tags' -- "$cur"))
-}
-
-_hg_branches()
-{
- local branches="$("$hg" branches -q 2>/dev/null)"
- local IFS=$'\n'
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$branches' -- "$cur"))
-}
-
-# this is "kind of" ugly...
-_hg_count_non_option()
-{
- local i count=0
- local filters="$1"
-
- for ((i=1; $i<=$COMP_CWORD; i++)); do
- if [[ "${COMP_WORDS[i]}" != -* ]]; then
- if [[ ${COMP_WORDS[i-1]} == @($filters|$global_args) ]]; then
- continue
- fi
- count=$(($count + 1))
- fi
- done
-
- echo $(($count - 1))
-}
-
-_hg()
-{
- local cur prev cmd cmd_index opts i
- # global options that receive an argument
- local global_args='--cwd|-R|--repository'
- local hg="$1"
- local canonical=0
-
- COMPREPLY=()
- cur="$2"
- prev="$3"
-
- # searching for the command
- # (first non-option argument that doesn't follow a global option that
- # receives an argument)
- for ((i=1; $i<=$COMP_CWORD; i++)); do
- if [[ ${COMP_WORDS[i]} != -* ]]; then
- if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
- cmd="${COMP_WORDS[i]}"
- cmd_index=$i
- break
- fi
- fi
- done
-
- if [[ "$cur" == -* ]]; then
- if [ "$(type -t "_hg_opt_$cmd")" = function ] && "_hg_opt_$cmd"; then
- return
- fi
-
- opts=$("$hg" debugcomplete --options "$cmd" 2>/dev/null)
-
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$opts' -- "$cur"))
- return
- fi
-
- # global options
- case "$prev" in
- -R|--repository)
- _hg_paths
- _hg_repos
- return
- ;;
- --cwd)
- # Stick with default bash completion
- return
- ;;
- esac
-
- if [ -z "$cmd" ] || [ $COMP_CWORD -eq $i ]; then
- _hg_commands
- return
- fi
-
- # try to generate completion candidates for whatever command the user typed
- local help
- if _hg_command_specific; then
- return
- fi
-
- # canonicalize the command name and try again
- help=$("$hg" help "$cmd" 2>/dev/null)
- if [ $? -ne 0 ]; then
- # Probably either the command doesn't exist or it's ambiguous
- return
- fi
- cmd=${help#hg }
- cmd=${cmd%%[$' \n']*}
- canonical=1
- _hg_command_specific
-}
-
-_hg_command_specific()
-{
- if [ "$(type -t "_hg_cmd_$cmd")" = function ]; then
- "_hg_cmd_$cmd"
- return 0
- fi
-
- if [ "$cmd" != status ] && [ "$prev" = -r ] || [ "$prev" == --rev ]; then
- if [ $canonical = 1 ]; then
- _hg_tags
- _hg_branches
- return 0
- elif [[ status != "$cmd"* ]]; then
- _hg_tags
- _hg_branches
- return 0
- else
- return 1
- fi
- fi
-
- case "$cmd" in
- help)
- _hg_commands
- ;;
- export)
- if _hg_ext_mq_patchlist qapplied && [ "${COMPREPLY[*]}" ]; then
- return 0
- fi
- _hg_tags
- _hg_branches
- ;;
- manifest|update)
- _hg_tags
- _hg_branches
- ;;
- pull|push|outgoing|incoming)
- _hg_paths
- _hg_repos
- ;;
- paths)
- _hg_paths
- ;;
- add)
- _hg_status "u"
- ;;
- merge)
- _hg_tags
- _hg_branches
- ;;
- commit)
- _hg_status "mar"
- ;;
- remove)
- _hg_status "d"
- ;;
- forget)
- _hg_status "a"
- ;;
- diff)
- _hg_status "mar"
- ;;
- revert)
- _hg_status "mard"
- ;;
- clone)
- local count=$(_hg_count_non_option)
- if [ $count = 1 ]; then
- _hg_paths
- fi
- _hg_repos
- ;;
- debugindex|debugindexdot)
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.i" -- "$cur"))
- ;;
- debugdata)
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -f -X "!*.d" -- "$cur"))
- ;;
- *)
- return 1
- ;;
- esac
-
- return 0
-}
-
-complete -o bashdefault -o default -F _hg hg 2>/dev/null \
- || complete -o default -F _hg hg
-
-
-# Completion for commands provided by extensions
-
-# bookmarks
-_hg_bookmarks()
-{
- local bookmarks="$("$hg" bookmarks --quiet 2>/dev/null )"
- local IFS=$'\n'
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$bookmarks' -- "$cur"))
-}
-
-_hg_cmd_bookmarks()
-{
- if [[ "$prev" = @(-d|--delete|-m|--rename) ]]; then
- _hg_bookmarks
- return
- fi
-}
-
-# mq
-_hg_ext_mq_patchlist()
-{
- local patches
- patches=$("$hg" $1 2>/dev/null)
- if [ $? -eq 0 ] && [ "$patches" ]; then
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$patches' -- "$cur"))
- return 0
- fi
- return 1
-}
-
-_hg_ext_mq_queues()
-{
- local root=$("$hg" root 2>/dev/null)
- local n
- for n in $(cd "$root"/.hg && compgen -d -- "$cur"); do
- # I think we're usually not interested in the regular "patches" queue
- # so just filter it.
- if [ "$n" != patches ] && [ -e "$root/.hg/$n/series" ]; then
- COMPREPLY=(${COMPREPLY[@]:-} "$n")
- fi
- done
-}
-
-_hg_cmd_qpop()
-{
- if [[ "$prev" = @(-n|--name) ]]; then
- _hg_ext_mq_queues
- return
- fi
- _hg_ext_mq_patchlist qapplied
-}
-
-_hg_cmd_qpush()
-{
- if [[ "$prev" = @(-n|--name) ]]; then
- _hg_ext_mq_queues
- return
- fi
- _hg_ext_mq_patchlist qunapplied
-}
-
-_hg_cmd_qgoto()
-{
- if [[ "$prev" = @(-n|--name) ]]; then
- _hg_ext_mq_queues
- return
- fi
- _hg_ext_mq_patchlist qseries
-}
-
-_hg_cmd_qdelete()
-{
- local qcmd=qunapplied
- if [[ "$prev" = @(-r|--rev) ]]; then
- qcmd=qapplied
- fi
- _hg_ext_mq_patchlist $qcmd
-}
-
-_hg_cmd_qfinish()
-{
- if [[ "$prev" = @(-a|--applied) ]]; then
- return
- fi
- _hg_ext_mq_patchlist qapplied
-}
-
-_hg_cmd_qsave()
-{
- if [[ "$prev" = @(-n|--name) ]]; then
- _hg_ext_mq_queues
- return
- fi
-}
-
-_hg_cmd_strip()
-{
- _hg_tags
- _hg_branches
-}
-
-_hg_cmd_qcommit()
-{
- local root=$("$hg" root 2>/dev/null)
- # this is run in a sub-shell, so we can't use _hg_status
- local files=$(cd "$root/.hg/patches" 2>/dev/null &&
- "$hg" status -nmar 2>/dev/null)
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$files' -- "$cur"))
-}
-
-_hg_cmd_qfold()
-{
- _hg_ext_mq_patchlist qunapplied
-}
-
-_hg_cmd_qrename()
-{
- _hg_ext_mq_patchlist qseries
-}
-
-_hg_cmd_qheader()
-{
- _hg_ext_mq_patchlist qseries
-}
-
-_hg_cmd_qclone()
-{
- local count=$(_hg_count_non_option)
- if [ $count = 1 ]; then
- _hg_paths
- fi
- _hg_repos
-}
-
-_hg_ext_mq_guards()
-{
- "$hg" qselect --series 2>/dev/null | sed -e 's/^.//'
-}
-
-_hg_cmd_qselect()
-{
- local guards=$(_hg_ext_mq_guards)
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$guards' -- "$cur"))
-}
-
-_hg_cmd_qguard()
-{
- local prefix=''
-
- if [[ "$cur" == +* ]]; then
- prefix=+
- elif [[ "$cur" == -* ]]; then
- prefix=-
- fi
- local ncur=${cur#[-+]}
-
- if ! [ "$prefix" ]; then
- _hg_ext_mq_patchlist qseries
- return
- fi
-
- local guards=$(_hg_ext_mq_guards)
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -P $prefix -W '$guards' -- "$ncur"))
-}
-
-_hg_opt_qguard()
-{
- local i
- for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
- if [[ ${COMP_WORDS[i]} != -* ]]; then
- if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
- _hg_cmd_qguard
- return 0
- fi
- elif [ "${COMP_WORDS[i]}" = -- ]; then
- _hg_cmd_qguard
- return 0
- fi
- done
- return 1
-}
-
-
-# hbisect
-_hg_cmd_bisect()
-{
- local i subcmd
-
- # find the sub-command
- for ((i=cmd_index+1; i<=COMP_CWORD; i++)); do
- if [[ ${COMP_WORDS[i]} != -* ]]; then
- if [[ ${COMP_WORDS[i-1]} != @($global_args) ]]; then
- subcmd="${COMP_WORDS[i]}"
- break
- fi
- fi
- done
-
- if [ -z "$subcmd" ] || [ $COMP_CWORD -eq $i ] || [ "$subcmd" = help ]; then
- COMPREPLY=(${COMPREPLY[@]:-}
- $(compgen -W 'bad good help init next reset' -- "$cur"))
- return
- fi
-
- case "$subcmd" in
- good|bad)
- _hg_tags
- _hg_branches
- ;;
- esac
-
- return
-}
-
-
-# patchbomb
-_hg_cmd_email()
-{
- case "$prev" in
- -c|--cc|-t|--to|-f|--from|--bcc)
- # we need an e-mail address. let the user provide a function
- # to get them
- if [ "$(type -t _hg_emails)" = function ]; then
- local arg=to
- if [[ "$prev" == @(-f|--from) ]]; then
- arg=from
- fi
- local addresses=$(_hg_emails $arg)
- COMPREPLY=(${COMPREPLY[@]:-}
- $(compgen -W '$addresses' -- "$cur"))
- fi
- return
- ;;
- -m|--mbox)
- # fallback to standard filename completion
- return
- ;;
- -s|--subject)
- # free form string
- return
- ;;
- esac
-
- _hg_tags
- _hg_branches
- return
-}
-
-
-# gpg
-_hg_cmd_sign()
-{
- _hg_tags
- _hg_branches
-}
-
-
-# transplant
-_hg_cmd_transplant()
-{
- case "$prev" in
- -s|--source)
- _hg_paths
- _hg_repos
- return
- ;;
- --filter)
- # standard filename completion
- return
- ;;
- esac
-
- # all other transplant options values and command parameters are revisions
- _hg_tags
- _hg_branches
- return
-}
-
-# shelve
-_hg_shelves()
-{
- local shelves="$("$hg" unshelve -l . 2>/dev/null)"
- local IFS=$'\n'
- COMPREPLY=(${COMPREPLY[@]:-} $(compgen -W '$shelves' -- "$cur"))
-}
-
-_hg_cmd_shelve()
-{
- _hg_status "mard"
-}
-
-_hg_cmd_unshelve()
-{
- _hg_shelves
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/memory.py Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+# memory.py - track memory usage
+#
+# Copyright 2009 Matt Mackall <mpm@selenic.com> and others
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+'''helper extension to measure memory usage
+
+Reads current and peak memory usage from ``/proc/self/status`` and
+prints it to ``stderr`` on exit.
+'''
+
+import atexit
+
+def memusage(ui):
+ """Report memory usage of the current process."""
+ status = None
+ result = {'peak': 0, 'rss': 0}
+ try:
+ # This will only work on systems with a /proc file system
+ # (like Linux).
+ status = open('/proc/self/status', 'r')
+ for line in status:
+ parts = line.split()
+ key = parts[0][2:-1].lower()
+ if key in result:
+ result[key] = int(parts[1])
+ finally:
+ if status is not None:
+ status.close()
+ ui.write_err(", ".join(["%s: %.1f MiB" % (key, value/1024.0)
+ for key, value in result.iteritems()]) + "\n")
+
+def extsetup(ui):
+ atexit.register(memusage, ui)
--- a/contrib/perf.py Thu Dec 10 12:31:21 2009 +0100
+++ b/contrib/perf.py Thu Dec 10 12:31:57 2009 +0100
@@ -103,9 +103,10 @@
def perflookup(ui, repo, rev):
timer(lambda: len(repo.lookup(rev)))
-def perflog(ui, repo):
+def perflog(ui, repo, **opts):
ui.pushbuffer()
- timer(lambda: commands.log(ui, repo, rev=[], date='', user=''))
+ timer(lambda: commands.log(ui, repo, rev=[], date='', user='',
+ copies=opts.get('rename')))
ui.popbuffer()
def perftemplating(ui, repo):
@@ -144,7 +145,8 @@
'perftags': (perftags, []),
'perfdirstate': (perfdirstate, []),
'perfdirstatedirs': (perfdirstate, []),
- 'perflog': (perflog, []),
+ 'perflog': (perflog,
+ [('', 'rename', False, 'ask log to follow renames')]),
'perftemplating': (perftemplating, []),
'perfdiffwd': (perfdiffwd, []),
}
--- a/contrib/shrink-revlog.py Thu Dec 10 12:31:21 2009 +0100
+++ b/contrib/shrink-revlog.py Thu Dec 10 12:31:57 2009 +0100
@@ -20,6 +20,7 @@
import sys, os, tempfile
import optparse
from mercurial import ui as ui_, hg, revlog, transaction, node, util
+from mercurial import changegroup
def toposort(rl):
write = sys.stdout.write
@@ -73,18 +74,23 @@
def writerevs(r1, r2, order, tr):
write = sys.stdout.write
write('writing %d revs ' % len(order))
+
+ count = [0]
+ def progress(*args):
+ if count[0] % 1000 == 0:
+ write('.')
+ count[0] += 1
+
+ order = [r1.node(r) for r in order]
+
+ # this is a bit ugly, but it works
+ lookup = lambda x: "%020d" % r1.linkrev(r1.rev(x))
+ unlookup = lambda x: int(x, 10)
+
try:
- count = 0
- for rev in order:
- n = r1.node(rev)
- p1, p2 = r1.parents(n)
- l = r1.linkrev(rev)
- t = r1.revision(n)
- n2 = r2.addrevision(t, tr, l, p1, p2)
-
- if count % 1000 == 0:
- write('.')
- count += 1
+ group = util.chunkbuffer(r1.group(order, lookup, progress))
+ chunkiter = changegroup.chunkiter(group)
+ r2.addgroup(chunkiter, unlookup, tr)
finally:
write('\n')
--- a/contrib/win32/mercurial.iss Thu Dec 10 12:31:21 2009 +0100
+++ b/contrib/win32/mercurial.iss Thu Dec 10 12:31:57 2009 +0100
@@ -45,7 +45,8 @@
[Files]
Source: contrib\mercurial.el; DestDir: {app}/Contrib
Source: contrib\vim\*.*; DestDir: {app}/Contrib/Vim
-Source: contrib\zsh_completion; DestDir: {app}/Contrib
+Source: contrib\zsh\*.*; DestDir: {app}\Contrib\zsh
+Source: contrib\bash\*.*; DestDir: {app}\Contrib\bash
Source: contrib\hgk; DestDir: {app}/Contrib; DestName: hgk.tcl
Source: contrib\win32\ReadMe.html; DestDir: {app}; Flags: isreadme
Source: contrib\mergetools.hgrc; DestDir: {tmp};
@@ -62,9 +63,9 @@
Source: dist\add_path.exe; DestDir: {app}
Source: doc\*.html; DestDir: {app}\Docs
Source: doc\style.css; DestDir: {app}\Docs
-Source: help\*.txt; DestDir: {app}\help
+Source: mercurial\help\*.txt; DestDir: {app}\help
Source: locale\*.*; DestDir: {app}\locale; Flags: recursesubdirs createallsubdirs
-Source: templates\*.*; DestDir: {app}\Templates; Flags: recursesubdirs createallsubdirs
+Source: mercurial\templates\*.*; DestDir: {app}\Templates; Flags: recursesubdirs createallsubdirs
Source: CONTRIBUTORS; DestDir: {app}; DestName: Contributors.txt
Source: COPYING; DestDir: {app}; DestName: Copying.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contrib/zsh/_hg Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,951 @@
+#compdef hg
+
+# Zsh completion script for mercurial. Rename this file to _hg and copy
+# it into your zsh function path (/usr/share/zsh/site-functions for
+# instance)
+#
+# If you do not want to install it globally, you can copy it somewhere
+# else and add that directory to $fpath. This must be done before
+# compinit is called. If the file is copied to ~/.zsh.d, your ~/.zshrc
+# file could look like this:
+#
+# fpath=("$HOME/.zsh.d" $fpath)
+# autoload -U compinit
+# compinit
+#
+# Copyright (C) 2005, 2006 Steve Borho <steve@borho.org>
+# Copyright (C) 2006-9 Brendan Cully <brendan@kublai.com>
+#
+# Permission is hereby granted, without written agreement and without
+# licence or royalty fees, to use, copy, modify, and distribute this
+# software and to distribute modified versions of this software for any
+# purpose, provided that the above copyright notice and the following
+# two paragraphs appear in all copies of this software.
+#
+# In no event shall the authors be liable to any party for direct,
+# indirect, special, incidental, or consequential damages arising out of
+# the use of this software and its documentation, even if the authors
+# have been advised of the possibility of such damage.
+#
+# The authors specifically disclaim any warranties, including, but not
+# limited to, the implied warranties of merchantability and fitness for
+# a particular purpose. The software provided hereunder is on an "as
+# is" basis, and the authors have no obligation to provide maintenance,
+# support, updates, enhancements, or modifications.
+
+emulate -LR zsh
+setopt extendedglob
+
+local curcontext="$curcontext" state line
+typeset -A _hg_cmd_globals
+
+_hg() {
+ local cmd _hg_root
+ integer i=2
+ _hg_cmd_globals=()
+
+ while (( i < $#words ))
+ do
+ case "$words[$i]" in
+ -R|--repository)
+ eval _hg_root="$words[$i+1]"
+ _hg_cmd_globals+=("$words[$i]" "$_hg_root")
+ (( i += 2 ))
+ continue
+ ;;
+ -R*)
+ _hg_cmd_globals+="$words[$i]"
+ eval _hg_root="${words[$i]#-R}"
+ (( i++ ))
+ continue
+ ;;
+ --cwd|--config)
+ # pass along arguments to hg completer
+ _hg_cmd_globals+=("$words[$i]" "$words[$i+1]")
+ (( i += 2 ))
+ continue
+ ;;
+ -*)
+ # skip option
+ (( i++ ))
+ continue
+ ;;
+ esac
+ if [[ -z "$cmd" ]]
+ then
+ cmd="$words[$i]"
+ words[$i]=()
+ (( CURRENT-- ))
+ fi
+ (( i++ ))
+ done
+
+ if [[ -z "$cmd" ]]
+ then
+ _arguments -s -w : $_hg_global_opts \
+ ':mercurial command:_hg_commands'
+ return
+ fi
+
+ # resolve abbreviations and aliases
+ if ! (( $+functions[_hg_cmd_${cmd}] ))
+ then
+ local cmdexp
+ (( $#_hg_cmd_list )) || _hg_get_commands
+
+ cmdexp=$_hg_cmd_list[(r)${cmd}*]
+ if [[ $cmdexp == $_hg_cmd_list[(R)${cmd}*] ]]
+ then
+ # might be nice to rewrite the command line with the expansion
+ cmd="$cmdexp"
+ fi
+ if [[ -n $_hg_alias_list[$cmd] ]]
+ then
+ cmd=$_hg_alias_list[$cmd]
+ fi
+ fi
+
+ curcontext="${curcontext%:*:*}:hg-${cmd}:"
+
+ zstyle -s ":completion:$curcontext:" cache-policy update_policy
+
+ if [[ -z "$update_policy" ]]
+ then
+ zstyle ":completion:$curcontext:" cache-policy _hg_cache_policy
+ fi
+
+ if (( $+functions[_hg_cmd_${cmd}] ))
+ then
+ _hg_cmd_${cmd}
+ else
+ # complete unknown commands normally
+ _arguments -s -w : $_hg_global_opts \
+ '*:files:_hg_files'
+ fi
+}
+
+_hg_cache_policy() {
+ typeset -a old
+
+ # cache for a minute
+ old=( "$1"(mm+10) )
+ (( $#old )) && return 0
+
+ return 1
+}
+
+_hg_get_commands() {
+ typeset -ga _hg_cmd_list
+ typeset -gA _hg_alias_list
+ local hline cmd cmdalias
+
+ _call_program hg hg debugcomplete -v | while read -A hline
+ do
+ cmd=$hline[1]
+ _hg_cmd_list+=($cmd)
+
+ for cmdalias in $hline[2,-1]
+ do
+ _hg_cmd_list+=($cmdalias)
+ _hg_alias_list+=($cmdalias $cmd)
+ done
+ done
+}
+
+_hg_commands() {
+ (( $#_hg_cmd_list )) || _hg_get_commands
+ _describe -t commands 'mercurial command' _hg_cmd_list
+}
+
+_hg_revrange() {
+ compset -P 1 '*:'
+ _hg_tags "$@"
+}
+
+_hg_tags() {
+ typeset -a tags
+ local tag rev
+
+ _hg_cmd tags | while read tag
+ do
+ tags+=(${tag/ # [0-9]#:*})
+ done
+ (( $#tags )) && _describe -t tags 'tags' tags
+}
+
+# likely merge candidates
+_hg_mergerevs() {
+ typeset -a heads
+ local myrev
+
+ heads=(${(f)"$(_hg_cmd heads --template '{rev}\\n')"})
+ # exclude own revision
+ myrev=$(_hg_cmd log -r . --template '{rev}\\n')
+ heads=(${heads:#$myrev})
+
+ (( $#heads )) && _describe -t heads 'heads' heads
+}
+
+_hg_files() {
+ if [[ -n "$_hg_root" ]]
+ then
+ [[ -d "$_hg_root/.hg" ]] || return
+ case "$_hg_root" in
+ /*)
+ _files -W $_hg_root
+ ;;
+ *)
+ _files -W $PWD/$_hg_root
+ ;;
+ esac
+ else
+ _files
+ fi
+}
+
+_hg_status() {
+ [[ -d $PREFIX ]] || PREFIX=$PREFIX:h
+ status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 ./$PREFIX)"})
+}
+
+_hg_unknown() {
+ typeset -a status_files
+ _hg_status u
+ _wanted files expl 'unknown files' _multi_parts / status_files
+}
+
+_hg_missing() {
+ typeset -a status_files
+ _hg_status d
+ _wanted files expl 'missing files' _multi_parts / status_files
+}
+
+_hg_modified() {
+ typeset -a status_files
+ _hg_status m
+ _wanted files expl 'modified files' _multi_parts / status_files
+}
+
+_hg_resolve() {
+ local rstate rpath
+
+ [[ -d $PREFIX ]] || PREFIX=$PREFIX:h
+
+ _hg_cmd resolve -l ./$PREFIX | while read rstate rpath
+ do
+ [[ $rstate == 'R' ]] && resolved_files+=($rpath)
+ [[ $rstate == 'U' ]] && unresolved_files+=($rpath)
+ done
+}
+
+_hg_resolved() {
+ typeset -a resolved_files unresolved_files
+ _hg_resolve
+ _wanted files expl 'resolved files' _multi_parts / resolved_files
+}
+
+_hg_unresolved() {
+ typeset -a resolved_files unresolved_files
+ _hg_resolve
+ _wanted files expl 'unresolved files' _multi_parts / unresolved_files
+}
+
+_hg_config() {
+ typeset -a items
+ items=(${${(%f)"$(_call_program hg hg showconfig)"}%%\=*})
+ (( $#items )) && _describe -t config 'config item' items
+}
+
+_hg_addremove() {
+ _alternative 'files:unknown files:_hg_unknown' \
+ 'files:missing files:_hg_missing'
+}
+
+_hg_ssh_urls() {
+ if [[ -prefix */ ]]
+ then
+ if zstyle -T ":completion:${curcontext}:files" remote-access
+ then
+ local host=${PREFIX%%/*}
+ typeset -a remdirs
+ compset -p $(( $#host + 1 ))
+ local rempath=${(M)PREFIX##*/}
+ local cacheid="hg:${host}-${rempath//\//_}"
+ cacheid=${cacheid%[-_]}
+ compset -P '*/'
+ if _cache_invalid "$cacheid" || ! _retrieve_cache "$cacheid"
+ then
+ remdirs=(${${(M)${(f)"$(_call_program files ssh -a -x $host ls -1FL "${(q)rempath}")"}##*/}%/})
+ _store_cache "$cacheid" remdirs
+ fi
+ _describe -t directories 'remote directory' remdirs -S/
+ else
+ _message 'remote directory'
+ fi
+ else
+ if compset -P '*@'
+ then
+ _hosts -S/
+ else
+ _alternative 'hosts:remote host name:_hosts -S/' \
+ 'users:user:_users -S@'
+ fi
+ fi
+}
+
+_hg_urls() {
+ if compset -P bundle://
+ then
+ _files
+ elif compset -P ssh://
+ then
+ _hg_ssh_urls
+ elif [[ -prefix *: ]]
+ then
+ _urls
+ else
+ local expl
+ compset -S '[^:]*'
+ _wanted url-schemas expl 'URL schema' compadd -S '' - \
+ http:// https:// ssh:// bundle://
+ fi
+}
+
+_hg_paths() {
+ typeset -a paths pnames
+ _hg_cmd paths | while read -A pnames
+ do
+ paths+=($pnames[1])
+ done
+ (( $#paths )) && _describe -t path-aliases 'repository alias' paths
+}
+
+_hg_remote() {
+ _alternative 'path-aliases:repository alias:_hg_paths' \
+ 'directories:directory:_files -/' \
+ 'urls:URL:_hg_urls'
+}
+
+_hg_clone_dest() {
+ _alternative 'directories:directory:_files -/' \
+ 'urls:URL:_hg_urls'
+}
+
+# Common options
+_hg_global_opts=(
+ '(--repository -R)'{-R+,--repository}'[repository root directory]:repository:_files -/'
+ '--cwd[change working directory]:new working directory:_files -/'
+ '(--noninteractive -y)'{-y,--noninteractive}'[do not prompt, assume yes for any required answers]'
+ '(--verbose -v)'{-v,--verbose}'[enable additional output]'
+ '*--config[set/override config option]:defined config items:_hg_config'
+ '(--quiet -q)'{-q,--quiet}'[suppress output]'
+ '(--help -h)'{-h,--help}'[display help and exit]'
+ '--debug[debug mode]'
+ '--debugger[start debugger]'
+ '--encoding[set the charset encoding (default: UTF8)]'
+ '--encodingmode[set the charset encoding mode (default: strict)]'
+ '--lsprof[print improved command execution profile]'
+ '--traceback[print traceback on exception]'
+ '--time[time how long the command takes]'
+ '--profile[profile]'
+ '--version[output version information and exit]'
+)
+
+_hg_pat_opts=(
+ '*'{-I+,--include}'[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
+ '*'{-X+,--exclude}'[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/')
+
+_hg_diff_opts=(
+ '(--text -a)'{-a,--text}'[treat all files as text]'
+ '(--git -g)'{-g,--git}'[use git extended diff format]'
+ "--nodates[don't include dates in diff headers]")
+
+_hg_dryrun_opts=(
+ '(--dry-run -n)'{-n,--dry-run}'[do not perform actions, just print output]')
+
+_hg_style_opts=(
+ '--style[display using template map file]:'
+ '--template[display with template]:')
+
+_hg_commit_opts=(
+ '(-m --message -l --logfile --edit -e)'{-e,--edit}'[edit commit message]'
+ '(-e --edit -l --logfile --message -m)'{-m+,--message}'[use <text> as commit message]:message:'
+ '(-e --edit -m --message --logfile -l)'{-l+,--logfile}'[read the commit message from <file>]:log file:_files')
+
+_hg_remote_opts=(
+ '(--ssh -e)'{-e+,--ssh}'[specify ssh command to use]:'
+ '--remotecmd[specify hg command to run on the remote side]:')
+
+_hg_cmd() {
+ _call_program hg hg --config ui.verbose=0 --config defaults."$1"= \
+ "$_hg_cmd_globals[@]" "$@" 2> /dev/null
+}
+
+_hg_cmd_add() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ '*:unknown files:_hg_unknown'
+}
+
+_hg_cmd_addremove() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ '(--similarity -s)'{-s+,--similarity}'[guess renamed files by similarity (0<=s<=100)]:' \
+ '*:unknown or missing files:_hg_addremove'
+}
+
+_hg_cmd_annotate() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--rev -r)'{-r+,--rev}'[annotate the specified revision]:revision:_hg_tags' \
+ '(--follow -f)'{-f,--follow}'[follow file copies and renames]' \
+ '(--text -a)'{-a,--text}'[treat all files as text]' \
+ '(--user -u)'{-u,--user}'[list the author]' \
+ '(--date -d)'{-d,--date}'[list the date]' \
+ '(--number -n)'{-n,--number}'[list the revision number (default)]' \
+ '(--changeset -c)'{-c,--changeset}'[list the changeset]' \
+ '*:files:_hg_files'
+}
+
+_hg_cmd_archive() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '--no-decode[do not pass files through decoders]' \
+ '(--prefix -p)'{-p+,--prefix}'[directory prefix for files in archive]:' \
+ '(--rev -r)'{-r+,--rev}'[revision to distribute]:revision:_hg_tags' \
+ '(--type -t)'{-t+,--type}'[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \
+ '*:destination:_files'
+}
+
+_hg_cmd_backout() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '--merge[merge with old dirstate parent after backout]' \
+ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
+ '--parent[parent to choose when backing out merge]' \
+ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
+ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
+ '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
+ '(--logfile -l)'{-l+,--logfile}'[read commit message from <file>]:log file:_files -g \*.txt'
+}
+
+_hg_cmd_bisect() {
+ _arguments -s -w : $_hg_global_opts \
+ '(-)'{-r,--reset}'[reset bisect state]' \
+ '(--good -g --bad -b --skip -s --reset -r)'{-g,--good}'[mark changeset good]'::revision:_hg_tags \
+ '(--good -g --bad -b --skip -s --reset -r)'{-b,--bad}'[mark changeset bad]'::revision:_hg_tags \
+ '(--good -g --bad -b --skip -s --reset -r)'{-s,--skip}'[skip testing changeset]' \
+ '(--command -c --noupdate -U)'{-c+,--command}'[use command to check changeset state]':commands:_command_names \
+ '(--command -c --noupdate -U)'{-U,--noupdate}'[do not update to target]'
+}
+
+_hg_cmd_branch() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--force -f)'{-f,--force}'[set branch name even if it shadows an existing branch]' \
+ '(--clean -C)'{-C,--clean}'[reset branch name to parent branch name]'
+}
+
+_hg_cmd_branches() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--active -a)'{-a,--active}'[show only branches that have unmerge heads]'
+}
+
+_hg_cmd_bundle() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
+ '(--force -f)'{-f,--force}'[run even when remote repository is unrelated]' \
+ '(2)*--base[a base changeset to specify instead of a destination]:revision:_hg_tags' \
+ ':output file:_files' \
+ ':destination repository:_files -/'
+}
+
+_hg_cmd_cat() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--output -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \
+ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
+ '*:file:_hg_files'
+}
+
+_hg_cmd_clone() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
+ '(--noupdate -U)'{-U,--noupdate}'[do not update the new working directory]' \
+ '(--rev -r)'{-r+,--rev}'[a changeset you would like to have after cloning]:' \
+ '--uncompressed[use uncompressed transfer (fast over LAN)]' \
+ ':source repository:_hg_remote' \
+ ':destination:_hg_clone_dest'
+}
+
+_hg_cmd_commit() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--addremove -A)'{-A,--addremove}'[mark new/missing files as added/removed before committing]' \
+ '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
+ '(--logfile -l)'{-l+,--logfile}'[read commit message from <file>]:log file:_files -g \*.txt' \
+ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
+ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
+ '*:file:_hg_files'
+}
+
+_hg_cmd_copy() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ '(--after -A)'{-A,--after}'[record a copy that has already occurred]' \
+ '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
+ '*:file:_hg_files'
+}
+
+_hg_cmd_diff() {
+ typeset -A opt_args
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts \
+ '*'{-r,--rev}'+[revision]:revision:_hg_revrange' \
+ '(--show-function -p)'{-p,--show-function}'[show which function each change is in]' \
+ '(--ignore-all-space -w)'{-w,--ignore-all-space}'[ignore white space when comparing lines]' \
+ '(--ignore-space-change -b)'{-b,--ignore-space-change}'[ignore changes in the amount of white space]' \
+ '(--ignore-blank-lines -B)'{-B,--ignore-blank-lines}'[ignore changes whose lines are all blank]' \
+ '*:file:->diff_files'
+
+ if [[ $state == 'diff_files' ]]
+ then
+ if [[ -n $opt_args[-r] ]]
+ then
+ _hg_files
+ else
+ _hg_modified
+ fi
+ fi
+}
+
+_hg_cmd_export() {
+ _arguments -s -w : $_hg_global_opts $_hg_diff_opts \
+ '(--outout -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \
+ '--switch-parent[diff against the second parent]' \
+ '*:revision:_hg_tags'
+}
+
+_hg_cmd_grep() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--print0 -0)'{-0,--print0}'[end filenames with NUL]' \
+ '--all[print all revisions with matches]' \
+ '(--follow -f)'{-f,--follow}'[follow changeset or file history]' \
+ '(--ignore-case -i)'{-i,--ignore-case}'[ignore case when matching]' \
+ '(--files-with-matches -l)'{-l,--files-with-matches}'[print only filenames and revs that match]' \
+ '(--line-number -n)'{-n,--line-number}'[print matching line numbers]' \
+ '*'{-r+,--rev}'[search in given revision range]:revision:_hg_revrange' \
+ '(--user -u)'{-u,--user}'[print user who committed change]' \
+ '1:search pattern:' \
+ '*:files:_hg_files'
+}
+
+_hg_cmd_heads() {
+ _arguments -s -w : $_hg_global_opts $_hg_style_opts \
+ '(--rev -r)'{-r+,--rev}'[show only heads which are descendants of rev]:revision:_hg_tags'
+}
+
+_hg_cmd_help() {
+ _arguments -s -w : $_hg_global_opts \
+ '*:mercurial command:_hg_commands'
+}
+
+_hg_cmd_identify() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--rev -r)'{-r+,--rev}'[identify the specified rev]:revision:_hg_tags' \
+ '(--num -n)'{-n+,--num}'[show local revision number]' \
+ '(--id -i)'{-i+,--id}'[show global revision id]' \
+ '(--branch -b)'{-b+,--branch}'[show branch]' \
+ '(--tags -t)'{-t+,--tags}'[show tags]'
+}
+
+_hg_cmd_import() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--strip -p)'{-p+,--strip}'[directory strip option for patch (default: 1)]:count:' \
+ '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
+ '(--force -f)'{-f,--force}'[skip check for outstanding uncommitted changes]' \
+ '*:patch:_files'
+}
+
+_hg_cmd_incoming() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
+ '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
+ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
+ '(--patch -p)'{-p,--patch}'[show patch]' \
+ '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:_hg_tags' \
+ '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
+ '--bundle[file to store the bundles into]:bundle file:_files' \
+ ':source:_hg_remote'
+}
+
+_hg_cmd_init() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
+ ':dir:_files -/'
+}
+
+_hg_cmd_locate() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--rev -r)'{-r+,--rev}'[search repository as it stood at revision]:revision:_hg_tags' \
+ '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
+ '(--fullpath -f)'{-f,--fullpath}'[print complete paths]' \
+ '*:search pattern:_hg_files'
+}
+
+_hg_cmd_log() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \
+ '(--follow --follow-first -f)'{-f,--follow}'[follow changeset or history]' \
+ '(-f --follow)--follow-first[only follow the first parent of merge changesets]' \
+ '(--copies -C)'{-C,--copies}'[show copied files]' \
+ '(--keyword -k)'{-k+,--keyword}'[search for a keyword]:' \
+ '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \
+ '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_revrange' \
+ '(--no-merges -M)'{-M,--no-merges}'[do not show merges]' \
+ '(--only-merges -m)'{-m,--only-merges}'[show only merges]' \
+ '(--patch -p)'{-p,--patch}'[show patch]' \
+ '(--prune -P)'{-P+,--prune}'[do not display revision or any of its ancestors]:revision:_hg_tags' \
+ '*:files:_hg_files'
+}
+
+_hg_cmd_manifest() {
+ _arguments -s -w : $_hg_global_opts \
+ ':revision:_hg_tags'
+}
+
+_hg_cmd_merge() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--force -f)'{-f,--force}'[force a merge with outstanding changes]' \
+ '(--rev -r 1)'{-r,--rev}'[revision to merge]:revision:_hg_mergerevs' \
+ '(--preview -P)'{-P,--preview}'[review revisions to merge (no merge is performed)]' \
+ ':revision:_hg_mergerevs'
+}
+
+_hg_cmd_outgoing() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
+ '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
+ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
+ '(--patch -p)'{-p,--patch}'[show patch]' \
+ '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]' \
+ '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
+ ':destination:_hg_remote'
+}
+
+_hg_cmd_parents() {
+ _arguments -s -w : $_hg_global_opts $_hg_style_opts \
+ '(--rev -r)'{-r+,--rev}'[show parents of the specified rev]:revision:_hg_tags' \
+ ':last modified file:_hg_files'
+}
+
+_hg_cmd_paths() {
+ _arguments -s -w : $_hg_global_opts \
+ ':path:_hg_paths'
+}
+
+_hg_cmd_pull() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
+ '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
+ '(--update -u)'{-u,--update}'[update to new tip if changesets were pulled]' \
+ '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:' \
+ ':source:_hg_remote'
+}
+
+_hg_cmd_push() {
+ _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
+ '(--force -f)'{-f,--force}'[force push]' \
+ '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]:revision:_hg_tags' \
+ ':destination:_hg_remote'
+}
+
+_hg_cmd_remove() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--after -A)'{-A,--after}'[record remove that has already occurred]' \
+ '(--force -f)'{-f,--force}'[remove file even if modified]' \
+ '*:file:_hg_files'
+}
+
+_hg_cmd_rename() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ '(--after -A)'{-A,--after}'[record a rename that has already occurred]' \
+ '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
+ '*:file:_hg_files'
+}
+
+_hg_cmd_resolve() {
+ local context state line
+ typeset -A opt_args
+
+ _arguments -s -w : $_hg_global_opts \
+ '(--list -l --mark -m --unmark -u)'{-l,--list}'[list state of files needing merge]:*:merged files:->resolve_files' \
+ '(--mark -m --list -l --unmark -u)'{-m,--mark}'[mark files as resolved]:*:unresolved files:_hg_unresolved' \
+ '(--unmark -u --list -l --mark -m)'{-u,--unmark}'[unmark files as resolved]:*:resolved files:_hg_resolved' \
+ '*:file:_hg_unresolved'
+
+ if [[ $state == 'resolve_files' ]]
+ then
+ _alternative 'files:resolved files:_hg_resolved' \
+ 'files:unresolved files:_hg_unresolved'
+ fi
+}
+
+_hg_cmd_revert() {
+ local context state line
+ typeset -A opt_args
+
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
+ '(--all -a :)'{-a,--all}'[revert all changes when no arguments given]' \
+ '(--rev -r)'{-r+,--rev}'[revision to revert to]:revision:_hg_tags' \
+ '--no-backup[do not save backup copies of files]' \
+ '*:file:->diff_files'
+
+ if [[ $state == 'diff_files' ]]
+ then
+ if [[ -n $opt_args[-r] ]]
+ then
+ _hg_files
+ else
+ typeset -a status_files
+ _hg_status mard
+ _wanted files expl 'modified, added, removed or deleted file' _multi_parts / status_files
+ fi
+ fi
+}
+
+_hg_cmd_serve() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--accesslog -A)'{-A+,--accesslog}'[name of access log file]:log file:_files' \
+ '(--errorlog -E)'{-E+,--errorlog}'[name of error log file]:log file:_files' \
+ '(--daemon -d)'{-d,--daemon}'[run server in background]' \
+ '(--port -p)'{-p+,--port}'[listen port]:listen port:' \
+ '(--address -a)'{-a+,--address}'[interface address]:interface address:' \
+ '(--name -n)'{-n+,--name}'[name to show in web pages]:repository name:' \
+ '(--templates -t)'{-t,--templates}'[web template directory]:template dir:_files -/' \
+ '--style[web template style]:style' \
+ '--stdio[for remote clients]' \
+ '(--ipv6 -6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]'
+}
+
+_hg_cmd_showconfig() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--untrusted -u)'{-u+,--untrusted}'[show untrusted configuration options]' \
+ ':config item:_hg_config'
+}
+
+_hg_cmd_status() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '(--all -A)'{-A,--all}'[show status of all files]' \
+ '(--modified -m)'{-m,--modified}'[show only modified files]' \
+ '(--added -a)'{-a,--added}'[show only added files]' \
+ '(--removed -r)'{-r,--removed}'[show only removed files]' \
+ '(--deleted -d)'{-d,--deleted}'[show only deleted (but tracked) files]' \
+ '(--clean -c)'{-c,--clean}'[show only files without changes]' \
+ '(--unknown -u)'{-u,--unknown}'[show only unknown files]' \
+ '(--ignored -i)'{-i,--ignored}'[show ignored files]' \
+ '(--no-status -n)'{-n,--no-status}'[hide status prefix]' \
+ '(--copies -C)'{-C,--copies}'[show source of copied files]' \
+ '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
+ '--rev[show difference from revision]:revision:_hg_tags' \
+ '*:files:_files'
+}
+
+_hg_cmd_summary() {
+ _arguments -s -w : $_hg_global_opts \
+ '--remote[check for push and pull]'
+}
+
+_hg_cmd_tag() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--local -l)'{-l,--local}'[make the tag local]' \
+ '(--message -m)'{-m+,--message}'[message for tag commit log entry]:message:' \
+ '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
+ '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
+ '(--rev -r)'{-r+,--rev}'[revision to tag]:revision:_hg_tags' \
+ ':tag name:'
+}
+
+_hg_cmd_tip() {
+ _arguments -s -w : $_hg_global_opts $_hg_style_opts \
+ '(--patch -p)'{-p,--patch}'[show patch]'
+}
+
+_hg_cmd_unbundle() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--update -u)'{-u,--update}'[update to new tip if changesets were unbundled]' \
+ ':files:_files'
+}
+
+_hg_cmd_update() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--clean -C)'{-C,--clean}'[overwrite locally modified files]' \
+ '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
+ ':revision:_hg_tags'
+}
+
+# HGK
+_hg_cmd_view() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \
+ ':revision range:_hg_tags'
+}
+
+# MQ
+_hg_qseries() {
+ typeset -a patches
+ patches=(${(f)"$(_hg_cmd qseries)"})
+ (( $#patches )) && _describe -t hg-patches 'patches' patches
+}
+
+_hg_qapplied() {
+ typeset -a patches
+ patches=(${(f)"$(_hg_cmd qapplied)"})
+ if (( $#patches ))
+ then
+ patches+=(qbase qtip)
+ _describe -t hg-applied-patches 'applied patches' patches
+ fi
+}
+
+_hg_qunapplied() {
+ typeset -a patches
+ patches=(${(f)"$(_hg_cmd qunapplied)"})
+ (( $#patches )) && _describe -t hg-unapplied-patches 'unapplied patches' patches
+}
+
+# unapplied, including guarded patches
+_hg_qdeletable() {
+ typeset -a unapplied
+ unapplied=(${(f)"$(_hg_cmd qseries)"})
+ for p in $(_hg_cmd qapplied)
+ do
+ unapplied=(${unapplied:#$p})
+ done
+
+ (( $#unapplied )) && _describe -t hg-allunapplied-patches 'all unapplied patches' unapplied
+}
+
+_hg_qguards() {
+ typeset -a guards
+ local guard
+ compset -P "+|-"
+ _hg_cmd qselect -s | while read guard
+ do
+ guards+=(${guard#(+|-)})
+ done
+ (( $#guards )) && _describe -t hg-guards 'guards' guards
+}
+
+_hg_qseries_opts=(
+ '(--summary -s)'{-s,--summary}'[print first line of patch header]')
+
+_hg_cmd_qapplied() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
+}
+
+_hg_cmd_qdelete() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--keep -k)'{-k,--keep}'[keep patch file]' \
+ '*'{-r+,--rev}'[stop managing a revision]:applied patch:_hg_revrange' \
+ '*:unapplied patch:_hg_qdeletable'
+}
+
+_hg_cmd_qdiff() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
+ '*:pattern:_hg_files'
+}
+
+_hg_cmd_qfold() {
+ _arguments -s -w : $_hg_global_opts $_h_commit_opts \
+ '(--keep,-k)'{-k,--keep}'[keep folded patch files]' \
+ '*:unapplied patch:_hg_qunapplied'
+}
+
+_hg_cmd_qgoto() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--force -f)'{-f,--force}'[overwrite any local changes]' \
+ ':patch:_hg_qseries'
+}
+
+_hg_cmd_qguard() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--list -l)'{-l,--list}'[list all patches and guards]' \
+ '(--none -n)'{-n,--none}'[drop all guards]' \
+ ':patch:_hg_qseries' \
+ '*:guards:_hg_qguards'
+}
+
+_hg_cmd_qheader() {
+ _arguments -s -w : $_hg_global_opts \
+ ':patch:_hg_qseries'
+}
+
+_hg_cmd_qimport() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--existing -e)'{-e,--existing}'[import file in patch dir]' \
+ '(--name -n 2)'{-n+,--name}'[patch file name]:name:' \
+ '(--force -f)'{-f,--force}'[overwrite existing files]' \
+ '*'{-r+,--rev}'[place existing revisions under mq control]:revision:_hg_revrange' \
+ '*:patch:_files'
+}
+
+_hg_cmd_qnew() {
+ _arguments -s -w : $_hg_global_opts $_hg_commit_opts \
+ '(--force -f)'{-f,--force}'[import uncommitted changes into patch]' \
+ ':patch:'
+}
+
+_hg_cmd_qnext() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
+}
+
+_hg_cmd_qpop() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--all -a :)'{-a,--all}'[pop all patches]' \
+ '(--name -n)'{-n+,--name}'[queue name to pop]:' \
+ '(--force -f)'{-f,--force}'[forget any local changes]' \
+ ':patch:_hg_qapplied'
+}
+
+_hg_cmd_qprev() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
+}
+
+_hg_cmd_qpush() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--all -a :)'{-a,--all}'[apply all patches]' \
+ '(--list -l)'{-l,--list}'[list patch name in commit text]' \
+ '(--merge -m)'{-m+,--merge}'[merge from another queue]:' \
+ '(--name -n)'{-n+,--name}'[merge queue name]:' \
+ '(--force -f)'{-f,--force}'[apply if the patch has rejects]' \
+ ':patch:_hg_qunapplied'
+}
+
+_hg_cmd_qrefresh() {
+ _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \
+ '(--git -g)'{-g,--git}'[use git extended diff format]' \
+ '(--short -s)'{-s,--short}'[short refresh]' \
+ '*:files:_hg_files'
+}
+
+_hg_cmd_qrename() {
+ _arguments -s -w : $_hg_global_opts \
+ ':patch:_hg_qseries' \
+ ':destination:'
+}
+
+_hg_cmd_qselect() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--none -n :)'{-n,--none}'[disable all guards]' \
+ '(--series -s :)'{-s,--series}'[list all guards in series file]' \
+ '--pop[pop to before first guarded applied patch]' \
+ '--reapply[pop and reapply patches]' \
+ '*:guards:_hg_qguards'
+}
+
+_hg_cmd_qseries() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts \
+ '(--missing -m)'{-m,--missing}'[print patches not in series]'
+}
+
+_hg_cmd_qunapplied() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
+}
+
+_hg_cmd_qtop() {
+ _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
+}
+
+_hg_cmd_strip() {
+ _arguments -s -w : $_hg_global_opts \
+ '(--force -f)'{-f,--force}'[force multi-head removal]' \
+ '(--backup -b)'{-b,--backup}'[bundle unrelated changesets]' \
+ '(--nobackup -n)'{-n,--nobackup}'[no backups]' \
+ ':revision:_hg_tags'
+}
+
+_hg "$@"
--- a/contrib/zsh_completion Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,946 +0,0 @@
-#compdef hg
-
-# Zsh completion script for mercurial. Rename this file to _hg and copy
-# it into your zsh function path (/usr/share/zsh/site-functions for
-# instance)
-#
-# If you do not want to install it globally, you can copy it somewhere
-# else and add that directory to $fpath. This must be done before
-# compinit is called. If the file is copied to ~/.zsh.d, your ~/.zshrc
-# file could look like this:
-#
-# fpath=("$HOME/.zsh.d" $fpath)
-# autoload -U compinit
-# compinit
-#
-# Copyright (C) 2005, 2006 Steve Borho <steve@borho.org>
-# Copyright (C) 2006-9 Brendan Cully <brendan@kublai.com>
-#
-# Permission is hereby granted, without written agreement and without
-# licence or royalty fees, to use, copy, modify, and distribute this
-# software and to distribute modified versions of this software for any
-# purpose, provided that the above copyright notice and the following
-# two paragraphs appear in all copies of this software.
-#
-# In no event shall the authors be liable to any party for direct,
-# indirect, special, incidental, or consequential damages arising out of
-# the use of this software and its documentation, even if the authors
-# have been advised of the possibility of such damage.
-#
-# The authors specifically disclaim any warranties, including, but not
-# limited to, the implied warranties of merchantability and fitness for
-# a particular purpose. The software provided hereunder is on an "as
-# is" basis, and the authors have no obligation to provide maintenance,
-# support, updates, enhancements, or modifications.
-
-emulate -LR zsh
-setopt extendedglob
-
-local curcontext="$curcontext" state line
-typeset -A _hg_cmd_globals
-
-_hg() {
- local cmd _hg_root
- integer i=2
- _hg_cmd_globals=()
-
- while (( i < $#words ))
- do
- case "$words[$i]" in
- -R|--repository)
- eval _hg_root="$words[$i+1]"
- _hg_cmd_globals+=("$words[$i]" "$_hg_root")
- (( i += 2 ))
- continue
- ;;
- -R*)
- _hg_cmd_globals+="$words[$i]"
- eval _hg_root="${words[$i]#-R}"
- (( i++ ))
- continue
- ;;
- --cwd|--config)
- # pass along arguments to hg completer
- _hg_cmd_globals+=("$words[$i]" "$words[$i+1]")
- (( i += 2 ))
- continue
- ;;
- -*)
- # skip option
- (( i++ ))
- continue
- ;;
- esac
- if [[ -z "$cmd" ]]
- then
- cmd="$words[$i]"
- words[$i]=()
- (( CURRENT-- ))
- fi
- (( i++ ))
- done
-
- if [[ -z "$cmd" ]]
- then
- _arguments -s -w : $_hg_global_opts \
- ':mercurial command:_hg_commands'
- return
- fi
-
- # resolve abbreviations and aliases
- if ! (( $+functions[_hg_cmd_${cmd}] ))
- then
- local cmdexp
- (( $#_hg_cmd_list )) || _hg_get_commands
-
- cmdexp=$_hg_cmd_list[(r)${cmd}*]
- if [[ $cmdexp == $_hg_cmd_list[(R)${cmd}*] ]]
- then
- # might be nice to rewrite the command line with the expansion
- cmd="$cmdexp"
- fi
- if [[ -n $_hg_alias_list[$cmd] ]]
- then
- cmd=$_hg_alias_list[$cmd]
- fi
- fi
-
- curcontext="${curcontext%:*:*}:hg-${cmd}:"
-
- zstyle -s ":completion:$curcontext:" cache-policy update_policy
-
- if [[ -z "$update_policy" ]]
- then
- zstyle ":completion:$curcontext:" cache-policy _hg_cache_policy
- fi
-
- if (( $+functions[_hg_cmd_${cmd}] ))
- then
- _hg_cmd_${cmd}
- else
- # complete unknown commands normally
- _arguments -s -w : $_hg_global_opts \
- '*:files:_hg_files'
- fi
-}
-
-_hg_cache_policy() {
- typeset -a old
-
- # cache for a minute
- old=( "$1"(mm+10) )
- (( $#old )) && return 0
-
- return 1
-}
-
-_hg_get_commands() {
- typeset -ga _hg_cmd_list
- typeset -gA _hg_alias_list
- local hline cmd cmdalias
-
- _call_program hg hg debugcomplete -v | while read -A hline
- do
- cmd=$hline[1]
- _hg_cmd_list+=($cmd)
-
- for cmdalias in $hline[2,-1]
- do
- _hg_cmd_list+=($cmdalias)
- _hg_alias_list+=($cmdalias $cmd)
- done
- done
-}
-
-_hg_commands() {
- (( $#_hg_cmd_list )) || _hg_get_commands
- _describe -t commands 'mercurial command' _hg_cmd_list
-}
-
-_hg_revrange() {
- compset -P 1 '*:'
- _hg_tags "$@"
-}
-
-_hg_tags() {
- typeset -a tags
- local tag rev
-
- _hg_cmd tags | while read tag
- do
- tags+=(${tag/ # [0-9]#:*})
- done
- (( $#tags )) && _describe -t tags 'tags' tags
-}
-
-# likely merge candidates
-_hg_mergerevs() {
- typeset -a heads
- local myrev
-
- heads=(${(f)"$(_hg_cmd heads --template '{rev}\\n')"})
- # exclude own revision
- myrev=$(_hg_cmd log -r . --template '{rev}\\n')
- heads=(${heads:#$myrev})
-
- (( $#heads )) && _describe -t heads 'heads' heads
-}
-
-_hg_files() {
- if [[ -n "$_hg_root" ]]
- then
- [[ -d "$_hg_root/.hg" ]] || return
- case "$_hg_root" in
- /*)
- _files -W $_hg_root
- ;;
- *)
- _files -W $PWD/$_hg_root
- ;;
- esac
- else
- _files
- fi
-}
-
-_hg_status() {
- [[ -d $PREFIX ]] || PREFIX=$PREFIX:h
- status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 ./$PREFIX)"})
-}
-
-_hg_unknown() {
- typeset -a status_files
- _hg_status u
- _wanted files expl 'unknown files' _multi_parts / status_files
-}
-
-_hg_missing() {
- typeset -a status_files
- _hg_status d
- _wanted files expl 'missing files' _multi_parts / status_files
-}
-
-_hg_modified() {
- typeset -a status_files
- _hg_status m
- _wanted files expl 'modified files' _multi_parts / status_files
-}
-
-_hg_resolve() {
- local rstate rpath
-
- [[ -d $PREFIX ]] || PREFIX=$PREFIX:h
-
- _hg_cmd resolve -l ./$PREFIX | while read rstate rpath
- do
- [[ $rstate == 'R' ]] && resolved_files+=($rpath)
- [[ $rstate == 'U' ]] && unresolved_files+=($rpath)
- done
-}
-
-_hg_resolved() {
- typeset -a resolved_files unresolved_files
- _hg_resolve
- _wanted files expl 'resolved files' _multi_parts / resolved_files
-}
-
-_hg_unresolved() {
- typeset -a resolved_files unresolved_files
- _hg_resolve
- _wanted files expl 'unresolved files' _multi_parts / unresolved_files
-}
-
-_hg_config() {
- typeset -a items
- items=(${${(%f)"$(_call_program hg hg showconfig)"}%%\=*})
- (( $#items )) && _describe -t config 'config item' items
-}
-
-_hg_addremove() {
- _alternative 'files:unknown files:_hg_unknown' \
- 'files:missing files:_hg_missing'
-}
-
-_hg_ssh_urls() {
- if [[ -prefix */ ]]
- then
- if zstyle -T ":completion:${curcontext}:files" remote-access
- then
- local host=${PREFIX%%/*}
- typeset -a remdirs
- compset -p $(( $#host + 1 ))
- local rempath=${(M)PREFIX##*/}
- local cacheid="hg:${host}-${rempath//\//_}"
- cacheid=${cacheid%[-_]}
- compset -P '*/'
- if _cache_invalid "$cacheid" || ! _retrieve_cache "$cacheid"
- then
- remdirs=(${${(M)${(f)"$(_call_program files ssh -a -x $host ls -1FL "${(q)rempath}")"}##*/}%/})
- _store_cache "$cacheid" remdirs
- fi
- _describe -t directories 'remote directory' remdirs -S/
- else
- _message 'remote directory'
- fi
- else
- if compset -P '*@'
- then
- _hosts -S/
- else
- _alternative 'hosts:remote host name:_hosts -S/' \
- 'users:user:_users -S@'
- fi
- fi
-}
-
-_hg_urls() {
- if compset -P bundle://
- then
- _files
- elif compset -P ssh://
- then
- _hg_ssh_urls
- elif [[ -prefix *: ]]
- then
- _urls
- else
- local expl
- compset -S '[^:]*'
- _wanted url-schemas expl 'URL schema' compadd -S '' - \
- http:// https:// ssh:// bundle://
- fi
-}
-
-_hg_paths() {
- typeset -a paths pnames
- _hg_cmd paths | while read -A pnames
- do
- paths+=($pnames[1])
- done
- (( $#paths )) && _describe -t path-aliases 'repository alias' paths
-}
-
-_hg_remote() {
- _alternative 'path-aliases:repository alias:_hg_paths' \
- 'directories:directory:_files -/' \
- 'urls:URL:_hg_urls'
-}
-
-_hg_clone_dest() {
- _alternative 'directories:directory:_files -/' \
- 'urls:URL:_hg_urls'
-}
-
-# Common options
-_hg_global_opts=(
- '(--repository -R)'{-R+,--repository}'[repository root directory]:repository:_files -/'
- '--cwd[change working directory]:new working directory:_files -/'
- '(--noninteractive -y)'{-y,--noninteractive}'[do not prompt, assume yes for any required answers]'
- '(--verbose -v)'{-v,--verbose}'[enable additional output]'
- '*--config[set/override config option]:defined config items:_hg_config'
- '(--quiet -q)'{-q,--quiet}'[suppress output]'
- '(--help -h)'{-h,--help}'[display help and exit]'
- '--debug[debug mode]'
- '--debugger[start debugger]'
- '--encoding[set the charset encoding (default: UTF8)]'
- '--encodingmode[set the charset encoding mode (default: strict)]'
- '--lsprof[print improved command execution profile]'
- '--traceback[print traceback on exception]'
- '--time[time how long the command takes]'
- '--profile[profile]'
- '--version[output version information and exit]'
-)
-
-_hg_pat_opts=(
- '*'{-I+,--include}'[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
- '*'{-X+,--exclude}'[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/')
-
-_hg_diff_opts=(
- '(--text -a)'{-a,--text}'[treat all files as text]'
- '(--git -g)'{-g,--git}'[use git extended diff format]'
- "--nodates[don't include dates in diff headers]")
-
-_hg_dryrun_opts=(
- '(--dry-run -n)'{-n,--dry-run}'[do not perform actions, just print output]')
-
-_hg_style_opts=(
- '--style[display using template map file]:'
- '--template[display with template]:')
-
-_hg_commit_opts=(
- '(-m --message -l --logfile --edit -e)'{-e,--edit}'[edit commit message]'
- '(-e --edit -l --logfile --message -m)'{-m+,--message}'[use <text> as commit message]:message:'
- '(-e --edit -m --message --logfile -l)'{-l+,--logfile}'[read the commit message from <file>]:log file:_files')
-
-_hg_remote_opts=(
- '(--ssh -e)'{-e+,--ssh}'[specify ssh command to use]:'
- '--remotecmd[specify hg command to run on the remote side]:')
-
-_hg_cmd() {
- _call_program hg hg --config ui.verbose=0 --config defaults."$1"= \
- "$_hg_cmd_globals[@]" "$@" 2> /dev/null
-}
-
-_hg_cmd_add() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '*:unknown files:_hg_unknown'
-}
-
-_hg_cmd_addremove() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '(--similarity -s)'{-s+,--similarity}'[guess renamed files by similarity (0<=s<=100)]:' \
- '*:unknown or missing files:_hg_addremove'
-}
-
-_hg_cmd_annotate() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--rev -r)'{-r+,--rev}'[annotate the specified revision]:revision:_hg_tags' \
- '(--follow -f)'{-f,--follow}'[follow file copies and renames]' \
- '(--text -a)'{-a,--text}'[treat all files as text]' \
- '(--user -u)'{-u,--user}'[list the author]' \
- '(--date -d)'{-d,--date}'[list the date]' \
- '(--number -n)'{-n,--number}'[list the revision number (default)]' \
- '(--changeset -c)'{-c,--changeset}'[list the changeset]' \
- '*:files:_hg_files'
-}
-
-_hg_cmd_archive() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '--no-decode[do not pass files through decoders]' \
- '(--prefix -p)'{-p+,--prefix}'[directory prefix for files in archive]:' \
- '(--rev -r)'{-r+,--rev}'[revision to distribute]:revision:_hg_tags' \
- '(--type -t)'{-t+,--type}'[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \
- '*:destination:_files'
-}
-
-_hg_cmd_backout() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '--merge[merge with old dirstate parent after backout]' \
- '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
- '--parent[parent to choose when backing out merge]' \
- '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
- '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
- '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
- '(--logfile -l)'{-l+,--logfile}'[read commit message from <file>]:log file:_files -g \*.txt'
-}
-
-_hg_cmd_bisect() {
- _arguments -s -w : $_hg_global_opts \
- '(-)'{-r,--reset}'[reset bisect state]' \
- '(--good -g --bad -b --skip -s --reset -r)'{-g,--good}'[mark changeset good]'::revision:_hg_tags \
- '(--good -g --bad -b --skip -s --reset -r)'{-b,--bad}'[mark changeset bad]'::revision:_hg_tags \
- '(--good -g --bad -b --skip -s --reset -r)'{-s,--skip}'[skip testing changeset]' \
- '(--command -c --noupdate -U)'{-c+,--command}'[use command to check changeset state]':commands:_command_names \
- '(--command -c --noupdate -U)'{-U,--noupdate}'[do not update to target]'
-}
-
-_hg_cmd_branch() {
- _arguments -s -w : $_hg_global_opts \
- '(--force -f)'{-f,--force}'[set branch name even if it shadows an existing branch]' \
- '(--clean -C)'{-C,--clean}'[reset branch name to parent branch name]'
-}
-
-_hg_cmd_branches() {
- _arguments -s -w : $_hg_global_opts \
- '(--active -a)'{-a,--active}'[show only branches that have unmerge heads]'
-}
-
-_hg_cmd_bundle() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
- '(--force -f)'{-f,--force}'[run even when remote repository is unrelated]' \
- '(2)*--base[a base changeset to specify instead of a destination]:revision:_hg_tags' \
- ':output file:_files' \
- ':destination repository:_files -/'
-}
-
-_hg_cmd_cat() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--output -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \
- '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
- '*:file:_hg_files'
-}
-
-_hg_cmd_clone() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
- '(--noupdate -U)'{-U,--noupdate}'[do not update the new working directory]' \
- '(--rev -r)'{-r+,--rev}'[a changeset you would like to have after cloning]:' \
- '--uncompressed[use uncompressed transfer (fast over LAN)]' \
- ':source repository:_hg_remote' \
- ':destination:_hg_clone_dest'
-}
-
-_hg_cmd_commit() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--addremove -A)'{-A,--addremove}'[mark new/missing files as added/removed before committing]' \
- '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
- '(--logfile -l)'{-l+,--logfile}'[read commit message from <file>]:log file:_files -g \*.txt' \
- '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
- '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
- '*:file:_hg_files'
-}
-
-_hg_cmd_copy() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '(--after -A)'{-A,--after}'[record a copy that has already occurred]' \
- '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
- '*:file:_hg_files'
-}
-
-_hg_cmd_diff() {
- typeset -A opt_args
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts \
- '*'{-r,--rev}'+[revision]:revision:_hg_revrange' \
- '(--show-function -p)'{-p,--show-function}'[show which function each change is in]' \
- '(--ignore-all-space -w)'{-w,--ignore-all-space}'[ignore white space when comparing lines]' \
- '(--ignore-space-change -b)'{-b,--ignore-space-change}'[ignore changes in the amount of white space]' \
- '(--ignore-blank-lines -B)'{-B,--ignore-blank-lines}'[ignore changes whose lines are all blank]' \
- '*:file:->diff_files'
-
- if [[ $state == 'diff_files' ]]
- then
- if [[ -n $opt_args[-r] ]]
- then
- _hg_files
- else
- _hg_modified
- fi
- fi
-}
-
-_hg_cmd_export() {
- _arguments -s -w : $_hg_global_opts $_hg_diff_opts \
- '(--outout -o)'{-o+,--output}'[print output to file with formatted name]:filespec:' \
- '--switch-parent[diff against the second parent]' \
- '*:revision:_hg_tags'
-}
-
-_hg_cmd_grep() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--print0 -0)'{-0,--print0}'[end filenames with NUL]' \
- '--all[print all revisions with matches]' \
- '(--follow -f)'{-f,--follow}'[follow changeset or file history]' \
- '(--ignore-case -i)'{-i,--ignore-case}'[ignore case when matching]' \
- '(--files-with-matches -l)'{-l,--files-with-matches}'[print only filenames and revs that match]' \
- '(--line-number -n)'{-n,--line-number}'[print matching line numbers]' \
- '*'{-r+,--rev}'[search in given revision range]:revision:_hg_revrange' \
- '(--user -u)'{-u,--user}'[print user who committed change]' \
- '1:search pattern:' \
- '*:files:_hg_files'
-}
-
-_hg_cmd_heads() {
- _arguments -s -w : $_hg_global_opts $_hg_style_opts \
- '(--rev -r)'{-r+,--rev}'[show only heads which are descendants of rev]:revision:_hg_tags'
-}
-
-_hg_cmd_help() {
- _arguments -s -w : $_hg_global_opts \
- '*:mercurial command:_hg_commands'
-}
-
-_hg_cmd_identify() {
- _arguments -s -w : $_hg_global_opts \
- '(--rev -r)'{-r+,--rev}'[identify the specified rev]:revision:_hg_tags' \
- '(--num -n)'{-n+,--num}'[show local revision number]' \
- '(--id -i)'{-i+,--id}'[show global revision id]' \
- '(--branch -b)'{-b+,--branch}'[show branch]' \
- '(--tags -t)'{-t+,--tags}'[show tags]'
-}
-
-_hg_cmd_import() {
- _arguments -s -w : $_hg_global_opts \
- '(--strip -p)'{-p+,--strip}'[directory strip option for patch (default: 1)]:count:' \
- '(--message -m)'{-m+,--message}'[use <text> as commit message]:text:' \
- '(--force -f)'{-f,--force}'[skip check for outstanding uncommitted changes]' \
- '*:patch:_files'
-}
-
-_hg_cmd_incoming() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
- '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
- '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
- '(--patch -p)'{-p,--patch}'[show patch]' \
- '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:_hg_tags' \
- '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
- '--bundle[file to store the bundles into]:bundle file:_files' \
- ':source:_hg_remote'
-}
-
-_hg_cmd_init() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
- ':dir:_files -/'
-}
-
-_hg_cmd_locate() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--rev -r)'{-r+,--rev}'[search repository as it stood at revision]:revision:_hg_tags' \
- '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
- '(--fullpath -f)'{-f,--fullpath}'[print complete paths]' \
- '*:search pattern:_hg_files'
-}
-
-_hg_cmd_log() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \
- '(--follow --follow-first -f)'{-f,--follow}'[follow changeset or history]' \
- '(-f --follow)--follow-first[only follow the first parent of merge changesets]' \
- '(--copies -C)'{-C,--copies}'[show copied files]' \
- '(--keyword -k)'{-k+,--keyword}'[search for a keyword]:' \
- '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \
- '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_revrange' \
- '(--no-merges -M)'{-M,--no-merges}'[do not show merges]' \
- '(--only-merges -m)'{-m,--only-merges}'[show only merges]' \
- '(--patch -p)'{-p,--patch}'[show patch]' \
- '(--prune -P)'{-P+,--prune}'[do not display revision or any of its ancestors]:revision:_hg_tags' \
- '*:files:_hg_files'
-}
-
-_hg_cmd_manifest() {
- _arguments -s -w : $_hg_global_opts \
- ':revision:_hg_tags'
-}
-
-_hg_cmd_merge() {
- _arguments -s -w : $_hg_global_opts \
- '(--force -f)'{-f,--force}'[force a merge with outstanding changes]' \
- '(--rev -r 1)'{-r,--rev}'[revision to merge]:revision:_hg_mergerevs' \
- '(--preview -P)'{-P,--preview}'[review revisions to merge (no merge is performed)]' \
- ':revision:_hg_mergerevs'
-}
-
-_hg_cmd_outgoing() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
- '(--no-merges -M)'{-M,--no-merges}'[do not show merge revisions]' \
- '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
- '(--patch -p)'{-p,--patch}'[show patch]' \
- '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]' \
- '(--newest-first -n)'{-n,--newest-first}'[show newest record first]' \
- ':destination:_hg_remote'
-}
-
-_hg_cmd_parents() {
- _arguments -s -w : $_hg_global_opts $_hg_style_opts \
- '(--rev -r)'{-r+,--rev}'[show parents of the specified rev]:revision:_hg_tags' \
- ':last modified file:_hg_files'
-}
-
-_hg_cmd_paths() {
- _arguments -s -w : $_hg_global_opts \
- ':path:_hg_paths'
-}
-
-_hg_cmd_pull() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
- '(--force -f)'{-f,--force}'[run even when the remote repository is unrelated]' \
- '(--update -u)'{-u,--update}'[update to new tip if changesets were pulled]' \
- '(--rev -r)'{-r+,--rev}'[a specific revision up to which you would like to pull]:revision:' \
- ':source:_hg_remote'
-}
-
-_hg_cmd_push() {
- _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
- '(--force -f)'{-f,--force}'[force push]' \
- '(--rev -r)'{-r+,--rev}'[a specific revision you would like to push]:revision:_hg_tags' \
- ':destination:_hg_remote'
-}
-
-_hg_cmd_remove() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--after -A)'{-A,--after}'[record remove that has already occurred]' \
- '(--force -f)'{-f,--force}'[remove file even if modified]' \
- '*:file:_hg_files'
-}
-
-_hg_cmd_rename() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '(--after -A)'{-A,--after}'[record a rename that has already occurred]' \
- '(--force -f)'{-f,--force}'[forcibly copy over an existing managed file]' \
- '*:file:_hg_files'
-}
-
-_hg_cmd_resolve() {
- local context state line
- typeset -A opt_args
-
- _arguments -s -w : $_hg_global_opts \
- '(--list -l --mark -m --unmark -u)'{-l,--list}'[list state of files needing merge]:*:merged files:->resolve_files' \
- '(--mark -m --list -l --unmark -u)'{-m,--mark}'[mark files as resolved]:*:unresolved files:_hg_unresolved' \
- '(--unmark -u --list -l --mark -m)'{-u,--unmark}'[unmark files as resolved]:*:resolved files:_hg_resolved' \
- '*:file:_hg_unresolved'
-
- if [[ $state == 'resolve_files' ]]
- then
- _alternative 'files:resolved files:_hg_resolved' \
- 'files:unresolved files:_hg_unresolved'
- fi
-}
-
-_hg_cmd_revert() {
- local context state line
- typeset -A opt_args
-
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
- '(--all -a :)'{-a,--all}'[revert all changes when no arguments given]' \
- '(--rev -r)'{-r+,--rev}'[revision to revert to]:revision:_hg_tags' \
- '--no-backup[do not save backup copies of files]' \
- '*:file:->diff_files'
-
- if [[ $state == 'diff_files' ]]
- then
- if [[ -n $opt_args[-r] ]]
- then
- _hg_files
- else
- typeset -a status_files
- _hg_status mard
- _wanted files expl 'modified, added, removed or deleted file' _multi_parts / status_files
- fi
- fi
-}
-
-_hg_cmd_serve() {
- _arguments -s -w : $_hg_global_opts \
- '(--accesslog -A)'{-A+,--accesslog}'[name of access log file]:log file:_files' \
- '(--errorlog -E)'{-E+,--errorlog}'[name of error log file]:log file:_files' \
- '(--daemon -d)'{-d,--daemon}'[run server in background]' \
- '(--port -p)'{-p+,--port}'[listen port]:listen port:' \
- '(--address -a)'{-a+,--address}'[interface address]:interface address:' \
- '(--name -n)'{-n+,--name}'[name to show in web pages]:repository name:' \
- '(--templates -t)'{-t,--templates}'[web template directory]:template dir:_files -/' \
- '--style[web template style]:style' \
- '--stdio[for remote clients]' \
- '(--ipv6 -6)'{-6,--ipv6}'[use IPv6 in addition to IPv4]'
-}
-
-_hg_cmd_showconfig() {
- _arguments -s -w : $_hg_global_opts \
- '(--untrusted -u)'{-u+,--untrusted}'[show untrusted configuration options]' \
- ':config item:_hg_config'
-}
-
-_hg_cmd_status() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '(--all -A)'{-A,--all}'[show status of all files]' \
- '(--modified -m)'{-m,--modified}'[show only modified files]' \
- '(--added -a)'{-a,--added}'[show only added files]' \
- '(--removed -r)'{-r,--removed}'[show only removed files]' \
- '(--deleted -d)'{-d,--deleted}'[show only deleted (but tracked) files]' \
- '(--clean -c)'{-c,--clean}'[show only files without changes]' \
- '(--unknown -u)'{-u,--unknown}'[show only unknown files]' \
- '(--ignored -i)'{-i,--ignored}'[show ignored files]' \
- '(--no-status -n)'{-n,--no-status}'[hide status prefix]' \
- '(--copies -C)'{-C,--copies}'[show source of copied files]' \
- '(--print0 -0)'{-0,--print0}'[end filenames with NUL, for use with xargs]' \
- '--rev[show difference from revision]:revision:_hg_tags' \
- '*:files:_files'
-}
-
-_hg_cmd_tag() {
- _arguments -s -w : $_hg_global_opts \
- '(--local -l)'{-l,--local}'[make the tag local]' \
- '(--message -m)'{-m+,--message}'[message for tag commit log entry]:message:' \
- '(--date -d)'{-d+,--date}'[record datecode as commit date]:date code:' \
- '(--user -u)'{-u+,--user}'[record user as commiter]:user:' \
- '(--rev -r)'{-r+,--rev}'[revision to tag]:revision:_hg_tags' \
- ':tag name:'
-}
-
-_hg_cmd_tip() {
- _arguments -s -w : $_hg_global_opts $_hg_style_opts \
- '(--patch -p)'{-p,--patch}'[show patch]'
-}
-
-_hg_cmd_unbundle() {
- _arguments -s -w : $_hg_global_opts \
- '(--update -u)'{-u,--update}'[update to new tip if changesets were unbundled]' \
- ':files:_files'
-}
-
-_hg_cmd_update() {
- _arguments -s -w : $_hg_global_opts \
- '(--clean -C)'{-C,--clean}'[overwrite locally modified files]' \
- '(--rev -r)'{-r+,--rev}'[revision]:revision:_hg_tags' \
- ':revision:_hg_tags'
-}
-
-# HGK
-_hg_cmd_view() {
- _arguments -s -w : $_hg_global_opts \
- '(--limit -l)'{-l+,--limit}'[limit number of changes displayed]:' \
- ':revision range:_hg_tags'
-}
-
-# MQ
-_hg_qseries() {
- typeset -a patches
- patches=(${(f)"$(_hg_cmd qseries)"})
- (( $#patches )) && _describe -t hg-patches 'patches' patches
-}
-
-_hg_qapplied() {
- typeset -a patches
- patches=(${(f)"$(_hg_cmd qapplied)"})
- if (( $#patches ))
- then
- patches+=(qbase qtip)
- _describe -t hg-applied-patches 'applied patches' patches
- fi
-}
-
-_hg_qunapplied() {
- typeset -a patches
- patches=(${(f)"$(_hg_cmd qunapplied)"})
- (( $#patches )) && _describe -t hg-unapplied-patches 'unapplied patches' patches
-}
-
-# unapplied, including guarded patches
-_hg_qdeletable() {
- typeset -a unapplied
- unapplied=(${(f)"$(_hg_cmd qseries)"})
- for p in $(_hg_cmd qapplied)
- do
- unapplied=(${unapplied:#$p})
- done
-
- (( $#unapplied )) && _describe -t hg-allunapplied-patches 'all unapplied patches' unapplied
-}
-
-_hg_qguards() {
- typeset -a guards
- local guard
- compset -P "+|-"
- _hg_cmd qselect -s | while read guard
- do
- guards+=(${guard#(+|-)})
- done
- (( $#guards )) && _describe -t hg-guards 'guards' guards
-}
-
-_hg_qseries_opts=(
- '(--summary -s)'{-s,--summary}'[print first line of patch header]')
-
-_hg_cmd_qapplied() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
-}
-
-_hg_cmd_qdelete() {
- _arguments -s -w : $_hg_global_opts \
- '(--keep -k)'{-k,--keep}'[keep patch file]' \
- '*'{-r+,--rev}'[stop managing a revision]:applied patch:_hg_revrange' \
- '*:unapplied patch:_hg_qdeletable'
-}
-
-_hg_cmd_qdiff() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
- '*:pattern:_hg_files'
-}
-
-_hg_cmd_qfold() {
- _arguments -s -w : $_hg_global_opts $_h_commit_opts \
- '(--keep,-k)'{-k,--keep}'[keep folded patch files]' \
- '*:unapplied patch:_hg_qunapplied'
-}
-
-_hg_cmd_qgoto() {
- _arguments -s -w : $_hg_global_opts \
- '(--force -f)'{-f,--force}'[overwrite any local changes]' \
- ':patch:_hg_qseries'
-}
-
-_hg_cmd_qguard() {
- _arguments -s -w : $_hg_global_opts \
- '(--list -l)'{-l,--list}'[list all patches and guards]' \
- '(--none -n)'{-n,--none}'[drop all guards]' \
- ':patch:_hg_qseries' \
- '*:guards:_hg_qguards'
-}
-
-_hg_cmd_qheader() {
- _arguments -s -w : $_hg_global_opts \
- ':patch:_hg_qseries'
-}
-
-_hg_cmd_qimport() {
- _arguments -s -w : $_hg_global_opts \
- '(--existing -e)'{-e,--existing}'[import file in patch dir]' \
- '(--name -n 2)'{-n+,--name}'[patch file name]:name:' \
- '(--force -f)'{-f,--force}'[overwrite existing files]' \
- '*'{-r+,--rev}'[place existing revisions under mq control]:revision:_hg_revrange' \
- '*:patch:_files'
-}
-
-_hg_cmd_qnew() {
- _arguments -s -w : $_hg_global_opts $_hg_commit_opts \
- '(--force -f)'{-f,--force}'[import uncommitted changes into patch]' \
- ':patch:'
-}
-
-_hg_cmd_qnext() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
-}
-
-_hg_cmd_qpop() {
- _arguments -s -w : $_hg_global_opts \
- '(--all -a :)'{-a,--all}'[pop all patches]' \
- '(--name -n)'{-n+,--name}'[queue name to pop]:' \
- '(--force -f)'{-f,--force}'[forget any local changes]' \
- ':patch:_hg_qapplied'
-}
-
-_hg_cmd_qprev() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
-}
-
-_hg_cmd_qpush() {
- _arguments -s -w : $_hg_global_opts \
- '(--all -a :)'{-a,--all}'[apply all patches]' \
- '(--list -l)'{-l,--list}'[list patch name in commit text]' \
- '(--merge -m)'{-m+,--merge}'[merge from another queue]:' \
- '(--name -n)'{-n+,--name}'[merge queue name]:' \
- '(--force -f)'{-f,--force}'[apply if the patch has rejects]' \
- ':patch:_hg_qunapplied'
-}
-
-_hg_cmd_qrefresh() {
- _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \
- '(--git -g)'{-g,--git}'[use git extended diff format]' \
- '(--short -s)'{-s,--short}'[short refresh]' \
- '*:files:_hg_files'
-}
-
-_hg_cmd_qrename() {
- _arguments -s -w : $_hg_global_opts \
- ':patch:_hg_qseries' \
- ':destination:'
-}
-
-_hg_cmd_qselect() {
- _arguments -s -w : $_hg_global_opts \
- '(--none -n :)'{-n,--none}'[disable all guards]' \
- '(--series -s :)'{-s,--series}'[list all guards in series file]' \
- '--pop[pop to before first guarded applied patch]' \
- '--reapply[pop and reapply patches]' \
- '*:guards:_hg_qguards'
-}
-
-_hg_cmd_qseries() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts \
- '(--missing -m)'{-m,--missing}'[print patches not in series]'
-}
-
-_hg_cmd_qunapplied() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
-}
-
-_hg_cmd_qtop() {
- _arguments -s -w : $_hg_global_opts $_hg_qseries_opts
-}
-
-_hg_cmd_strip() {
- _arguments -s -w : $_hg_global_opts \
- '(--force -f)'{-f,--force}'[force multi-head removal]' \
- '(--backup -b)'{-b,--backup}'[bundle unrelated changesets]' \
- '(--nobackup -n)'{-n,--nobackup}'[no backups]' \
- ':revision:_hg_tags'
-}
-
-_hg "$@"
--- a/doc/Makefile Thu Dec 10 12:31:21 2009 +0100
+++ b/doc/Makefile Thu Dec 10 12:31:57 2009 +0100
@@ -1,7 +1,7 @@
SOURCES=$(wildcard *.[0-9].txt)
MAN=$(SOURCES:%.txt=%)
HTML=$(SOURCES:%.txt=%.html)
-GENDOC=gendoc.py ../mercurial/commands.py ../mercurial/help.py ../help/*.txt
+GENDOC=gendoc.py ../mercurial/commands.py ../mercurial/help.py ../mercurial/help/*.txt
PREFIX=/usr/local
MANDIR=$(PREFIX)/share/man
INSTALL=install -c -m 644
--- a/doc/rst2man.py Thu Dec 10 12:31:21 2009 +0100
+++ b/doc/rst2man.py Thu Dec 10 12:31:57 2009 +0100
@@ -228,7 +228,7 @@
'problematic' : ('\n.nf\n', '\n.fi\n'),
}
- # NOTE dont specify the newline before a dot-command, but ensure
+ # NOTE don't specify the newline before a dot-command, but ensure
# it is there.
def comment_begin(self, text):
@@ -763,6 +763,7 @@
def visit_line_block(self, node):
self._line_block += 1
if self._line_block == 1:
+ self.body.append('.sp\n')
self.body.append('.nf\n')
else:
self.body.append('.in +2\n')
--- a/help/config.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-Mercurial reads configuration data from several files, if they exist.
-Below we list the most specific file first.
-
-On Windows, these configuration files are read:
-
-- ``<repo>\.hg\hgrc``
-- ``%USERPROFILE%\.hgrc``
-- ``%USERPROFILE%\Mercurial.ini``
-- ``%HOME%\.hgrc``
-- ``%HOME%\Mercurial.ini``
-- ``C:\Mercurial\Mercurial.ini``
-- ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial``
-- ``<install-dir>\Mercurial.ini``
-
-On Unix, these files are read:
-
-- ``<repo>/.hg/hgrc``
-- ``$HOME/.hgrc``
-- ``/etc/mercurial/hgrc``
-- ``/etc/mercurial/hgrc.d/*.rc``
-- ``<install-root>/etc/mercurial/hgrc``
-- ``<install-root>/etc/mercurial/hgrc.d/*.rc``
-
-The configuration files for Mercurial use a simple ini-file format. A
-configuration file consists of sections, led by a ``[section]`` header
-and followed by ``name = value`` entries::
-
- [ui]
- username = Firstname Lastname <firstname.lastname@example.net>
- verbose = True
-
-This above entries will be referred to as ``ui.username`` and
-``ui.verbose``, respectively. Please see the hgrc man page for a full
-description of the possible configuration values:
-
-- on Unix-like systems: ``man hgrc``
-- online: http://www.selenic.com/mercurial/hgrc.5.html
--- a/help/dates.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-Some commands allow the user to specify a date, e.g.:
-
-- backout, commit, import, tag: Specify the commit date.
-- log, revert, update: Select revision(s) by date.
-
-Many date formats are valid. Here are some examples:
-
-- ``Wed Dec 6 13:18:29 2006`` (local timezone assumed)
-- ``Dec 6 13:18 -0600`` (year assumed, time offset provided)
-- ``Dec 6 13:18 UTC`` (UTC and GMT are aliases for +0000)
-- ``Dec 6`` (midnight)
-- ``13:18`` (today assumed)
-- ``3:39`` (3:39AM assumed)
-- ``3:39pm`` (15:39)
-- ``2006-12-06 13:18:29`` (ISO 8601 format)
-- ``2006-12-6 13:18``
-- ``2006-12-6``
-- ``12-6``
-- ``12/6``
-- ``12/6/6`` (Dec 6 2006)
-
-Lastly, there is Mercurial's internal format:
-
-- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)
-
-This is the internal representation format for dates. unixtime is the
-number of seconds since the epoch (1970-01-01 00:00 UTC). offset is
-the offset of the local timezone, in seconds west of UTC (negative if
-the timezone is east of UTC).
-
-The log command also accepts date ranges:
-
-- ``<{datetime}`` - at or before a given date/time
-- ``>{datetime}`` - on or after a given date/time
-- ``{datetime} to {datetime}`` - a date range, inclusive
-- ``-{days}`` - within a given number of days of today
--- a/help/diffs.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-Mercurial's default format for showing changes between two versions of
-a file is compatible with the unified format of GNU diff, which can be
-used by GNU patch and many other standard tools.
-
-While this standard format is often enough, it does not encode the
-following information:
-
-- executable status and other permission bits
-- copy or rename information
-- changes in binary files
-- creation or deletion of empty files
-
-Mercurial also supports the extended diff format from the git VCS
-which addresses these limitations. The git diff format is not produced
-by default because a few widespread tools still do not understand this
-format.
-
-This means that when generating diffs from a Mercurial repository
-(e.g. with "hg export"), you should be careful about things like file
-copies and renames or other things mentioned above, because when
-applying a standard diff to a different repository, this extra
-information is lost. Mercurial's internal operations (like push and
-pull) are not affected by this, because they use an internal binary
-format for communicating changes.
-
-To make Mercurial produce the git extended diff format, use the --git
-option available for many commands, or set 'git = True' in the [diff]
-section of your hgrc. You do not need to set this option when
-importing diffs in this format or using them in the mq extension.
--- a/help/environment.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-HG
- Path to the 'hg' executable, automatically passed when running
- hooks, extensions or external tools. If unset or empty, this is
- the hg executable's name if it's frozen, or an executable named
- 'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
- Windows) is searched.
-
-HGEDITOR
- This is the name of the editor to run when committing. See EDITOR.
-
- (deprecated, use .hgrc)
-
-HGENCODING
- This overrides the default locale setting detected by Mercurial.
- This setting is used to convert data including usernames,
- changeset descriptions, tag names, and branches. This setting can
- be overridden with the --encoding command-line option.
-
-HGENCODINGMODE
- This sets Mercurial's behavior for handling unknown characters
- while transcoding user input. The default is "strict", which
- causes Mercurial to abort if it can't map a character. Other
- settings include "replace", which replaces unknown characters, and
- "ignore", which drops them. This setting can be overridden with
- the --encodingmode command-line option.
-
-HGMERGE
- An executable to use for resolving merge conflicts. The program
- will be executed with three arguments: local file, remote file,
- ancestor file.
-
- (deprecated, use .hgrc)
-
-HGRCPATH
- A list of files or directories to search for hgrc files. Item
- separator is ":" on Unix, ";" on Windows. If HGRCPATH is not set,
- platform default search path is used. If empty, only the .hg/hgrc
- from the current repository is read.
-
- For each element in HGRCPATH:
-
- - if it's a directory, all files ending with .rc are added
- - otherwise, the file itself will be added
-
-HGUSER
- This is the string used as the author of a commit. If not set,
- available values will be considered in this order:
-
- - HGUSER (deprecated)
- - hgrc files from the HGRCPATH
- - EMAIL
- - interactive prompt
- - LOGNAME (with ``@hostname`` appended)
-
- (deprecated, use .hgrc)
-
-EMAIL
- May be used as the author of a commit; see HGUSER.
-
-LOGNAME
- May be used as the author of a commit; see HGUSER.
-
-VISUAL
- This is the name of the editor to use when committing. See EDITOR.
-
-EDITOR
- Sometimes Mercurial needs to open a text file in an editor for a
- user to modify, for example when writing commit messages. The
- editor it uses is determined by looking at the environment
- variables HGEDITOR, VISUAL and EDITOR, in that order. The first
- non-empty one is chosen. If all of them are empty, the editor
- defaults to 'vi'.
-
-PYTHONPATH
- This is used by Python to find imported modules and may need to be
- set appropriately if this Mercurial is not installed system-wide.
--- a/help/extensions.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-Mercurial has the ability to add new features through the use of
-extensions. Extensions may add new commands, add options to
-existing commands, change the default behavior of commands, or
-implement hooks.
-
-Extensions are not loaded by default for a variety of reasons:
-they can increase startup overhead; they may be meant for advanced
-usage only; they may provide potentially dangerous abilities (such
-as letting you destroy or modify history); they might not be ready
-for prime time; or they may alter some usual behaviors of stock
-Mercurial. It is thus up to the user to activate extensions as
-needed.
-
-To enable the "foo" extension, either shipped with Mercurial or in
-the Python search path, create an entry for it in your hgrc, like
-this::
-
- [extensions]
- foo =
-
-You may also specify the full path to an extension::
-
- [extensions]
- myfeature = ~/.hgext/myfeature.py
-
-To explicitly disable an extension enabled in an hgrc of broader
-scope, prepend its path with !::
-
- [extensions]
- # disabling extension bar residing in /path/to/extension/bar.py
- hgext.bar = !/path/to/extension/bar.py
- # ditto, but no path was supplied for extension baz
- hgext.baz = !
--- a/help/multirevs.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-When Mercurial accepts more than one revision, they may be specified
-individually, or provided as a topologically continuous range,
-separated by the ":" character.
-
-The syntax of range notation is [BEGIN]:[END], where BEGIN and END are
-revision identifiers. Both BEGIN and END are optional. If BEGIN is not
-specified, it defaults to revision number 0. If END is not specified,
-it defaults to the tip. The range ":" thus means "all revisions".
-
-If BEGIN is greater than END, revisions are treated in reverse order.
-
-A range acts as a closed interval. This means that a range of 3:5
-gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.
--- a/help/patterns.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-Mercurial accepts several notations for identifying one or more files
-at a time.
-
-By default, Mercurial treats filenames as shell-style extended glob
-patterns.
-
-Alternate pattern notations must be specified explicitly.
-
-To use a plain path name without any pattern matching, start it with
-``path:``. These path names must completely match starting at the
-current repository root.
-
-To use an extended glob, start a name with ``glob:``. Globs are rooted
-at the current directory; a glob such as ``*.c`` will only match files
-in the current directory ending with ``.c``.
-
-The supported glob syntax extensions are ``**`` to match any string
-across path separators and ``{a,b}`` to mean "a or b".
-
-To use a Perl/Python regular expression, start a name with ``re:``.
-Regexp pattern matching is anchored at the root of the repository.
-
-Plain examples::
-
- path:foo/bar a name bar in a directory named foo in the root
- of the repository
- path:path:name a file or directory named "path:name"
-
-Glob examples::
-
- glob:*.c any name ending in ".c" in the current directory
- *.c any name ending in ".c" in the current directory
- **.c any name ending in ".c" in any subdirectory of the
- current directory including itself.
- foo/*.c any name ending in ".c" in the directory foo
- foo/**.c any name ending in ".c" in any subdirectory of foo
- including itself.
-
-Regexp examples::
-
- re:.*\.c$ any name ending in ".c", anywhere in the repository
--- a/help/revisions.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-Mercurial supports several ways to specify individual revisions.
-
-A plain integer is treated as a revision number. Negative integers are
-treated as sequential offsets from the tip, with -1 denoting the tip,
--2 denoting the revision prior to the tip, and so forth.
-
-A 40-digit hexadecimal string is treated as a unique revision
-identifier.
-
-A hexadecimal string less than 40 characters long is treated as a
-unique revision identifier and is referred to as a short-form
-identifier. A short-form identifier is only valid if it is the prefix
-of exactly one full-length identifier.
-
-Any other string is treated as a tag or branch name. A tag name is a
-symbolic name associated with a revision identifier. A branch name
-denotes the tipmost revision of that branch. Tag and branch names must
-not contain the ":" character.
-
-The reserved name "tip" is a special tag that always identifies the
-most recent revision.
-
-The reserved name "null" indicates the null revision. This is the
-revision of an empty repository, and the parent of revision 0.
-
-The reserved name "." indicates the working directory parent. If no
-working directory is checked out, it is equivalent to null. If an
-uncommitted merge is in progress, "." is the revision of the first
-parent.
--- a/help/templates.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-Mercurial allows you to customize output of commands through
-templates. You can either pass in a template from the command
-line, via the --template option, or select an existing
-template-style (--style).
-
-You can customize output for any "log-like" command: log,
-outgoing, incoming, tip, parents, heads and glog.
-
-Three styles are packaged with Mercurial: default (the style used
-when no explicit preference is passed), compact and changelog.
-Usage::
-
- $ hg log -r1 --style changelog
-
-A template is a piece of text, with markup to invoke variable
-expansion::
-
- $ hg log -r1 --template "{node}\n"
- b56ce7b07c52de7d5fd79fb89701ea538af65746
-
-Strings in curly braces are called keywords. The availability of
-keywords depends on the exact context of the templater. These
-keywords are usually available for templating a log-like command:
-
-:author: String. The unmodified author of the changeset.
-:branches: String. The name of the branch on which the changeset
- was committed. Will be empty if the branch name was
- default.
-:date: Date information. The date when the changeset was
- committed.
-:desc: String. The text of the changeset description.
-:diffstat: String. Statistics of changes with the following
- format: "modified files: +added/-removed lines"
-:files: List of strings. All files modified, added, or removed
- by this changeset.
-:file_adds: List of strings. Files added by this changeset.
-:file_mods: List of strings. Files modified by this changeset.
-:file_dels: List of strings. Files removed by this changeset.
-:node: String. The changeset identification hash, as a
- 40-character hexadecimal string.
-:parents: List of strings. The parents of the changeset.
-:rev: Integer. The repository-local changeset revision
- number.
-:tags: List of strings. Any tags associated with the
- changeset.
-:latesttag: String. Most recent global tag in the ancestors of this
- changeset.
-:latesttagdistance: Integer. Longest path to the latest tag.
-
-The "date" keyword does not produce human-readable output. If you
-want to use a date in your output, you can use a filter to process
-it. Filters are functions which return a string based on the input
-variable. You can also use a chain of filters to get the desired
-output::
-
- $ hg tip --template "{date|isodate}\n"
- 2008-08-21 18:22 +0000
-
-List of filters:
-
-:addbreaks: Any text. Add an XHTML "<br />" tag before the end of
- every line except the last.
-:age: Date. Returns a human-readable date/time difference
- between the given date/time and the current
- date/time.
-:basename: Any text. Treats the text as a path, and returns the
- last component of the path after splitting by the
- path separator (ignoring trailing separators). For
- example, "foo/bar/baz" becomes "baz" and "foo/bar//"
- becomes "bar".
-:stripdir: Treat the text as path and strip a directory level,
- if possible. For example, "foo" and "foo/bar" becomes
- "foo".
-:date: Date. Returns a date in a Unix date format, including
- the timezone: "Mon Sep 04 15:13:13 2006 0700".
-:domain: Any text. Finds the first string that looks like an
- email address, and extracts just the domain
- component. Example: ``User <user@example.com>`` becomes
- ``example.com``.
-:email: Any text. Extracts the first string that looks like
- an email address. Example: ``User <user@example.com>``
- becomes ``user@example.com``.
-:escape: Any text. Replaces the special XML/XHTML characters
- "&", "<" and ">" with XML entities.
-:fill68: Any text. Wraps the text to fit in 68 columns.
-:fill76: Any text. Wraps the text to fit in 76 columns.
-:firstline: Any text. Returns the first line of text.
-:nonempty: Any text. Returns '(none)' if the string is empty.
-:hgdate: Date. Returns the date as a pair of numbers:
- "1157407993 25200" (Unix timestamp, timezone offset).
-:isodate: Date. Returns the date in ISO 8601 format:
- "2009-08-18 13:00 +0200".
-:isodatesec: Date. Returns the date in ISO 8601 format, including
- seconds: "2009-08-18 13:00:13 +0200". See also the
- rfc3339date filter.
-:localdate: Date. Converts a date to local date.
-:obfuscate: Any text. Returns the input text rendered as a
- sequence of XML entities.
-:person: Any text. Returns the text before an email address.
-:rfc822date: Date. Returns a date using the same format used in
- email headers: "Tue, 18 Aug 2009 13:00:13 +0200".
-:rfc3339date: Date. Returns a date using the Internet date format
- specified in RFC 3339: "2009-08-18T13:00:13+02:00".
-:short: Changeset hash. Returns the short form of a changeset
- hash, i.e. a 12-byte hexadecimal string.
-:shortdate: Date. Returns a date like "2006-09-18".
-:strip: Any text. Strips all leading and trailing whitespace.
-:tabindent: Any text. Returns the text, with every line except
- the first starting with a tab character.
-:urlescape: Any text. Escapes all "special" characters. For
- example, "foo bar" becomes "foo%20bar".
-:user: Any text. Returns the user portion of an email
- address.
--- a/help/urls.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-Valid URLs are of the form::
-
- local/filesystem/path[#revision]
- file://local/filesystem/path[#revision]
- http://[user[:pass]@]host[:port]/[path][#revision]
- https://[user[:pass]@]host[:port]/[path][#revision]
- ssh://[user[:pass]@]host[:port]/[path][#revision]
-
-Paths in the local filesystem can either point to Mercurial
-repositories or to bundle files (as created by 'hg bundle' or 'hg
-incoming --bundle').
-
-An optional identifier after # indicates a particular branch, tag, or
-changeset to use from the remote repository. See also 'hg help
-revisions'.
-
-Some features, such as pushing to http:// and https:// URLs are only
-possible if the feature is explicitly enabled on the remote Mercurial
-server.
-
-Some notes about using SSH with Mercurial:
-
-- SSH requires an accessible shell account on the destination machine
- and a copy of hg in the remote path or specified with as remotecmd.
-- path is relative to the remote user's home directory by default. Use
- an extra slash at the start of a path to specify an absolute path::
-
- ssh://example.com//tmp/repository
-
-- Mercurial doesn't use its own compression via SSH; the right thing
- to do is to configure it in your ~/.ssh/config, e.g.::
-
- Host *.mylocalnetwork.example.com
- Compression no
- Host *
- Compression yes
-
- Alternatively specify "ssh -C" as your ssh command in your hgrc or
- with the --ssh command line option.
-
-These URLs can all be stored in your hgrc with path aliases under the
-[paths] section like so::
-
- [paths]
- alias1 = URL1
- alias2 = URL2
- ...
-
-You can then use the alias for any command that uses a URL (for
-example 'hg pull alias1' will be treated as 'hg pull URL1').
-
-Two path aliases are special because they are used as defaults when
-you do not provide the URL to a command:
-
-default:
- When you create a repository with hg clone, the clone command saves
- the location of the source repository as the new repository's
- 'default' path. This is then used when you omit path from push- and
- pull-like commands (including incoming and outgoing).
-
-default-push:
- The push command will look for a path named 'default-push', and
- prefer it over 'default' if both are defined.
--- a/hgext/color.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/color.py Thu Dec 10 12:31:57 2009 +0100
@@ -213,6 +213,16 @@
finally:
ui.write = oldwrite
+def colorchurn(orig, ui, repo, *pats, **opts):
+ '''run the churn command with colored output'''
+ if not opts.get('diffstat'):
+ return orig(ui, repo, *pats, **opts)
+ oldwrite = extensions.wrapfunction(ui, 'write', colordiffstat)
+ try:
+ orig(ui, repo, *pats, **opts)
+ finally:
+ ui.write = oldwrite
+
_diff_prefixes = [('diff', 'diffline'),
('copy', 'extended'),
('rename', 'extended'),
@@ -259,7 +269,11 @@
if mq and rec:
_setupcmd(ui, 'qrecord', rec.cmdtable, colordiff, _diff_effects)
-
+ try:
+ churn = extensions.find('churn')
+ _setupcmd(ui, 'churn', churn.cmdtable, colorchurn, _diff_effects)
+ except KeyError:
+ churn = None
def _setupcmd(ui, cmd, table, func, effectsmap):
'''patch in command to command table and load effect map'''
--- a/hgext/convert/convcmd.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/convert/convcmd.py Thu Dec 10 12:31:57 2009 +0100
@@ -48,6 +48,8 @@
def convertsource(ui, path, type, rev):
exceptions = []
+ if type and type not in [s[0] for s in source_converters]:
+ raise util.Abort(_('%s: invalid source repository type') % type)
for name, source, sortmode in source_converters:
try:
if not type or name == type:
@@ -60,6 +62,8 @@
raise util.Abort(_('%s: missing or unsupported repository') % path)
def convertsink(ui, path, type):
+ if type and type not in [s[0] for s in sink_converters]:
+ raise util.Abort(_('%s: invalid destination repository type') % type)
for name, sink in sink_converters:
try:
if not type or name == type:
--- a/hgext/convert/filemap.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/convert/filemap.py Thu Dec 10 12:31:57 2009 +0100
@@ -10,11 +10,11 @@
from common import SKIPREV, converter_source
def rpairs(name):
- yield '.', name
e = len(name)
while e != -1:
yield name[:e], name[e+1:]
e = name.rfind('/', 0, e)
+ yield '.', name
class filemapper(object):
'''Map and filter filenames when importing.
@@ -82,7 +82,7 @@
exc = self.lookup(name, self.exclude)[0]
else:
exc = ''
- if not inc or exc:
+ if (not self.include and exc) or (len(inc) <= len(exc)):
return None
newpre, pre, suf = self.lookup(name, self.rename)
if newpre:
--- a/hgext/extdiff.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/extdiff.py Thu Dec 10 12:31:57 2009 +0100
@@ -146,10 +146,10 @@
if node2:
dir2 = snapshot(ui, repo, modadd, node2, tmproot)[0]
elif len(common) > 1:
- #we only actually need to get the files to copy back to the working
- #dir in this case (because the other cases are: diffing 2 revisions
- #or single file -- in which case the file is already directly passed
- #to the diff tool).
+ #we only actually need to get the files to copy back to
+ #the working dir in this case (because the other cases
+ #are: diffing 2 revisions or single file -- in which case
+ #the file is already directly passed to the diff tool).
dir2, fns_and_mtime = snapshot(ui, repo, modadd, None, tmproot)
else:
# This lets the diff tool open the changed file directly
@@ -169,8 +169,9 @@
dir1b = os.devnull
dir2 = os.path.join(dir2root, dir2, common_file)
- # Function to quote file/dir names in the argument string
- # When not operating in 3-way mode, an empty string is returned for parent2
+ # Function to quote file/dir names in the argument string.
+ # When not operating in 3-way mode, an empty string is
+ # returned for parent2
replace = dict(parent=dir1a, parent1=dir1a, parent2=dir1b, child=dir2)
def quote(match):
key = match.group()[1:]
@@ -258,13 +259,14 @@
doc = _('''\
use %(path)s to diff repository (or selected files)
- Show differences between revisions for the specified files, using the
- %(path)s program.
+ Show differences between revisions for the specified files, using
+ the %(path)s program.
- When two revision arguments are given, then changes are shown between
- those revisions. If only one revision is specified then that revision is
- compared to the working directory, and, when no revisions are specified,
- the working directory files are compared to its parent.\
+ When two revision arguments are given, then changes are shown
+ between those revisions. If only one revision is specified then
+ that revision is compared to the working directory, and, when no
+ revisions are specified, the working directory files are compared
+ to its parent.\
''') % dict(path=util.uirepr(path))
# We must translate the docstring right away since it is
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext/inotify/linuxserver.py Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,429 @@
+# linuxserver.py - inotify status server for linux
+#
+# Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
+# Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2, incorporated herein by reference.
+
+from mercurial.i18n import _
+from mercurial import osutil, util
+import common
+import server
+import errno, os, select, stat, sys, time
+
+try:
+ import linux as inotify
+ from linux import watcher
+except ImportError:
+ raise
+
+def walkrepodirs(dirstate, absroot):
+ '''Iterate over all subdirectories of this repo.
+ Exclude the .hg directory, any nested repos, and ignored dirs.'''
+ def walkit(dirname, top):
+ fullpath = server.join(absroot, dirname)
+ try:
+ for name, kind in osutil.listdir(fullpath):
+ if kind == stat.S_IFDIR:
+ if name == '.hg':
+ if not top:
+ return
+ else:
+ d = server.join(dirname, name)
+ if dirstate._ignore(d):
+ continue
+ for subdir in walkit(d, False):
+ yield subdir
+ except OSError, err:
+ if err.errno not in server.walk_ignored_errors:
+ raise
+ yield fullpath
+
+ return walkit('', True)
+
+def _explain_watch_limit(ui, dirstate, rootabs):
+ path = '/proc/sys/fs/inotify/max_user_watches'
+ try:
+ limit = int(file(path).read())
+ except IOError, err:
+ if err.errno != errno.ENOENT:
+ raise
+ raise util.Abort(_('this system does not seem to '
+ 'support inotify'))
+ ui.warn(_('*** the current per-user limit on the number '
+ 'of inotify watches is %s\n') % limit)
+ ui.warn(_('*** this limit is too low to watch every '
+ 'directory in this repository\n'))
+ ui.warn(_('*** counting directories: '))
+ ndirs = len(list(walkrepodirs(dirstate, rootabs)))
+ ui.warn(_('found %d\n') % ndirs)
+ newlimit = min(limit, 1024)
+ while newlimit < ((limit + ndirs) * 1.1):
+ newlimit *= 2
+ ui.warn(_('*** to raise the limit from %d to %d (run as root):\n') %
+ (limit, newlimit))
+ ui.warn(_('*** echo %d > %s\n') % (newlimit, path))
+ raise util.Abort(_('cannot watch %s until inotify watch limit is raised')
+ % rootabs)
+
+class pollable(object):
+ """
+ Interface to support polling.
+ The file descriptor returned by fileno() is registered to a polling
+ object.
+ Usage:
+ Every tick, check if an event has happened since the last tick:
+ * If yes, call handle_events
+ * If no, call handle_timeout
+ """
+ poll_events = select.POLLIN
+ instances = {}
+ poll = select.poll()
+
+ def fileno(self):
+ raise NotImplementedError
+
+ def handle_events(self, events):
+ raise NotImplementedError
+
+ def handle_timeout(self):
+ raise NotImplementedError
+
+ def shutdown(self):
+ raise NotImplementedError
+
+ def register(self, timeout):
+ fd = self.fileno()
+
+ pollable.poll.register(fd, pollable.poll_events)
+ pollable.instances[fd] = self
+
+ self.registered = True
+ self.timeout = timeout
+
+ def unregister(self):
+ pollable.poll.unregister(self)
+ self.registered = False
+
+ @classmethod
+ def run(cls):
+ while True:
+ timeout = None
+ timeobj = None
+ for obj in cls.instances.itervalues():
+ if obj.timeout is not None and (timeout is None or obj.timeout < timeout):
+ timeout, timeobj = obj.timeout, obj
+ try:
+ events = cls.poll.poll(timeout)
+ except select.error, err:
+ if err[0] == errno.EINTR:
+ continue
+ raise
+ if events:
+ by_fd = {}
+ for fd, event in events:
+ by_fd.setdefault(fd, []).append(event)
+
+ for fd, events in by_fd.iteritems():
+ cls.instances[fd].handle_pollevents(events)
+
+ elif timeobj:
+ timeobj.handle_timeout()
+
+def eventaction(code):
+ """
+ Decorator to help handle events in repowatcher
+ """
+ def decorator(f):
+ def wrapper(self, wpath):
+ if code == 'm' and wpath in self.lastevent and \
+ self.lastevent[wpath] in 'cm':
+ return
+ self.lastevent[wpath] = code
+ self.timeout = 250
+
+ f(self, wpath)
+
+ wrapper.func_name = f.func_name
+ return wrapper
+ return decorator
+
+class repowatcher(server.repowatcher, pollable):
+ """
+ Watches inotify events
+ """
+ mask = (
+ inotify.IN_ATTRIB |
+ inotify.IN_CREATE |
+ inotify.IN_DELETE |
+ inotify.IN_DELETE_SELF |
+ inotify.IN_MODIFY |
+ inotify.IN_MOVED_FROM |
+ inotify.IN_MOVED_TO |
+ inotify.IN_MOVE_SELF |
+ inotify.IN_ONLYDIR |
+ inotify.IN_UNMOUNT |
+ 0)
+
+ def __init__(self, ui, dirstate, root):
+ server.repowatcher.__init__(self, ui, dirstate, root)
+
+ self.lastevent = {}
+ try:
+ self.watcher = watcher.watcher()
+ except OSError, err:
+ raise util.Abort(_('inotify service not available: %s') %
+ err.strerror)
+ self.threshold = watcher.threshold(self.watcher)
+ self.fileno = self.watcher.fileno
+ self.register(timeout=None)
+
+ self.handle_timeout()
+ self.scan()
+
+ def event_time(self):
+ last = self.last_event
+ now = time.time()
+ self.last_event = now
+
+ if last is None:
+ return 'start'
+ delta = now - last
+ if delta < 5:
+ return '+%.3f' % delta
+ if delta < 50:
+ return '+%.2f' % delta
+ return '+%.1f' % delta
+
+ def add_watch(self, path, mask):
+ if not path:
+ return
+ if self.watcher.path(path) is None:
+ if self.ui.debugflag:
+ self.ui.note(_('watching %r\n') % path[self.prefixlen:])
+ try:
+ self.watcher.add(path, mask)
+ except OSError, err:
+ if err.errno in (errno.ENOENT, errno.ENOTDIR):
+ return
+ if err.errno != errno.ENOSPC:
+ raise
+ _explain_watch_limit(self.ui, self.dirstate, self.wprefix)
+
+ def setup(self):
+ self.ui.note(_('watching directories under %r\n') % self.wprefix)
+ self.add_watch(self.wprefix + '.hg', inotify.IN_DELETE)
+ self.check_dirstate()
+
+ def scan(self, topdir=''):
+ ds = self.dirstate._map.copy()
+ self.add_watch(server.join(self.wprefix, topdir), self.mask)
+ for root, dirs, files in server.walk(self.dirstate, self.wprefix,
+ topdir):
+ for d in dirs:
+ self.add_watch(server.join(root, d), self.mask)
+ wroot = root[self.prefixlen:]
+ for fn in files:
+ wfn = server.join(wroot, fn)
+ self.updatefile(wfn, self.getstat(wfn))
+ ds.pop(wfn, None)
+ wtopdir = topdir
+ if wtopdir and wtopdir[-1] != '/':
+ wtopdir += '/'
+ for wfn, state in ds.iteritems():
+ if not wfn.startswith(wtopdir):
+ continue
+ try:
+ st = self.stat(wfn)
+ except OSError:
+ status = state[0]
+ self.deletefile(wfn, status)
+ else:
+ self.updatefile(wfn, st)
+ self.check_deleted('!')
+ self.check_deleted('r')
+
+ @eventaction('c')
+ def created(self, wpath):
+ if wpath == '.hgignore':
+ self.update_hgignore()
+ try:
+ st = self.stat(wpath)
+ if stat.S_ISREG(st[0]):
+ self.updatefile(wpath, st)
+ except OSError:
+ pass
+
+ @eventaction('m')
+ def modified(self, wpath):
+ if wpath == '.hgignore':
+ self.update_hgignore()
+ try:
+ st = self.stat(wpath)
+ if stat.S_ISREG(st[0]):
+ if self.dirstate[wpath] in 'lmn':
+ self.updatefile(wpath, st)
+ except OSError:
+ pass
+
+ @eventaction('d')
+ def deleted(self, wpath):
+ if wpath == '.hgignore':
+ self.update_hgignore()
+ elif wpath.startswith('.hg/'):
+ if wpath == '.hg/wlock':
+ self.check_dirstate()
+ return
+
+ self.deletefile(wpath, self.dirstate[wpath])
+
+ def process_create(self, wpath, evt):
+ if self.ui.debugflag:
+ self.ui.note(_('%s event: created %s\n') %
+ (self.event_time(), wpath))
+
+ if evt.mask & inotify.IN_ISDIR:
+ self.scan(wpath)
+ else:
+ self.created(wpath)
+
+ def process_delete(self, wpath, evt):
+ if self.ui.debugflag:
+ self.ui.note(_('%s event: deleted %s\n') %
+ (self.event_time(), wpath))
+
+ if evt.mask & inotify.IN_ISDIR:
+ tree = self.tree.dir(wpath)
+ todelete = [wfn for wfn, ignore in tree.walk('?')]
+ for fn in todelete:
+ self.deletefile(fn, '?')
+ self.scan(wpath)
+ else:
+ self.deleted(wpath)
+
+ def process_modify(self, wpath, evt):
+ if self.ui.debugflag:
+ self.ui.note(_('%s event: modified %s\n') %
+ (self.event_time(), wpath))
+
+ if not (evt.mask & inotify.IN_ISDIR):
+ self.modified(wpath)
+
+ def process_unmount(self, evt):
+ self.ui.warn(_('filesystem containing %s was unmounted\n') %
+ evt.fullpath)
+ sys.exit(0)
+
+ def handle_pollevents(self, events):
+ if self.ui.debugflag:
+ self.ui.note(_('%s readable: %d bytes\n') %
+ (self.event_time(), self.threshold.readable()))
+ if not self.threshold():
+ if self.registered:
+ if self.ui.debugflag:
+ self.ui.note(_('%s below threshold - unhooking\n') %
+ (self.event_time()))
+ self.unregister()
+ self.timeout = 250
+ else:
+ self.read_events()
+
+ def read_events(self, bufsize=None):
+ events = self.watcher.read(bufsize)
+ if self.ui.debugflag:
+ self.ui.note(_('%s reading %d events\n') %
+ (self.event_time(), len(events)))
+ for evt in events:
+ assert evt.fullpath.startswith(self.wprefix)
+ wpath = evt.fullpath[self.prefixlen:]
+
+ # paths have been normalized, wpath never ends with a '/'
+
+ if wpath.startswith('.hg/') and evt.mask & inotify.IN_ISDIR:
+ # ignore subdirectories of .hg/ (merge, patches...)
+ continue
+
+ if evt.mask & inotify.IN_UNMOUNT:
+ self.process_unmount(wpath, evt)
+ elif evt.mask & (inotify.IN_MODIFY | inotify.IN_ATTRIB):
+ self.process_modify(wpath, evt)
+ elif evt.mask & (inotify.IN_DELETE | inotify.IN_DELETE_SELF |
+ inotify.IN_MOVED_FROM):
+ self.process_delete(wpath, evt)
+ elif evt.mask & (inotify.IN_CREATE | inotify.IN_MOVED_TO):
+ self.process_create(wpath, evt)
+
+ self.lastevent.clear()
+
+ def handle_timeout(self):
+ if not self.registered:
+ if self.ui.debugflag:
+ self.ui.note(_('%s hooking back up with %d bytes readable\n') %
+ (self.event_time(), self.threshold.readable()))
+ self.read_events(0)
+ self.register(timeout=None)
+
+ self.timeout = None
+
+ def shutdown(self):
+ self.watcher.close()
+
+ def debug(self):
+ """
+ Returns a sorted list of relatives paths currently watched,
+ for debugging purposes.
+ """
+ return sorted(tuple[0][self.prefixlen:] for tuple in self.watcher)
+
+class socketlistener(server.socketlistener, pollable):
+ """
+ Listens for client queries on unix socket inotify.sock
+ """
+ def __init__(self, ui, root, repowatcher, timeout):
+ server.socketlistener.__init__(self, ui, root, repowatcher, timeout)
+ self.register(timeout=timeout)
+
+ def handle_timeout(self):
+ pass
+
+ def handle_pollevents(self, events):
+ for e in events:
+ self.accept_connection()
+
+ def shutdown(self):
+ self.sock.close()
+ try:
+ os.unlink(self.sockpath)
+ if self.realsockpath:
+ os.unlink(self.realsockpath)
+ os.rmdir(os.path.dirname(self.realsockpath))
+ except OSError, err:
+ if err.errno != errno.ENOENT:
+ raise
+
+ def answer_stat_query(self, cs):
+ if self.repowatcher.timeout:
+ # We got a query while a rescan is pending. Make sure we
+ # rescan before responding, or we could give back a wrong
+ # answer.
+ self.repowatcher.handle_timeout()
+ return server.socketlistener.answer_stat_query(self, cs)
+
+class master(object):
+ def __init__(self, ui, dirstate, root, timeout=None):
+ self.ui = ui
+ self.repowatcher = repowatcher(ui, dirstate, root)
+ self.socketlistener = socketlistener(ui, root, self.repowatcher,
+ timeout)
+
+ def shutdown(self):
+ for obj in pollable.instances.itervalues():
+ obj.shutdown()
+
+ def run(self):
+ self.repowatcher.setup()
+ self.ui.note(_('finished setup\n'))
+ if os.getenv('TIME_STARTUP'):
+ sys.exit(0)
+ pollable.run()
--- a/hgext/inotify/server.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/inotify/server.py Thu Dec 10 12:31:57 2009 +0100
@@ -1,7 +1,6 @@
-# server.py - inotify status server
+# server.py - common entry point for inotify status server
#
-# Copyright 2006, 2007, 2008 Bryan O'Sullivan <bos@serpentine.com>
-# Copyright 2007, 2008 Brendan Cully <brendan@kublai.com>
+# Copyright 2009 Nicolas Dumazet <nicdumz@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2, incorporated herein by reference.
@@ -9,13 +8,14 @@
from mercurial.i18n import _
from mercurial import cmdutil, osutil, util
import common
-import errno, os, select, socket, stat, struct, sys, tempfile, time
-try:
- import linux as inotify
- from linux import watcher
-except ImportError:
- raise
+import errno
+import os
+import socket
+import stat
+import struct
+import sys
+import tempfile
class AlreadyStartedException(Exception): pass
@@ -34,30 +34,6 @@
walk_ignored_errors = (errno.ENOENT, errno.ENAMETOOLONG)
-def walkrepodirs(dirstate, absroot):
- '''Iterate over all subdirectories of this repo.
- Exclude the .hg directory, any nested repos, and ignored dirs.'''
- def walkit(dirname, top):
- fullpath = join(absroot, dirname)
- try:
- for name, kind in osutil.listdir(fullpath):
- if kind == stat.S_IFDIR:
- if name == '.hg':
- if not top:
- return
- else:
- d = join(dirname, name)
- if dirstate._ignore(d):
- continue
- for subdir in walkit(d, False):
- yield subdir
- except OSError, err:
- if err.errno not in walk_ignored_errors:
- raise
- yield fullpath
-
- return walkit('', True)
-
def walk(dirstate, absroot, root):
'''Like os.walk, but only yields regular files.'''
@@ -94,113 +70,6 @@
return walkit(root, root == '')
-def _explain_watch_limit(ui, dirstate, rootabs):
- path = '/proc/sys/fs/inotify/max_user_watches'
- try:
- limit = int(file(path).read())
- except IOError, err:
- if err.errno != errno.ENOENT:
- raise
- raise util.Abort(_('this system does not seem to '
- 'support inotify'))
- ui.warn(_('*** the current per-user limit on the number '
- 'of inotify watches is %s\n') % limit)
- ui.warn(_('*** this limit is too low to watch every '
- 'directory in this repository\n'))
- ui.warn(_('*** counting directories: '))
- ndirs = len(list(walkrepodirs(dirstate, rootabs)))
- ui.warn(_('found %d\n') % ndirs)
- newlimit = min(limit, 1024)
- while newlimit < ((limit + ndirs) * 1.1):
- newlimit *= 2
- ui.warn(_('*** to raise the limit from %d to %d (run as root):\n') %
- (limit, newlimit))
- ui.warn(_('*** echo %d > %s\n') % (newlimit, path))
- raise util.Abort(_('cannot watch %s until inotify watch limit is raised')
- % rootabs)
-
-class pollable(object):
- """
- Interface to support polling.
- The file descriptor returned by fileno() is registered to a polling
- object.
- Usage:
- Every tick, check if an event has happened since the last tick:
- * If yes, call handle_events
- * If no, call handle_timeout
- """
- poll_events = select.POLLIN
- instances = {}
- poll = select.poll()
-
- def fileno(self):
- raise NotImplementedError
-
- def handle_events(self, events):
- raise NotImplementedError
-
- def handle_timeout(self):
- raise NotImplementedError
-
- def shutdown(self):
- raise NotImplementedError
-
- def register(self, timeout):
- fd = self.fileno()
-
- pollable.poll.register(fd, pollable.poll_events)
- pollable.instances[fd] = self
-
- self.registered = True
- self.timeout = timeout
-
- def unregister(self):
- pollable.poll.unregister(self)
- self.registered = False
-
- @classmethod
- def run(cls):
- while True:
- timeout = None
- timeobj = None
- for obj in cls.instances.itervalues():
- if obj.timeout is not None and (timeout is None or obj.timeout < timeout):
- timeout, timeobj = obj.timeout, obj
- try:
- events = cls.poll.poll(timeout)
- except select.error, err:
- if err[0] == errno.EINTR:
- continue
- raise
- if events:
- by_fd = {}
- for fd, event in events:
- by_fd.setdefault(fd, []).append(event)
-
- for fd, events in by_fd.iteritems():
- cls.instances[fd].handle_pollevents(events)
-
- elif timeobj:
- timeobj.handle_timeout()
-
-def eventaction(code):
- """
- Decorator to help handle events in repowatcher
- """
- def decorator(f):
- def wrapper(self, wpath):
- if code == 'm' and wpath in self.lastevent and \
- self.lastevent[wpath] in 'cm':
- return
- self.lastevent[wpath] = code
- self.timeout = 250
-
- f(self, wpath)
-
- wrapper.func_name = f.func_name
- return wrapper
- return decorator
-
class directory(object):
"""
Representing a directory
@@ -293,23 +162,11 @@
# path is not tracked
pass
-class repowatcher(pollable):
+class repowatcher(object):
"""
Watches inotify events
"""
statuskeys = 'almr!?'
- mask = (
- inotify.IN_ATTRIB |
- inotify.IN_CREATE |
- inotify.IN_DELETE |
- inotify.IN_DELETE_SELF |
- inotify.IN_MODIFY |
- inotify.IN_MOVED_FROM |
- inotify.IN_MOVED_TO |
- inotify.IN_MOVE_SELF |
- inotify.IN_ONLYDIR |
- inotify.IN_UNMOUNT |
- 0)
def __init__(self, ui, dirstate, root):
self.ui = ui
@@ -317,41 +174,18 @@
self.wprefix = join(root, '')
self.prefixlen = len(self.wprefix)
- try:
- self.watcher = watcher.watcher()
- except OSError, err:
- raise util.Abort(_('inotify service not available: %s') %
- err.strerror)
- self.threshold = watcher.threshold(self.watcher)
- self.fileno = self.watcher.fileno
self.tree = directory()
self.statcache = {}
self.statustrees = dict([(s, directory()) for s in self.statuskeys])
+ self.ds_info = self.dirstate_info()
+
self.last_event = None
- self.lastevent = {}
- self.register(timeout=None)
-
- self.ds_info = self.dirstate_info()
- self.handle_timeout()
- self.scan()
-
- def event_time(self):
- last = self.last_event
- now = time.time()
- self.last_event = now
-
- if last is None:
- return 'start'
- delta = now - last
- if delta < 5:
- return '+%.3f' % delta
- if delta < 50:
- return '+%.2f' % delta
- return '+%.1f' % delta
+ def handle_timeout(self):
+ pass
def dirstate_info(self):
try:
@@ -362,26 +196,6 @@
raise
return 0, 0
- def add_watch(self, path, mask):
- if not path:
- return
- if self.watcher.path(path) is None:
- if self.ui.debugflag:
- self.ui.note(_('watching %r\n') % path[self.prefixlen:])
- try:
- self.watcher.add(path, mask)
- except OSError, err:
- if err.errno in (errno.ENOENT, errno.ENOTDIR):
- return
- if err.errno != errno.ENOSPC:
- raise
- _explain_watch_limit(self.ui, self.dirstate, self.wprefix)
-
- def setup(self):
- self.ui.note(_('watching directories under %r\n') % self.wprefix)
- self.add_watch(self.wprefix + '.hg', inotify.IN_DELETE)
- self.check_dirstate()
-
def filestatus(self, fn, st):
try:
type_, mode, size, time = self.dirstate._map[fn][:4]
@@ -455,7 +269,6 @@
if newstatus != 'n':
self.statustrees[newstatus].dir(root).files[fn] = newstatus
-
def check_deleted(self, key):
# Files that had been deleted but were present in the dirstate
# may have vanished from the dirstate; we must clean them up.
@@ -468,33 +281,6 @@
del self.statustrees[key].dir(root).files[fn]
del self.tree.dir(root).files[fn]
- def scan(self, topdir=''):
- ds = self.dirstate._map.copy()
- self.add_watch(join(self.wprefix, topdir), self.mask)
- for root, dirs, files in walk(self.dirstate, self.wprefix, topdir):
- for d in dirs:
- self.add_watch(join(root, d), self.mask)
- wroot = root[self.prefixlen:]
- for fn in files:
- wfn = join(wroot, fn)
- self.updatefile(wfn, self.getstat(wfn))
- ds.pop(wfn, None)
- wtopdir = topdir
- if wtopdir and wtopdir[-1] != '/':
- wtopdir += '/'
- for wfn, state in ds.iteritems():
- if not wfn.startswith(wtopdir):
- continue
- try:
- st = self.stat(wfn)
- except OSError:
- status = state[0]
- self.deletefile(wfn, status)
- else:
- self.updatefile(wfn, st)
- self.check_deleted('!')
- self.check_deleted('r')
-
def check_dirstate(self):
ds_info = self.dirstate_info()
if ds_info == self.ds_info:
@@ -502,11 +288,9 @@
self.ds_info = ds_info
if not self.ui.debugflag:
self.last_event = None
- self.ui.note(_('%s dirstate reload\n') % self.event_time())
self.dirstate.invalidate()
self.handle_timeout()
self.scan()
- self.ui.note(_('%s end dirstate reload\n') % self.event_time())
def update_hgignore(self):
# An update of the ignore file can potentially change the
@@ -545,139 +329,7 @@
self.statcache.pop(wpath, None)
raise
- @eventaction('c')
- def created(self, wpath):
- if wpath == '.hgignore':
- self.update_hgignore()
- try:
- st = self.stat(wpath)
- if stat.S_ISREG(st[0]):
- self.updatefile(wpath, st)
- except OSError:
- pass
-
- @eventaction('m')
- def modified(self, wpath):
- if wpath == '.hgignore':
- self.update_hgignore()
- try:
- st = self.stat(wpath)
- if stat.S_ISREG(st[0]):
- if self.dirstate[wpath] in 'lmn':
- self.updatefile(wpath, st)
- except OSError:
- pass
-
- @eventaction('d')
- def deleted(self, wpath):
- if wpath == '.hgignore':
- self.update_hgignore()
- elif wpath.startswith('.hg/'):
- if wpath == '.hg/wlock':
- self.check_dirstate()
- return
-
- self.deletefile(wpath, self.dirstate[wpath])
-
- def process_create(self, wpath, evt):
- if self.ui.debugflag:
- self.ui.note(_('%s event: created %s\n') %
- (self.event_time(), wpath))
-
- if evt.mask & inotify.IN_ISDIR:
- self.scan(wpath)
- else:
- self.created(wpath)
-
- def process_delete(self, wpath, evt):
- if self.ui.debugflag:
- self.ui.note(_('%s event: deleted %s\n') %
- (self.event_time(), wpath))
-
- if evt.mask & inotify.IN_ISDIR:
- tree = self.tree.dir(wpath)
- todelete = [wfn for wfn, ignore in tree.walk('?')]
- for fn in todelete:
- self.deletefile(fn, '?')
- self.scan(wpath)
- else:
- self.deleted(wpath)
-
- def process_modify(self, wpath, evt):
- if self.ui.debugflag:
- self.ui.note(_('%s event: modified %s\n') %
- (self.event_time(), wpath))
-
- if not (evt.mask & inotify.IN_ISDIR):
- self.modified(wpath)
-
- def process_unmount(self, evt):
- self.ui.warn(_('filesystem containing %s was unmounted\n') %
- evt.fullpath)
- sys.exit(0)
-
- def handle_pollevents(self, events):
- if self.ui.debugflag:
- self.ui.note(_('%s readable: %d bytes\n') %
- (self.event_time(), self.threshold.readable()))
- if not self.threshold():
- if self.registered:
- if self.ui.debugflag:
- self.ui.note(_('%s below threshold - unhooking\n') %
- (self.event_time()))
- self.unregister()
- self.timeout = 250
- else:
- self.read_events()
-
- def read_events(self, bufsize=None):
- events = self.watcher.read(bufsize)
- if self.ui.debugflag:
- self.ui.note(_('%s reading %d events\n') %
- (self.event_time(), len(events)))
- for evt in events:
- assert evt.fullpath.startswith(self.wprefix)
- wpath = evt.fullpath[self.prefixlen:]
-
- # paths have been normalized, wpath never ends with a '/'
-
- if wpath.startswith('.hg/') and evt.mask & inotify.IN_ISDIR:
- # ignore subdirectories of .hg/ (merge, patches...)
- continue
-
- if evt.mask & inotify.IN_UNMOUNT:
- self.process_unmount(wpath, evt)
- elif evt.mask & (inotify.IN_MODIFY | inotify.IN_ATTRIB):
- self.process_modify(wpath, evt)
- elif evt.mask & (inotify.IN_DELETE | inotify.IN_DELETE_SELF |
- inotify.IN_MOVED_FROM):
- self.process_delete(wpath, evt)
- elif evt.mask & (inotify.IN_CREATE | inotify.IN_MOVED_TO):
- self.process_create(wpath, evt)
-
- self.lastevent.clear()
-
- def handle_timeout(self):
- if not self.registered:
- if self.ui.debugflag:
- self.ui.note(_('%s hooking back up with %d bytes readable\n') %
- (self.event_time(), self.threshold.readable()))
- self.read_events(0)
- self.register(timeout=None)
-
- self.timeout = None
-
- def shutdown(self):
- self.watcher.close()
-
- def debug(self):
- """
- Returns a sorted list of relatives paths currently watched,
- for debugging purposes.
- """
- return sorted(tuple[0][self.prefixlen:] for tuple in self.watcher)
-
-class server(pollable):
+class socketlistener(object):
"""
Listens for client queries on unix socket inotify.sock
"""
@@ -718,10 +370,6 @@
raise
self.sock.listen(5)
self.fileno = self.sock.fileno
- self.register(timeout=timeout)
-
- def handle_timeout(self):
- pass
def answer_stat_query(self, cs):
names = cs.read().split('\0')
@@ -730,12 +378,6 @@
self.ui.note(_('answering query for %r\n') % states)
- if self.repowatcher.timeout:
- # We got a query while a rescan is pending. Make sure we
- # rescan before responding, or we could give back a wrong
- # answer.
- self.repowatcher.handle_timeout()
-
visited = set()
if not names:
def genresult(states, tree):
@@ -764,11 +406,7 @@
def answer_dbug_query(self):
return ['\0'.join(self.repowatcher.debug())]
- def handle_pollevents(self, events):
- for e in events:
- self.handle_pollevent()
-
- def handle_pollevent(self):
+ def accept_connection(self):
sock, addr = self.sock.accept()
cs = common.recvcs(sock)
@@ -808,33 +446,12 @@
if err[0] != errno.EPIPE:
raise
- def shutdown(self):
- self.sock.close()
- try:
- os.unlink(self.sockpath)
- if self.realsockpath:
- os.unlink(self.realsockpath)
- os.rmdir(os.path.dirname(self.realsockpath))
- except OSError, err:
- if err.errno != errno.ENOENT:
- raise
+if sys.platform == 'linux2':
+ import linuxserver as _server
+else:
+ raise ImportError
-class master(object):
- def __init__(self, ui, dirstate, root, timeout=None):
- self.ui = ui
- self.repowatcher = repowatcher(ui, dirstate, root)
- self.server = server(ui, root, self.repowatcher, timeout)
-
- def shutdown(self):
- for obj in pollable.instances.itervalues():
- obj.shutdown()
-
- def run(self):
- self.repowatcher.setup()
- self.ui.note(_('finished setup\n'))
- if os.getenv('TIME_STARTUP'):
- sys.exit(0)
- pollable.run()
+master = _server.master
def start(ui, dirstate, root, opts):
timeout = opts.get('timeout')
@@ -865,5 +482,8 @@
service = service()
logfile = ui.config('inotify', 'log')
+
+ appendpid = ui.configbool('inotify', 'appendpid', False)
+
cmdutil.service(opts, initfn=service.init, runfn=service.run,
- logfile=logfile, runargs=runargs)
+ logfile=logfile, runargs=runargs, appendpid=appendpid)
--- a/hgext/keyword.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/keyword.py Thu Dec 10 12:31:57 2009 +0100
@@ -112,7 +112,8 @@
'Author': '{author|user}',
'Date': '{date|utcdate}',
'RCSfile': '{file|basename},v',
- 'RCSFile': '{file|basename},v', # kept only for backwards compatibility
+ 'RCSFile': '{file|basename},v', # kept for backwards compatibility
+ # with hg-keyword
'Source': '{root}/{file},v',
'Id': '{file|basename},v {node|short} {date|utcdate} {author|user}',
'Header': '{root}/{file},v {node|short} {date|utcdate} {author|user}',
--- a/hgext/patchbomb.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/patchbomb.py Thu Dec 10 12:31:57 2009 +0100
@@ -381,20 +381,21 @@
else:
msgs = getpatchmsgs(list(getpatches(revs)))
- def getaddrs(opt, prpt, default = None):
- addrs = opts.get(opt) or (ui.config('email', opt) or
- ui.config('patchbomb', opt) or
- prompt(ui, prpt, default)).split(',')
- return [mail.addressencode(ui, a.strip(), _charsets, opts.get('test'))
- for a in addrs if a.strip()]
+ def getaddrs(opt, prpt=None, default=None):
+ if opts.get(opt):
+ return mail.addrlistencode(ui, opts.get(opt), _charsets,
+ opts.get('test'))
+
+ addrs = (ui.config('email', opt) or
+ ui.config('patchbomb', opt) or '')
+ if not addrs and prpt:
+ addrs = prompt(ui, prpt, default)
+
+ return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
to = getaddrs('to', 'To')
cc = getaddrs('cc', 'Cc', '')
-
- bcc = opts.get('bcc') or (ui.config('email', 'bcc') or
- ui.config('patchbomb', 'bcc') or '').split(',')
- bcc = [mail.addressencode(ui, a.strip(), _charsets, opts.get('test'))
- for a in bcc if a.strip()]
+ bcc = getaddrs('bcc')
ui.write('\n')
--- a/hgext/relink.py Thu Dec 10 12:31:21 2009 +0100
+++ b/hgext/relink.py Thu Dec 10 12:31:57 2009 +0100
@@ -14,25 +14,27 @@
def relink(ui, repo, origin=None, **opts):
"""recreate hardlinks between two repositories
- When repositories are cloned locally, their data files will be hardlinked
- so that they only use the space of a single repository.
+ When repositories are cloned locally, their data files will be
+ hardlinked so that they only use the space of a single repository.
- Unfortunately, subsequent pulls into either repository will break hardlinks
- for any files touched by the new changesets, even if both repositories end
- up pulling the same changes.
+ Unfortunately, subsequent pulls into either repository will break
+ hardlinks for any files touched by the new changesets, even if
+ both repositories end up pulling the same changes.
- Similarly, passing --rev to "hg clone" will fail to use
- any hardlinks, falling back to a complete copy of the source repository.
+ Similarly, passing --rev to "hg clone" will fail to use any
+ hardlinks, falling back to a complete copy of the source
+ repository.
- This command lets you recreate those hardlinks and reclaim that wasted
- space.
+ This command lets you recreate those hardlinks and reclaim that
+ wasted space.
- This repository will be relinked to share space with ORIGIN, which must be
- on the same local disk. If ORIGIN is omitted, looks for "default-relink",
- then "default", in [paths].
+ This repository will be relinked to share space with ORIGIN, which
+ must be on the same local disk. If ORIGIN is omitted, looks for
+ "default-relink", then "default", in [paths].
- Do not attempt any read operations on this repository while the command is
- running. (Both repositories will be locked against writes.)
+ Do not attempt any read operations on this repository while the
+ command is running. (Both repositories will be locked against
+ writes.)
"""
src = hg.repository(
cmdutil.remoteui(repo, opts),
--- a/i18n/da.po Thu Dec 10 12:31:21 2009 +0100
+++ b/i18n/da.po Thu Dec 10 12:31:57 2009 +0100
@@ -17,8 +17,8 @@
msgstr ""
"Project-Id-Version: Mercurial\n"
"Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2009-11-10 20:42+0100\n"
-"PO-Revision-Date: 2009-11-11 22:54+0100\n"
+"POT-Creation-Date: 2009-11-29 20:24+0100\n"
+"PO-Revision-Date: 2009-11-29 20:27+0100\n"
"Last-Translator: <mg@lazybytes.net>\n"
"Language-Team: Danish\n"
"MIME-Version: 1.0\n"
@@ -135,37 +135,37 @@
"- backout, commit, import, tag: Specify the commit date.\n"
"- log, revert, update: Select revision(s) by date.\n"
"\n"
-"Many date formats are valid. Here are some examples::\n"
-"\n"
-" \"Wed Dec 6 13:18:29 2006\" (local timezone assumed)\n"
-" \"Dec 6 13:18 -0600\" (year assumed, time offset provided)\n"
-" \"Dec 6 13:18 UTC\" (UTC and GMT are aliases for +0000)\n"
-" \"Dec 6\" (midnight)\n"
-" \"13:18\" (today assumed)\n"
-" \"3:39\" (3:39AM assumed)\n"
-" \"3:39pm\" (15:39)\n"
-" \"2006-12-06 13:18:29\" (ISO 8601 format)\n"
-" \"2006-12-6 13:18\"\n"
-" \"2006-12-6\"\n"
-" \"12-6\"\n"
-" \"12/6\"\n"
-" \"12/6/6\" (Dec 6 2006)\n"
-"\n"
-"Lastly, there is Mercurial's internal format::\n"
-"\n"
-" \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
+"Many date formats are valid. Here are some examples:\n"
+"\n"
+"- ``Wed Dec 6 13:18:29 2006`` (local timezone assumed)\n"
+"- ``Dec 6 13:18 -0600`` (year assumed, time offset provided)\n"
+"- ``Dec 6 13:18 UTC`` (UTC and GMT are aliases for +0000)\n"
+"- ``Dec 6`` (midnight)\n"
+"- ``13:18`` (today assumed)\n"
+"- ``3:39`` (3:39AM assumed)\n"
+"- ``3:39pm`` (15:39)\n"
+"- ``2006-12-06 13:18:29`` (ISO 8601 format)\n"
+"- ``2006-12-6 13:18``\n"
+"- ``2006-12-6``\n"
+"- ``12-6``\n"
+"- ``12/6``\n"
+"- ``12/6/6`` (Dec 6 2006)\n"
+"\n"
+"Lastly, there is Mercurial's internal format:\n"
+"\n"
+"- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)\n"
"\n"
"This is the internal representation format for dates. unixtime is the\n"
"number of seconds since the epoch (1970-01-01 00:00 UTC). offset is\n"
"the offset of the local timezone, in seconds west of UTC (negative if\n"
"the timezone is east of UTC).\n"
"\n"
-"The log command also accepts date ranges::\n"
-"\n"
-" \"<{datetime}\" - at or before a given date/time\n"
-" \">{datetime}\" - on or after a given date/time\n"
-" \"{datetime} to {datetime}\" - a date range, inclusive\n"
-" \"-{days}\" - within a given number of days of today\n"
+"The log command also accepts date ranges:\n"
+"\n"
+"- ``<{datetime}`` - at or before a given date/time\n"
+"- ``>{datetime}`` - on or after a given date/time\n"
+"- ``{datetime} to {datetime}`` - a date range, inclusive\n"
+"- ``-{days}`` - within a given number of days of today\n"
msgstr ""
"Nogle kommandoer tillader brugeren at specificere en dato, f.eks.:\n"
"\n"
@@ -174,23 +174,23 @@
"\n"
"Der er mange gyldige datoformater. Her er nogle eksempler::\n"
"\n"
-" \"Wed Dec 6 13:18:29 2006\" (antager lokal tidszone)\n"
-" \"Dec 6 13:18 -0600\" (antager år, tidszone er angivet)\n"
-" \"Dec 6 13:18 UTC\" (UTC og GMT er aliaser for +0000)\n"
-" \"Dec 6\" (midnat)\n"
-" \"13:18\" (antager dags dato)\n"
-" \"3:39\"\n"
-" \"3:39pm\" (15:39)\n"
-" \"2006-12-06 13:18:29\" (ISO 8601 format)\n"
-" \"2006-12-6 13:18\"\n"
-" \"2006-12-6\"\n"
-" \"12-6\"\n"
-" \"12/6\"\n"
-" \"12/6/6\" (6. dec. 2006)\n"
+"- ``Wed Dec 6 13:18:29 2006`` (antager lokal tidszone)\n"
+"- ``Dec 6 13:18 -0600`` (antager år, tidszone er angivet)\n"
+"- ``Dec 6 13:18 UTC`` (UTC og GMT er aliaser for +0000)\n"
+"- ``Dec 6`` (midnat)\n"
+"- ``13:18`` (antager dags dato)\n"
+"- ``3:39``\n"
+"- ``3:39pm`` (15:39)\n"
+"- ``2006-12-06 13:18:29`` (ISO 8601 format)\n"
+"- ``2006-12-6 13:18``\n"
+"- ``2006-12-6``\n"
+"- ``12-6``\n"
+"- ``12/6``\n"
+"- ``12/6/6`` (6. dec. 2006)\n"
"\n"
"Endelig er der Mercurials interne format::\n"
"\n"
-" \"1165432709 0\" (Ons 6. dec. 13:18:29 2006 UTC)\n"
+"- ``1165432709 0`` (Ons 6. dec. 13:18:29 2006 UTC)\n"
"\n"
"Dette er den interne repræsentation af datoer. unixtime er\n"
"antallet af sekunder siden begyndelsen af epoken (1970-01-01 00:00\n"
@@ -199,10 +199,10 @@
"\n"
"Kommandoen log accepterer også datointervaller::\n"
"\n"
-" \"<{date}\" - på eller før den angivne dato/tidspunkt\n"
-" \">{date}\" - på eller efter den angivne dato/tidspunkt\n"
-" \"{date} to {date}\" - et datointerval, inklusiv endepunkterne\n"
-" \"-{days}\" - indenfor et angivet antal dage, fra dags dato\n"
+"- ``<{date}`` - på eller før den angivne dato/tidspunkt\n"
+"- ``>{date}`` - på eller efter den angivne dato/tidspunkt\n"
+"- ``{date} to {date}`` - et datointerval, inklusiv endepunkterne\n"
+"- ``-{days}`` - indenfor et angivet antal dage, fra dags dato\n"
msgid ""
"Mercurial's default format for showing changes between two versions of\n"
@@ -1813,6 +1813,11 @@
msgid "Mercurial failed to run itself, check hg executable is in PATH"
msgstr "Mercurial kunne ikke køre sig selv, kontroller om hg er i PATH"
+msgid ""
+"svn: cannot probe remote repository, assume it could be a subversion "
+"repository. Use --source-type if you know better.\n"
+msgstr ""
+
msgid "Subversion python bindings could not be loaded"
msgstr "Subversion python bindingerne kunne ikke indlæses"
@@ -1981,15 +1986,14 @@
msgid ""
"use %(path)s to diff repository (or selected files)\n"
"\n"
-" Show differences between revisions for the specified files, using the\n"
-" %(path)s program.\n"
-"\n"
-" When two revision arguments are given, then changes are shown between\n"
-" those revisions. If only one revision is specified then that revision "
-"is\n"
-" compared to the working directory, and, when no revisions are "
-"specified,\n"
-" the working directory files are compared to its parent."
+" Show differences between revisions for the specified files, using\n"
+" the %(path)s program.\n"
+"\n"
+" When two revision arguments are given, then changes are shown\n"
+" between those revisions. If only one revision is specified then\n"
+" that revision is compared to the working directory, and, when no\n"
+" revisions are specified, the working directory files are compared\n"
+" to its parent."
msgstr ""
#, python-format
@@ -2449,23 +2453,23 @@
msgid "hg inserve [OPTION]..."
msgstr "hg inserve [TILVALG]..."
-msgid "(found dead inotify server socket; removing it)\n"
-msgstr "(fandt død inotify server sokkel; fjerner den)\n"
-
-#, python-format
-msgid "could not start inotify server: %s\n"
-msgstr "kunne ikke starte inotify server: %s\n"
-
-#, python-format
-msgid "could not talk to new inotify server: %s\n"
-msgstr "kunne ikke snakke med ny inotify server: %s\n"
-
-#, python-format
-msgid "failed to contact inotify server: %s\n"
-msgstr "kontakt med inotify server miskykkedes: %s\n"
-
-msgid "received empty answer from inotify server"
-msgstr "modtog tomt svar fra inotify server"
+msgid "inotify-client: found dead inotify server socket; removing it\n"
+msgstr "inotify-klient: fandt død inotify server sokkel; fjerner den\n"
+
+#, python-format
+msgid "inotify-client: could not start inotify server: %s\n"
+msgstr "inotify-klient: kunne ikke starte inotify server: %s\n"
+
+#, python-format
+msgid "inotify-client: could not talk to new inotify server: %s\n"
+msgstr "inotify-klient: kunne ikke snakke med ny inotify server: %s\n"
+
+#, python-format
+msgid "inotify-client: failed to contact inotify server: %s\n"
+msgstr "inotify-klient: kontakt med inotify server mislykkedes: %s\n"
+
+msgid "inotify-client: received empty answer from inotify server"
+msgstr "inotify-klient: modtog tomt svar fra inotify server"
#, python-format
msgid "(inotify: received response from incompatible server version %d)\n"
@@ -2521,21 +2525,6 @@
msgstr "overvåger kataloger under %r\n"
#, python-format
-msgid "status: %r %s -> %s\n"
-msgstr "status: %r %s -> %s\n"
-
-#, python-format
-msgid "%s dirstate reload\n"
-msgstr "%s genindlæsning af dirstate\n"
-
-#, python-format
-msgid "%s end dirstate reload\n"
-msgstr "%s genindlæsning af dirstate afsluttet\n"
-
-msgid "rescanning due to .hgignore change\n"
-msgstr "genskanner på grund af ændring af .hgignore\n"
-
-#, python-format
msgid "%s event: created %s\n"
msgstr "%s hændelse: oprettede %s\n"
@@ -2567,9 +2556,23 @@
msgid "%s hooking back up with %d bytes readable\n"
msgstr ""
-#, python-format
-msgid "could not start server: %s"
-msgstr "kunne ikke starte server: %s"
+msgid "finished setup\n"
+msgstr "afsluttede opsætning\n"
+
+#, python-format
+msgid "status: %r %s -> %s\n"
+msgstr "status: %r %s -> %s\n"
+
+msgid "rescanning due to .hgignore change\n"
+msgstr "genskanner på grund af ændring af .hgignore\n"
+
+msgid "cannot start: socket is already bound"
+msgstr ""
+
+msgid ""
+"cannot start: tried linking .hg/inotify.sock to a temporary socket but .hg/"
+"inotify.sock already exists"
+msgstr ""
#, python-format
msgid "answering query for %r\n"
@@ -2583,9 +2586,6 @@
msgid "unrecognized query type: %s\n"
msgstr "genkendte ikke forespørgselstype: %s\n"
-msgid "finished setup\n"
-msgstr "afsluttede opsætning\n"
-
msgid ""
"expand expressions into changelog and summaries\n"
"\n"
@@ -3507,7 +3507,8 @@
" With arguments, set guards for the named patch.\n"
" NOTE: Specifying negative guards now requires '--'.\n"
"\n"
-" To set guards on another patch:\n"
+" To set guards on another patch::\n"
+"\n"
" hg qguard -- other.patch +2.6.17 -stable\n"
" "
msgstr ""
@@ -3640,7 +3641,7 @@
" qselect to tell mq which guards to use. A patch will be pushed if\n"
" it has no guards or any positive guards match the currently\n"
" selected guard, but will not be pushed if any negative guards\n"
-" match the current guard. For example:\n"
+" match the current guard. For example::\n"
"\n"
" qguard foo.patch -stable (negative guard)\n"
" qguard bar.patch +stable (positive guard)\n"
@@ -3708,11 +3709,14 @@
#, python-format
msgid "number of unguarded, unapplied patches has changed from %d to %d\n"
-msgstr "antallet af ufiltrerede og ikke-anvendte rettelser har ændret sig fra %dtil %d\n"
+msgstr ""
+"antallet af ufiltrerede og ikke-anvendte rettelser har ændret sig fra %dtil %"
+"d\n"
#, python-format
msgid "number of guarded, applied patches has changed from %d to %d\n"
-msgstr "antallet af filtrerede og anvendte rettelser har ændret sig fra %d til %d\n"
+msgstr ""
+"antallet af filtrerede og anvendte rettelser har ændret sig fra %d til %d\n"
msgid "guards in series file:\n"
msgstr "filtre i seriefilen:\n"
@@ -4132,10 +4136,13 @@
" ignore = version, help, update\n"
"\n"
"You can also enable the pager only for certain commands using\n"
-"pager.attend::\n"
+"pager.attend. Below is the default list of commands to be paged::\n"
"\n"
" [pager]\n"
-" attend = log\n"
+" attend = annotate, cat, diff, export, glog, log, qdiff\n"
+"\n"
+"Setting pager.attend to an empty value will cause all commands to be\n"
+"paged.\n"
"\n"
"If pager.attend is present, pager.ignore will be ignored.\n"
"\n"
@@ -4661,9 +4668,6 @@
msgid " and "
msgstr " og "
-msgid "y"
-msgstr "j"
-
#, python-format
msgid "record this change to %r?"
msgstr "optag denne ændring i %r?"
@@ -4744,32 +4748,27 @@
msgid ""
"recreate hardlinks between two repositories\n"
"\n"
-" When repositories are cloned locally, their data files will be "
-"hardlinked\n"
-" so that they only use the space of a single repository.\n"
-"\n"
-" Unfortunately, subsequent pulls into either repository will break "
-"hardlinks\n"
-" for any files touched by the new changesets, even if both repositories "
-"end\n"
-" up pulling the same changes.\n"
-"\n"
-" Similarly, passing --rev to \"hg clone\" will fail to use\n"
-" any hardlinks, falling back to a complete copy of the source "
-"repository.\n"
-"\n"
-" This command lets you recreate those hardlinks and reclaim that wasted\n"
-" space.\n"
-"\n"
-" This repository will be relinked to share space with ORIGIN, which must "
-"be\n"
-" on the same local disk. If ORIGIN is omitted, looks for \"default-relink"
-"\",\n"
-" then \"default\", in [paths].\n"
-"\n"
-" Do not attempt any read operations on this repository while the command "
-"is\n"
-" running. (Both repositories will be locked against writes.)\n"
+" When repositories are cloned locally, their data files will be\n"
+" hardlinked so that they only use the space of a single repository.\n"
+"\n"
+" Unfortunately, subsequent pulls into either repository will break\n"
+" hardlinks for any files touched by the new changesets, even if\n"
+" both repositories end up pulling the same changes.\n"
+"\n"
+" Similarly, passing --rev to \"hg clone\" will fail to use any\n"
+" hardlinks, falling back to a complete copy of the source\n"
+" repository.\n"
+"\n"
+" This command lets you recreate those hardlinks and reclaim that\n"
+" wasted space.\n"
+"\n"
+" This repository will be relinked to share space with ORIGIN, which\n"
+" must be on the same local disk. If ORIGIN is omitted, looks for\n"
+" \"default-relink\", then \"default\", in [paths].\n"
+"\n"
+" Do not attempt any read operations on this repository while the\n"
+" command is running. (Both repositories will be locked against\n"
+" writes.)\n"
" "
msgstr ""
@@ -5458,14 +5457,14 @@
" directory; use -r/--rev to specify a different revision.\n"
"\n"
" To specify the type of archive to create, use -t/--type. Valid\n"
-" types are::\n"
-"\n"
-" \"files\" (default): a directory full of files\n"
-" \"tar\": tar archive, uncompressed\n"
-" \"tbz2\": tar archive, compressed using bzip2\n"
-" \"tgz\": tar archive, compressed using gzip\n"
-" \"uzip\": zip archive, uncompressed\n"
-" \"zip\": zip archive, compressed using deflate\n"
+" types are:\n"
+"\n"
+" :``files``: a directory full of files (default)\n"
+" :``tar``: tar archive, uncompressed\n"
+" :``tbz2``: tar archive, compressed using bzip2\n"
+" :``tgz``: tar archive, compressed using gzip\n"
+" :``uzip``: zip archive, uncompressed\n"
+" :``zip``: zip archive, compressed using deflate\n"
"\n"
" The exact name of the destination archive or directory is given\n"
" using a format string; see 'hg help export' for details.\n"
@@ -5742,11 +5741,11 @@
"\n"
" Output may be to a file, in which case the name of the file is\n"
" given using a format string. The formatting rules are the same as\n"
-" for the export command, with the following additions::\n"
-"\n"
-" %s basename of file being printed\n"
-" %d dirname of file being printed, or '.' if in repository root\n"
-" %p root-relative path name of file being printed\n"
+" for the export command, with the following additions:\n"
+"\n"
+" :``%s``: basename of file being printed\n"
+" :``%d``: dirname of file being printed, or '.' if in repository root\n"
+" :``%p``: root-relative path name of file being printed\n"
" "
msgstr ""
"udskriv den aktuelle eller en given revision af filer\n"
@@ -5758,12 +5757,12 @@
"\n"
" Output kan gemmes i en fil hvis navn angives med et formatstreng.\n"
" Reglerne for formatteringen er de samme som for export-kommandoen\n"
-" med følgende tilføjelser::\n"
-"\n"
-" %s grundnavn for filen som udskrives\n"
-" %d katalognavn for filen som blvier udskrevet\n"
-" eller '.' hvis filen er i katalogets rod\n"
-" %p rod-relativ sti for filen som bliver udkrevet\n"
+" med følgende tilføjelser:\n"
+"\n"
+" :``%s``: grundnavn for filen som udskrives\n"
+" :``%d``: katalognavn for filen som blvier udskrevet\n"
+" eller '.' hvis filen er i katalogets rod\n"
+" :``%p``: rod-relativ sti for filen som bliver udkrevet\n"
" "
msgid ""
@@ -5788,9 +5787,9 @@
" will be the null changeset). Otherwise, clone will initially check\n"
" out (in order of precedence):\n"
"\n"
-" a) the changeset, tag or branch specified with -u/--updaterev\n"
-" b) the changeset, tag or branch given with the first -r/--rev\n"
-" c) the head of the default branch\n"
+" a) the changeset, tag or branch specified with -u/--updaterev\n"
+" b) the changeset, tag or branch given with the first -r/--rev\n"
+" c) the head of the default branch\n"
"\n"
" Use 'hg clone -u . src dst' to checkout the source repository's\n"
" parent changeset (applicable for local source repositories only).\n"
@@ -5799,8 +5798,8 @@
" by listing each changeset (tag, or branch name) with -r/--rev.\n"
" If -r/--rev is used, the cloned repository will contain only a subset\n"
" of the changesets of the source repository. Only the set of changesets\n"
-" defined by all -r/--rev options (including their direct and indirect\n"
-" parent changesets) will be pulled into the destination repository.\n"
+" defined by all -r/--rev options (including all their ancestors)\n"
+" will be pulled into the destination repository.\n"
" No subsequent changesets (including subsequent tags) will be present\n"
" in the destination.\n"
"\n"
@@ -5848,11 +5847,11 @@
" et depot (.hg) og intet arbejdskatalog (arbejdskatalogets forælder\n"
" er sat til nul revisionen). Ellers vil clone kommandoen hente\n"
"\n"
-" a) ændringen, mærkaten eller grenen specificeret med\n"
-" -u/--updaterev\n"
-" b) ændringen, mærkaten eller grenen angivet med den første\n"
-" -r/--rev\n"
-" c) hovedet af default grenen\n"
+" a) ændringen, mærkaten eller grenen specificeret med\n"
+" -u/--updaterev\n"
+" b) ændringen, mærkaten eller grenen angivet med den første\n"
+" -r/--rev\n"
+" c) hovedet af default grenen\n"
"\n"
" Brug 'hg clone -u . kilde destination' for at hente ændringen i\n"
" kildedepotet ud i destinations depotet (kan kun anvendes ved\n"
@@ -5863,10 +5862,9 @@
" grennavn) med -r/--rev. Hvis -r/--rev tilvalget bruges, så vil det\n"
" klonede depot kun indeholde en delmængde af ændringerne i\n"
" kildedepotet. Det er kun mængden af ændringer defineret af alle\n"
-" -r/--rev tilvalgene (inklusiv deres direkte og indirekte forfædre)\n"
-" som vil blive hevet ind i destinationsdepotet. Ingen efterfølgende\n"
-" revisioner (inklusiv efterfølgende mærkater) vil findes i\n"
-" destinationen.\n"
+" -r/--rev tilvalgene (inklusiv alle deres forfædre) som vil blive\n"
+" hevet ind i destinationsdepotet. Ingen efterfølgende revisioner\n"
+" (inklusiv efterfølgende mærkater) vil findes i destinationen.\n"
"\n"
" Brug af -r/--rev (eller 'clone kilde#rev destination') medfører\n"
" --pull, selv ved lokale depoter.\n"
@@ -6193,16 +6191,16 @@
" first parent only.\n"
"\n"
" Output may be to a file, in which case the name of the file is\n"
-" given using a format string. The formatting rules are as follows::\n"
-"\n"
-" %% literal \"%\" character\n"
-" %H changeset hash (40 bytes of hexadecimal)\n"
-" %N number of patches being generated\n"
-" %R changeset revision number\n"
-" %b basename of the exporting repository\n"
-" %h short-form changeset hash (12 bytes of hexadecimal)\n"
-" %n zero-padded sequence number, starting at 1\n"
-" %r zero-padded changeset revision number\n"
+" given using a format string. The formatting rules are as follows:\n"
+"\n"
+" :``%%``: literal \"%\" character\n"
+" :``%H``: changeset hash (40 bytes of hexadecimal)\n"
+" :``%N``: number of patches being generated\n"
+" :``%R``: changeset revision number\n"
+" :``%b``: basename of the exporting repository\n"
+" :``%h``: short-form changeset hash (12 bytes of hexadecimal)\n"
+" :``%n``: zero-padded sequence number, starting at 1\n"
+" :``%r``: zero-padded changeset revision number\n"
"\n"
" Without the -a/--text option, export will avoid generating diffs\n"
" of files it detects as binary. With -a, export will generate a\n"
@@ -6230,14 +6228,14 @@
" Uddata kan gemmes i en fil, og filnavnet er givet ved en\n"
" format-streng. Formatteringsreglerne er som følger::\n"
"\n"
-" %% litteral % tegn\n"
-" %H ændringshash (40 byte heksadecimal)\n"
-" %N antallet af rettelser som bliver genereret\n"
-" %R revisionnummer for ændringen\n"
-" %b grundnavn for det eksporterede depot\n"
-" %h kortform ændringshash (12 byte heksadecimal)\n"
-" %n nul-fyldt sekvensnummer, startende ved 1\n"
-" %r nul-fyldt revisionsnummer for ændringen\n"
+" :``%%``: litteral \"%\" tegn\n"
+" :``%H``: ændringshash (40 byte heksadecimal)\n"
+" :``%N``: antallet af rettelser som bliver genereret\n"
+" :``%R``: revisionnummer for ændringen\n"
+" :``%b``: grundnavn for det eksporterede depot\n"
+" :``%h``: kortform ændringshash (12 byte heksadecimal)\n"
+" :``%n``: nul-fyldt sekvensnummer, startende ved 1\n"
+" :``%r``: nul-fyldt revisionsnummer for ændringen\n"
"\n"
" Uden -a/--text tilvalget vil annotate undgå at behandle filer som\n"
" den detekterer som binære. Med -a vil annotate generere en\n"
@@ -6408,9 +6406,6 @@
msgid "no commands defined\n"
msgstr "ingen kommandoer defineret\n"
-msgid "enabled extensions:"
-msgstr "aktiverede udvidelser:"
-
msgid "no help text available"
msgstr "ingen hjælpetekst tilgængelig"
@@ -6432,6 +6427,9 @@
"basale kommandoer:\n"
"\n"
+msgid "enabled extensions:"
+msgstr "aktiverede udvidelser:"
+
msgid "DEPRECATED"
msgstr ""
@@ -7047,13 +7045,13 @@
" Transactions are used to encapsulate the effects of all commands\n"
" that create new changesets or propagate existing changesets into a\n"
" repository. For example, the following commands are transactional,\n"
-" and their effects can be rolled back::\n"
-"\n"
-" commit\n"
-" import\n"
-" pull\n"
-" push (with this repository as destination)\n"
-" unbundle\n"
+" and their effects can be rolled back:\n"
+"\n"
+" - commit\n"
+" - import\n"
+" - pull\n"
+" - push (with this repository as destination)\n"
+" - unbundle\n"
"\n"
" This command is not intended for use on public repositories. Once\n"
" changes are visible for pull by other users, rolling a transaction\n"
@@ -7352,13 +7350,13 @@
" The following rules apply when the working directory contains\n"
" uncommitted changes:\n"
"\n"
-" 1. If neither -c/--check nor -C/--clean is specified, uncommitted\n"
-" changes are merged into the requested changeset, and the merged "
-"result\n"
-" is left uncommitted. Updating and merging will occur only if the\n"
-" requested changeset is an ancestor or descendant of the parent\n"
-" changeset. Otherwise, the update is aborted and the uncommitted "
-"changes\n"
+" 1. If neither -c/--check nor -C/--clean is specified, and if\n"
+" the requested changeset is an ancestor or descendant of\n"
+" the working directory's parent, the uncommitted changes\n"
+" are merged into the requested changeset and the merged\n"
+" result is left uncommitted. If the requested changeset is\n"
+" not an ancestor or descendant (that is, it is on another\n"
+" branch), the update is aborted and the uncommitted changes\n"
" are preserved.\n"
"\n"
" 2. With the -c/--check option, the update is aborted and the\n"
@@ -7388,13 +7386,14 @@
" De følgende regler gælder når arbejdskataloget indeholder\n"
" udeponerede ændringer:\n"
"\n"
-" 1. Hvis hverken -c/--check eler -C/--clean er angivet, så bliver\n"
-" udeponerede ændringer føjet ind i den ønskede ændring og det\n"
-" sammenføjne resultat bliver efterlad udeponeret. Opdateringen\n"
-" eller sammenføjningen vil kun finde sted hvis den ønskede\n"
-" ændring er forfar til eller nedstammer fra forældreændringen.\n"
-" Ellers vil opdateringen blive afbrudt og de udeponerede\n"
-" ændringer bliver bevaret.\n"
+" 1. Hvis hverken -c/--check eller -C/--clean er angivet og hvis den\n"
+" ønskede ændring er en forfar til eller nedstammer fra\n"
+" arbejdskatalogets forældre, så bliver udeponerede ændringer\n"
+" føjet ind i den ønskede ændring og det sammenføjne resultat\n"
+" bliver efterlad udeponeret. Hvis den ønskede ændring ikke er\n"
+" forfar til eller nedstammer fra forældreændringen (det vil\n"
+" sige, den er på en anden gren), så vil opdateringen blive\n"
+" afbrudt og de udeponerede ændringer bliver bevaret.\n"
"\n"
" 2. Med -c/--check tilvalget vil opdateringen blive afbrudt og de\n"
" udeponerede ændringer bliver bevaret.\n"
@@ -7696,8 +7695,8 @@
msgid "revision, tag or branch to check out"
msgstr "revision, mærkat eller gren som skal hentes ud"
-msgid "a changeset you would like to have after cloning"
-msgstr "en ændringer du gerne vil have efter kloningen"
+msgid "clone only the specified revisions and ancestors"
+msgstr "klon kun de specificerede revisioner og deres forfædre"
msgid "[OPTION]... SOURCE [DEST]"
msgstr "[TILVALG]... KILDE [MÃ…L]"
@@ -8266,6 +8265,16 @@
msgstr "ingen definition for alias '%s'\n"
#, python-format
+msgid ""
+"alias for: hg %s\n"
+"\n"
+"%s"
+msgstr ""
+"alias for: hg %s\n"
+"\n"
+"%s"
+
+#, python-format
msgid "alias '%s' resolves to unknown command '%s'\n"
msgstr "alias '%s' oversætter til ukendt kommando '%s'\n"
@@ -8274,8 +8283,8 @@
msgstr "alias '%s' oversætter til tvetydig kommando '%s'\n"
#, python-format
-msgid "malformed --config option: %s"
-msgstr "misdannet --config tilvalg: %s"
+msgid "malformed --config option: %r (use --config section.name=value)"
+msgstr "misdannet --config tilvalg: %r (brug --config sektion.navn=værdi)"
#, python-format
msgid "extension '%s' overrides commands: %s\n"
@@ -8490,6 +8499,12 @@
msgid "%s hook is invalid (\"%s\" not in a module)"
msgstr ""
+msgid "exception from first failed import attempt:\n"
+msgstr "fejltekst fra første fejlede import-forsøg:\n"
+
+msgid "exception from second failed import attempt:\n"
+msgstr "fejltekst fra andet fejlede import-forsøg:\n"
+
#, python-format
msgid "%s hook is invalid (import of \"%s\" failed)"
msgstr ""
@@ -8632,7 +8647,7 @@
msgstr "ukendt revision '%s'"
msgid "abandoned transaction found - run hg recover"
-msgstr ""
+msgstr "fandt en efterladt transaktion - kør hg recover"
msgid "rolling back interrupted transaction\n"
msgstr "ruller afbrudt transaktion tilbage\n"
@@ -8665,6 +8680,8 @@
msgid "cannot partially commit a merge (do not specify files or patterns)"
msgstr ""
+"kan ikke deponere en sammenføjning partielt (undgå at specificere filer "
+"eller mønstre)"
msgid "file not found!"
msgstr "filen blev ikke fundet!"
@@ -8683,6 +8700,10 @@
msgstr "deponerer underdepot %s\n"
#, python-format
+msgid "note: commit message saved in %s\n"
+msgstr "bemærk: deponeringsbesked er gemt i %s\n"
+
+#, python-format
msgid "trouble committing %s!\n"
msgstr "problem ved deponering %s!\n"
@@ -8695,6 +8716,8 @@
"%s: files over 10MB may cause memory and performance problems\n"
"(use 'hg revert %s' to unadd the file)\n"
msgstr ""
+"%s: filer på over 10 MB kan skabe hukommelses- og ydelsesproblemer\n"
+"(brug 'hg revert %s' for at u-tilføje filen)\n"
#, python-format
msgid "%s not added: only files and symlinks supported currently\n"
@@ -8756,7 +8779,7 @@
msgstr "(glemte du at sammenføje? brug push -f for at gennemtvinge)\n"
msgid "note: unsynced remote changes!\n"
-msgstr ""
+msgstr "bemærk: usynkroniserede ændringer i fjernsystemet!\n"
#, python-format
msgid "%d changesets found\n"
@@ -8799,10 +8822,10 @@
msgstr "låsning af fjerndepotet fejlede"
msgid "the server sent an unknown error code"
-msgstr ""
+msgstr "serveren sendte en ukendt fejlkode"
msgid "streaming all changes\n"
-msgstr ""
+msgstr "streamer alle ændringer\n"
#, python-format
msgid "%d files to transfer, %s of data\n"
@@ -8817,7 +8840,7 @@
#, python-format
msgid "sending mail: smtp host %s, port %s\n"
-msgstr ""
+msgstr "sender mail: smtp host %s, port %s\n"
msgid "can't use TLS: Python SSL support not installed"
msgstr "kan ikke bruge TLS: Python SSL support er ikke installeret"
@@ -8842,7 +8865,7 @@
#, python-format
msgid "ignoring invalid sendcharset: %s\n"
-msgstr ""
+msgstr "ignorerer ugyldigt sendcharset: %s\n"
#, python-format
msgid "invalid email address: %s"
--- a/i18n/sv.po Thu Dec 10 12:31:21 2009 +0100
+++ b/i18n/sv.po Thu Dec 10 12:31:57 2009 +0100
@@ -13,8 +13,8 @@
msgstr ""
"Project-Id-Version: Mercurial\n"
"Report-Msgid-Bugs-To: <mercurial-devel@selenic.com>\n"
-"POT-Creation-Date: 2009-11-10 20:01+0100\n"
-"PO-Revision-Date: 2009-11-10 20:06+0100\n"
+"POT-Creation-Date: 2009-11-22 19:02+0100\n"
+"PO-Revision-Date: 2009-11-22 19:37+0100\n"
"Last-Translator: Jens Bäckman <jens.backman@gmail.com>\n"
"Language-Team: Swedish\n"
"MIME-Version: 1.0\n"
@@ -85,6 +85,43 @@
"- on Unix-like systems: ``man hgrc``\n"
"- online: http://www.selenic.com/mercurial/hgrc.5.html\n"
msgstr ""
+"Mercurial läser konfigurationsdata från flera filer, om de existerar.\n"
+"Nedan listar vi den mest specifika filen först.\n"
+"\n"
+"Under Windows läses dessa konfigurationsfiler:\n"
+"\n"
+"- ``<arkiv>\\.hg\\hgrc``\n"
+"- ``%USERPROFILE%\\.hgrc``\n"
+"- ``%USERPROFILE%\\Mercurial.ini``\n"
+"- ``%HOME%\\.hgrc``\n"
+"- ``%HOME%\\Mercurial.ini``\n"
+"- ``C:\\Mercurial\\Mercurial.ini``\n"
+"- ``HKEY_LOCAL_MACHINE\\SOFTWARE\\Mercurial``\n"
+"- ``<installationskatalog>\\Mercurial.ini``\n"
+"\n"
+"Under Unix läses dessa filer:\n"
+"\n"
+"- ``<arkiv>/.hg/hgrc``\n"
+"- ``$HOME/.hgrc``\n"
+"- ``/etc/mercurial/hgrc``\n"
+"- ``/etc/mercurial/hgrc.d/*.rc``\n"
+"- ``<installationsrot>/etc/mercurial/hgrc``\n"
+"- ``<installationsrot>/etc/mercurial/hgrc.d/*.rc``\n"
+"\n"
+"Konfigurationsfilerna för Mercurial använder ett enkelt ini-filformat. En\n"
+"file består av sektioner, som inleds av en rubrik (ex ``[sektion]``) och\n"
+"följs av rader med ``namn = värde``::\n"
+"\n"
+" [ui]\n"
+" username = Förnamn Efternamn <fornamn.efternamn@example.net>\n"
+" verbose = True\n"
+"\n"
+"Raderna ovanför refereras till som ``ui.username`` och\n"
+"``ui.verbose``. Läs man-sidan för hgrc för en full beskrivning av alla\n"
+"möjliga konfigurationsvärden:\n"
+"\n"
+"- under Unix-liknande system: ``man hgrc``\n"
+"- online: http://www.selenic.com/mercurial/hgrc.5.html\n"
msgid ""
"Some commands allow the user to specify a date, e.g.:\n"
@@ -92,37 +129,37 @@
"- backout, commit, import, tag: Specify the commit date.\n"
"- log, revert, update: Select revision(s) by date.\n"
"\n"
-"Many date formats are valid. Here are some examples::\n"
-"\n"
-" \"Wed Dec 6 13:18:29 2006\" (local timezone assumed)\n"
-" \"Dec 6 13:18 -0600\" (year assumed, time offset provided)\n"
-" \"Dec 6 13:18 UTC\" (UTC and GMT are aliases for +0000)\n"
-" \"Dec 6\" (midnight)\n"
-" \"13:18\" (today assumed)\n"
-" \"3:39\" (3:39AM assumed)\n"
-" \"3:39pm\" (15:39)\n"
-" \"2006-12-06 13:18:29\" (ISO 8601 format)\n"
-" \"2006-12-6 13:18\"\n"
-" \"2006-12-6\"\n"
-" \"12-6\"\n"
-" \"12/6\"\n"
-" \"12/6/6\" (Dec 6 2006)\n"
-"\n"
-"Lastly, there is Mercurial's internal format::\n"
-"\n"
-" \"1165432709 0\" (Wed Dec 6 13:18:29 2006 UTC)\n"
+"Many date formats are valid. Here are some examples:\n"
+"\n"
+"- ``Wed Dec 6 13:18:29 2006`` (local timezone assumed)\n"
+"- ``Dec 6 13:18 -0600`` (year assumed, time offset provided)\n"
+"- ``Dec 6 13:18 UTC`` (UTC and GMT are aliases for +0000)\n"
+"- ``Dec 6`` (midnight)\n"
+"- ``13:18`` (today assumed)\n"
+"- ``3:39`` (3:39AM assumed)\n"
+"- ``3:39pm`` (15:39)\n"
+"- ``2006-12-06 13:18:29`` (ISO 8601 format)\n"
+"- ``2006-12-6 13:18``\n"
+"- ``2006-12-6``\n"
+"- ``12-6``\n"
+"- ``12/6``\n"
+"- ``12/6/6`` (Dec 6 2006)\n"
+"\n"
+"Lastly, there is Mercurial's internal format:\n"
+"\n"
+"- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)\n"
"\n"
"This is the internal representation format for dates. unixtime is the\n"
"number of seconds since the epoch (1970-01-01 00:00 UTC). offset is\n"
"the offset of the local timezone, in seconds west of UTC (negative if\n"
"the timezone is east of UTC).\n"
"\n"
-"The log command also accepts date ranges::\n"
-"\n"
-" \"<{datetime}\" - at or before a given date/time\n"
-" \">{datetime}\" - on or after a given date/time\n"
-" \"{datetime} to {datetime}\" - a date range, inclusive\n"
-" \"-{days}\" - within a given number of days of today\n"
+"The log command also accepts date ranges:\n"
+"\n"
+"- ``<{datetime}`` - at or before a given date/time\n"
+"- ``>{datetime}`` - on or after a given date/time\n"
+"- ``{datetime} to {datetime}`` - a date range, inclusive\n"
+"- ``-{days}`` - within a given number of days of today\n"
msgstr ""
msgid ""
@@ -1599,6 +1636,11 @@
msgid "Mercurial failed to run itself, check hg executable is in PATH"
msgstr ""
+msgid ""
+"svn: cannot probe remote repository, assume it could be a subversion "
+"repository. Use --source-type if you know better.\n"
+msgstr ""
+
msgid "Subversion python bindings could not be loaded"
msgstr ""
@@ -3118,7 +3160,8 @@
" With arguments, set guards for the named patch.\n"
" NOTE: Specifying negative guards now requires '--'.\n"
"\n"
-" To set guards on another patch:\n"
+" To set guards on another patch::\n"
+"\n"
" hg qguard -- other.patch +2.6.17 -stable\n"
" "
msgstr ""
@@ -3213,7 +3256,7 @@
" qselect to tell mq which guards to use. A patch will be pushed if\n"
" it has no guards or any positive guards match the currently\n"
" selected guard, but will not be pushed if any negative guards\n"
-" match the current guard. For example:\n"
+" match the current guard. For example::\n"
"\n"
" qguard foo.patch -stable (negative guard)\n"
" qguard bar.patch +stable (positive guard)\n"
@@ -3663,10 +3706,13 @@
" ignore = version, help, update\n"
"\n"
"You can also enable the pager only for certain commands using\n"
-"pager.attend::\n"
+"pager.attend. Below is the default list of commands to be paged::\n"
"\n"
" [pager]\n"
-" attend = log\n"
+" attend = annotate, cat, diff, export, glog, log, qdiff\n"
+"\n"
+"Setting pager.attend to an empty value will cause all commands to be\n"
+"paged.\n"
"\n"
"If pager.attend is present, pager.ignore will be ignored.\n"
"\n"
@@ -4161,9 +4207,6 @@
msgid " and "
msgstr ""
-msgid "y"
-msgstr ""
-
#, python-format
msgid "record this change to %r?"
msgstr ""
@@ -4222,32 +4265,27 @@
msgid ""
"recreate hardlinks between two repositories\n"
"\n"
-" When repositories are cloned locally, their data files will be "
-"hardlinked\n"
-" so that they only use the space of a single repository.\n"
-"\n"
-" Unfortunately, subsequent pulls into either repository will break "
-"hardlinks\n"
-" for any files touched by the new changesets, even if both repositories "
-"end\n"
-" up pulling the same changes.\n"
-"\n"
-" Similarly, passing --rev to \"hg clone\" will fail to use\n"
-" any hardlinks, falling back to a complete copy of the source "
-"repository.\n"
-"\n"
-" This command lets you recreate those hardlinks and reclaim that wasted\n"
-" space.\n"
-"\n"
-" This repository will be relinked to share space with ORIGIN, which must "
-"be\n"
-" on the same local disk. If ORIGIN is omitted, looks for \"default-relink"
-"\",\n"
-" then \"default\", in [paths].\n"
-"\n"
-" Do not attempt any read operations on this repository while the command "
-"is\n"
-" running. (Both repositories will be locked against writes.)\n"
+" When repositories are cloned locally, their data files will be\n"
+" hardlinked so that they only use the space of a single repository.\n"
+"\n"
+" Unfortunately, subsequent pulls into either repository will break\n"
+" hardlinks for any files touched by the new changesets, even if\n"
+" both repositories end up pulling the same changes.\n"
+"\n"
+" Similarly, passing --rev to \"hg clone\" will fail to use any\n"
+" hardlinks, falling back to a complete copy of the source\n"
+" repository.\n"
+"\n"
+" This command lets you recreate those hardlinks and reclaim that\n"
+" wasted space.\n"
+"\n"
+" This repository will be relinked to share space with ORIGIN, which\n"
+" must be on the same local disk. If ORIGIN is omitted, looks for\n"
+" \"default-relink\", then \"default\", in [paths].\n"
+"\n"
+" Do not attempt any read operations on this repository while the\n"
+" command is running. (Both repositories will be locked against\n"
+" writes.)\n"
" "
msgstr ""
@@ -4863,12 +4901,27 @@
" can be expensive.\n"
" "
msgstr ""
+"lägg till alla nya nya filer, radera alla saknade filer\n"
+"\n"
+" Lägg till alla nya filer och radera alla saknade filer från arkivet.\n"
+"\n"
+" Nya filer ignoreras om de överrensstämmer något av mönstren i\n"
+" .hgignore. Precis som med add, kommer ändringarna att träda i kraft vid\n"
+" nästa arkivering.\n"
+"\n"
+" Använd flaggan -s/--similarity för att upptäcka omdöpta filer. Med en\n"
+" parameter större än 0, kommer varje borttagen fil att jämföras med\n"
+" varje tillagd fil och lagrar de som är tillräckligt lika som ett\n"
+" namnbyte. Flaggan tar ett procentvärde mellan 0 (deaktiverad) och 100\n"
+" (filer måste vara identiska) som parameter. Att upptäcka omdöpta filer\n"
+" på det här sättet kan ta lång tid.\n"
+" "
msgid "similarity must be a number"
-msgstr ""
+msgstr "likhet måste vara ett nummer"
msgid "similarity must be between 0 and 100"
-msgstr ""
+msgstr "likhet måste vara mellan 0 och 100"
msgid ""
"show changeset information by line for each file\n"
@@ -4914,14 +4967,14 @@
" directory; use -r/--rev to specify a different revision.\n"
"\n"
" To specify the type of archive to create, use -t/--type. Valid\n"
-" types are::\n"
-"\n"
-" \"files\" (default): a directory full of files\n"
-" \"tar\": tar archive, uncompressed\n"
-" \"tbz2\": tar archive, compressed using bzip2\n"
-" \"tgz\": tar archive, compressed using gzip\n"
-" \"uzip\": zip archive, uncompressed\n"
-" \"zip\": zip archive, compressed using deflate\n"
+" types are:\n"
+"\n"
+" :``files``: a directory full of files (default)\n"
+" :``tar``: tar archive, uncompressed\n"
+" :``tbz2``: tar archive, compressed using bzip2\n"
+" :``tgz``: tar archive, compressed using gzip\n"
+" :``uzip``: zip archive, uncompressed\n"
+" :``zip``: zip archive, compressed using deflate\n"
"\n"
" The exact name of the destination archive or directory is given\n"
" using a format string; see 'hg help export' for details.\n"
@@ -4932,15 +4985,37 @@
" removed.\n"
" "
msgstr ""
+"skapa ett icke versionshanterat arkiv från en arkivresision\n"
+"\n"
+" Som standard används revisonen för arbetskatalogens förälder; använd\n"
+" -r/--rev för att specificera en annan revision.\n"
+"\n"
+" För att definiera vilken typ av arkiv som ska skapas, använd -t/--type.\n"
+" Giltiga typer är::\n"
+"\n"
+" :``files``: en katalog fylld med filer (standard)\n"
+" :``tar``: tar-arkiv, okomprimerad\n"
+" :``tbz2``: tar-arkiv, komprimerad med bzip2\n"
+" :``tgz``: tar-arkiv, komprimerad med gzip\n"
+" :``uzip``: zip-arkiv, okomprimerad\n"
+" :``zip``: zip-arkiv, komprimerad med deflate\n"
+"\n"
+" Det exakta namnet på destinationsarkivet eller -katalogen anges med en\n"
+" formatsträng; se 'hg help export' för detaljer.\n"
+"\n"
+" Varje fil som läggs till en arkivfil har ett katalogprefix. Använd\n"
+" -p/--prefix för att specificera en formatsträn för prefixet. Som\n"
+" standard används basnamnet för arkivet, med suffix borttagna.\n"
+" "
msgid "no working directory: please specify a revision"
-msgstr ""
+msgstr "ingen arbetskatalog: specificera en revision"
msgid "repository root cannot be destination"
-msgstr ""
+msgstr "arkivroten kan inte vara destinationen"
msgid "cannot archive plain files to stdout"
-msgstr ""
+msgstr "kan inte arkivera rena filer till stdout"
msgid ""
"reverse effect of earlier changeset\n"
@@ -4960,42 +5035,59 @@
" See 'hg help dates' for a list of formats valid for -d/--date.\n"
" "
msgstr ""
+"omvänd effekten från en tidigare ändring\n"
+"\n"
+" Arkivera de återkallade ändringarna som en ny ändring. Den nya\n"
+" ändringen är ett barn till den återkallade ändringen.\n"
+"\n"
+" Om du återkallar en annan ändring än toppen, skapas ett nytt huvud.\n"
+" Detta huvud kommer att vara en nya toppen och du bör sammanfoga den med\n"
+" ett annat huvud.\n"
+"\n"
+" Flaggan --merge kommer ihåg arbetskatalogens förälder innan\n"
+" återkallningen påbörjas, och sammanfogar sedan det nya huvudet med den\n"
+" ändringen efteråt. Detta gör att du inte behöver göra sammanfogningen\n"
+" manuellt. Resultatet av sammanfogningen arkiveras inte, precis som en\n"
+" vanlig sammanfogning.\n"
+"\n"
+" Se 'hg help dates' för en lista med giltiga format för -d/--date.\n"
+" "
msgid "please specify just one revision"
-msgstr ""
+msgstr "specificera bara en revision"
msgid "please specify a revision to backout"
-msgstr ""
+msgstr "specificera en revision att återkalla"
msgid "cannot backout change on a different branch"
-msgstr ""
+msgstr "kan inte återkalla en ändring på en annan gren"
msgid "cannot backout a change with no parents"
-msgstr ""
+msgstr "kan inte återkalla en ändring utan föräldrar"
msgid "cannot backout a merge changeset without --parent"
-msgstr ""
+msgstr "kan inte återkalla en sammanfogande ändring utan --parent"
#, python-format
msgid "%s is not a parent of %s"
-msgstr ""
+msgstr "%s är inte en förälder till %s"
msgid "cannot use --parent on non-merge changeset"
-msgstr ""
+msgstr "kan inte använda --parent på icke-sammanfogande ändring"
#, python-format
msgid "changeset %s backs out changeset %s\n"
-msgstr ""
+msgstr "ändringen %s återkallar ändringen %s\n"
#, python-format
msgid "merging with changeset %s\n"
-msgstr ""
+msgstr "sammanfogar med ändring %s\n"
msgid "the backout changeset is a new head - do not forget to merge\n"
-msgstr ""
+msgstr "återkallningsändringen är ett nytt huvud - glöm inte att sammanfoga\n"
msgid "(use \"backout --merge\" if you want to auto-merge)\n"
-msgstr ""
+msgstr "(använd \"backout --merge\" om du vill auto-sammanfoga)\n"
msgid ""
"subdivision search of changesets\n"
@@ -5146,11 +5238,11 @@
"\n"
" Output may be to a file, in which case the name of the file is\n"
" given using a format string. The formatting rules are the same as\n"
-" for the export command, with the following additions::\n"
-"\n"
-" %s basename of file being printed\n"
-" %d dirname of file being printed, or '.' if in repository root\n"
-" %p root-relative path name of file being printed\n"
+" for the export command, with the following additions:\n"
+"\n"
+" :``%s``: basename of file being printed\n"
+" :``%d``: dirname of file being printed, or '.' if in repository root\n"
+" :``%p``: root-relative path name of file being printed\n"
" "
msgstr ""
@@ -5176,9 +5268,9 @@
" will be the null changeset). Otherwise, clone will initially check\n"
" out (in order of precedence):\n"
"\n"
-" a) the changeset, tag or branch specified with -u/--updaterev\n"
-" b) the changeset, tag or branch given with the first -r/--rev\n"
-" c) the head of the default branch\n"
+" a) the changeset, tag or branch specified with -u/--updaterev\n"
+" b) the changeset, tag or branch given with the first -r/--rev\n"
+" c) the head of the default branch\n"
"\n"
" Use 'hg clone -u . src dst' to checkout the source repository's\n"
" parent changeset (applicable for local source repositories only).\n"
@@ -5187,8 +5279,8 @@
" by listing each changeset (tag, or branch name) with -r/--rev.\n"
" If -r/--rev is used, the cloned repository will contain only a subset\n"
" of the changesets of the source repository. Only the set of changesets\n"
-" defined by all -r/--rev options (including their direct and indirect\n"
-" parent changesets) will be pulled into the destination repository.\n"
+" defined by all -r/--rev options (including all their ancestors)\n"
+" will be pulled into the destination repository.\n"
" No subsequent changesets (including subsequent tags) will be present\n"
" in the destination.\n"
"\n"
@@ -5236,9 +5328,9 @@
" förälder kommer att vara null-ändringen). Annars kommer klonen initialt\n"
" att hämta ut (i prioritetsordning):\n"
"\n"
-" a) ändringen, taggen eller grenen specificerad med -u/--updaterev\n"
-" b) ändringen, taggen eller grenen given med den första -r/--rev\n"
-" c) huvudet på grenen 'default'\n"
+" a) ändringen, taggen eller grenen specificerad med -u/--updaterev\n"
+" b) ändringen, taggen eller grenen given med den första -r/--rev\n"
+" c) huvudet på grenen 'default'\n"
"\n"
" Använd 'hg clone -u . källa dst' för att hämta ut källkodsarkivets\n"
" föräldraänrding (gäller bara för lokala arkiv).\n"
@@ -5247,9 +5339,9 @@
" genom att lista varje ändring (märke, eller grennamn) med -r/--rev.\n"
" Om -r/--rev används, kommer det klonade arkivet bara att innehålla en\n"
" delmängd av ändringarna i källarkivet. Bara ändringarna definierade med\n"
-" -r/--rev (inklusive direkta och indirekta föräldrar) kommer att dras in\n"
-" i destinationsarkivet. Inga efterföljande ändringar (inklusive\n"
-" efterföljande märken) kommer att finnas i destinationen.\n"
+" -r/--rev (och alla föräldrar) kommer att dras in i destinationsarkivet.\n"
+" Inga efterföljande ändringar (inklusive efterföljande märken) kommer\n"
+" att finnas i destinationen.\n"
"\n"
" Användande av -r/--rev (eller 'clone källa#rev dest') aktiverar också\n"
" --pull, även för lokala arkiv.\n"
@@ -5574,16 +5666,16 @@
" first parent only.\n"
"\n"
" Output may be to a file, in which case the name of the file is\n"
-" given using a format string. The formatting rules are as follows::\n"
-"\n"
-" %% literal \"%\" character\n"
-" %H changeset hash (40 bytes of hexadecimal)\n"
-" %N number of patches being generated\n"
-" %R changeset revision number\n"
-" %b basename of the exporting repository\n"
-" %h short-form changeset hash (12 bytes of hexadecimal)\n"
-" %n zero-padded sequence number, starting at 1\n"
-" %r zero-padded changeset revision number\n"
+" given using a format string. The formatting rules are as follows:\n"
+"\n"
+" :``%%``: literal \"%\" character\n"
+" :``%H``: changeset hash (40 bytes of hexadecimal)\n"
+" :``%N``: number of patches being generated\n"
+" :``%R``: changeset revision number\n"
+" :``%b``: basename of the exporting repository\n"
+" :``%h``: short-form changeset hash (12 bytes of hexadecimal)\n"
+" :``%n``: zero-padded sequence number, starting at 1\n"
+" :``%r``: zero-padded changeset revision number\n"
"\n"
" Without the -a/--text option, export will avoid generating diffs\n"
" of files it detects as binary. With -a, export will generate a\n"
@@ -5610,14 +5702,14 @@
" Utmatning kan vara till en fil, och då anges namnet på filen med en\n"
" formatsträng. Formateringsreglerna är som följer::\n"
"\n"
-" %% ett \"%\"-tecken\n"
-" %H ändringshash (40 hexadecimala bytes)\n"
-" %N antal genererade patchar\n"
-" %R ändringens revisionsnummer\n"
-" %b basnamn för det exporterande arkivet\n"
-" %h kort ändringshash (12 hexadecimala bytes)\n"
-" %n nollpaddat sekvensnummer, börjar med 1\n"
-" %r nollpaddat ändringsrevisionsnummer\n"
+" :``%%``: ett \"%\"-tecken\n"
+" :``%H``: ändringshash (40 hexadecimala bytes)\n"
+" :``%N``: antal genererade patchar\n"
+" :``%R``: ändringens revisionsnummer\n"
+" :``%b``: basnamn för det exporterande arkivet\n"
+" :``%h``: kort ändringshash (12 hexadecimala bytes)\n"
+" :``%n``: nollpaddat sekvensnummer, börjar med 1\n"
+" :``%r``: nollpaddat ändringsrevisionsnummer\n"
"\n"
" Utan flaggan -a/--text, kommer export att undvika skapandet av diffar\n"
" av filer som upptäcks vara binära. Med -a, kommer filen att exporteras\n"
@@ -5783,25 +5875,24 @@
"alias: %s\n"
msgid "(no help text available)"
-msgstr ""
+msgstr "(ingen hjälptext tillgänglig)"
msgid "options:\n"
msgstr "flaggor:\n"
msgid "no commands defined\n"
-msgstr ""
-
-msgid "enabled extensions:"
-msgstr "aktiverade utökningar:"
+msgstr "inga kommandon definierade\n"
msgid "no help text available"
-msgstr ""
+msgstr "ingen hjälptext tillgänglig"
#, python-format
msgid ""
"%s extension - %s\n"
"\n"
msgstr ""
+"%s-utökning - %s\n"
+"\n"
msgid "Mercurial Distributed SCM\n"
msgstr "Mercurial Distribuerad SCM\n"
@@ -5813,6 +5904,9 @@
"grundläggande kommandon:\n"
"\n"
+msgid "enabled extensions:"
+msgstr "aktiverade utökningar:"
+
msgid "DEPRECATED"
msgstr "FÖRLEGAD"
@@ -6417,13 +6511,13 @@
" Transactions are used to encapsulate the effects of all commands\n"
" that create new changesets or propagate existing changesets into a\n"
" repository. For example, the following commands are transactional,\n"
-" and their effects can be rolled back::\n"
-"\n"
-" commit\n"
-" import\n"
-" pull\n"
-" push (with this repository as destination)\n"
-" unbundle\n"
+" and their effects can be rolled back:\n"
+"\n"
+" - commit\n"
+" - import\n"
+" - pull\n"
+" - push (with this repository as destination)\n"
+" - unbundle\n"
"\n"
" This command is not intended for use on public repositories. Once\n"
" changes are visible for pull by other users, rolling a transaction\n"
@@ -6706,6 +6800,11 @@
" bundle command.\n"
" "
msgstr ""
+"applicera en eller flera filer med ändringar\n"
+"\n"
+" Applicera en eller flera komprimerade filer med ändringar genererade\n"
+" av bundle-kommandot.\n"
+" "
msgid ""
"update working directory\n"
@@ -6720,13 +6819,13 @@
" The following rules apply when the working directory contains\n"
" uncommitted changes:\n"
"\n"
-" 1. If neither -c/--check nor -C/--clean is specified, uncommitted\n"
-" changes are merged into the requested changeset, and the merged "
-"result\n"
-" is left uncommitted. Updating and merging will occur only if the\n"
-" requested changeset is an ancestor or descendant of the parent\n"
-" changeset. Otherwise, the update is aborted and the uncommitted "
-"changes\n"
+" 1. If neither -c/--check nor -C/--clean is specified, and if\n"
+" the requested changeset is an ancestor or descendant of\n"
+" the working directory's parent, the uncommitted changes\n"
+" are merged into the requested changeset and the merged\n"
+" result is left uncommitted. If the requested changeset is\n"
+" not an ancestor or descendant (that is, it is on another\n"
+" branch), the update is aborted and the uncommitted changes\n"
" are preserved.\n"
"\n"
" 2. With the -c/--check option, the update is aborted and the\n"
@@ -6755,12 +6854,13 @@
" Följande regler gäller när arbetskatalogen innehåller oarkiverade\n"
" ändringar:\n"
"\n"
-" 1. Om varken -c/--check eller -C/--clean specificeras, kommer\n"
-" oarkiverade ändringar att sammanfogas med den begärda ändringen,\n"
-" och det sammanfogade resultatet lämnas oarkiverat. Uppdatering och\n"
-" sammanfogning kommer bara att göras om den begärda ändringen är en\n"
-" anfader eller ättling till föräldraändringen. Om inte, avbryts\n"
-" uppdateringen och de oarkiverade ändringarna lämnas.\n"
+" 1. Om varken -c/--check eller -C/--clean specificeras, och om den\n"
+" begärda ändringen är en anfader eller ättling till arbetskatalogens\n"
+" förälder, kommer oarkiverade ändringar att sammanfogas med den\n"
+" begärda ändringen och det sammanfogade resultatet lämnas oarkiverat.\n"
+" Om den begärda ändringen inte är en anfader eller ättling (dvs är i\n"
+" en annan gren), avbryts uppdateringen och de oarkiverade ändringarna\n"
+" bevaras.\n"
"\n"
" 2. Med flaggan -c/--check avbryts uppdateringen och de oarkiverade\n"
" ändringarna lämnas.\n"
@@ -6794,13 +6894,21 @@
" integrity of their crosslinks and indices.\n"
" "
msgstr ""
+"verifiera arkivets integritet\n"
+"\n"
+" Verifiera det aktuella arkivets integritet.\n"
+"\n"
+" Detta genomför en omfattande kontroll av arkivets integritet, validerar\n"
+" hash- och checksummor för varje notering i ändringsloggen, manifestet,\n"
+" och spårade filer, såväl som integriteten av korslänkar och indexar.\n"
+" "
msgid "output version and copyright information"
-msgstr ""
+msgstr "visa version och copyright-information"
#, python-format
msgid "Mercurial Distributed SCM (version %s)\n"
-msgstr ""
+msgstr "Mercurial Distribuerad SCM (version %s)\n"
msgid ""
"\n"
@@ -6808,6 +6916,10 @@
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
msgstr ""
+"\n"
+"Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> och andra\n"
+"Detta är fri mjukvara; se källkoden för kopieringsvillkor. Det ges INGEN\n"
+"garanti; inte ens för SÄLJBARHET eller ATT PASSA FÖR ETT VISST ÄNDAMÅL.\n"
msgid "repository root directory or name of overlay bundle file"
msgstr "arkivrotkatalog eller namn på påläggsbuntfil"
@@ -6918,7 +7030,7 @@
msgstr "visa sammanfattning av ändringar i diffstat-stil"
msgid "guess renamed files by similarity (0<=s<=100)"
-msgstr ""
+msgstr "gissa omdöpta filer efter likhet (0<=s<=100)"
msgid "[OPTION]... [FILE]..."
msgstr "[FLAGGA]... [FIL]..."
@@ -6948,31 +7060,31 @@
msgstr "[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FIL..."
msgid "do not pass files through decoders"
-msgstr ""
+msgstr "passera inte filer genom dekoders"
msgid "directory prefix for files in archive"
-msgstr ""
+msgstr "katalogprefix för filer i arkiv"
msgid "revision to distribute"
-msgstr ""
+msgstr "revision att distribuera"
msgid "type of distribution to create"
-msgstr ""
+msgstr "distributionstyp att skapa"
msgid "[OPTION]... DEST"
-msgstr ""
+msgstr "[FLAGGA]... DEST"
msgid "merge with old dirstate parent after backout"
-msgstr ""
+msgstr "sammanfoga med gamla dirstate-föräldern efter återkallning"
msgid "parent to choose when backing out merge"
-msgstr ""
+msgstr "förälder att välja när en sammanfogning återkallas"
msgid "revision to backout"
-msgstr ""
+msgstr "revision att återkalla"
msgid "[OPTION]... [-r] REV"
-msgstr ""
+msgstr "[FLAGGA]... [-r] REV"
msgid "reset bisect state"
msgstr ""
@@ -7029,7 +7141,7 @@
msgstr ""
msgid "[-f] [-a] [-r REV]... [--base REV]... FILE [DEST]"
-msgstr ""
+msgstr "[-f] [-a] [-r REV]... [--base REV]... FIL [DEST]"
msgid "print output to file with formatted name"
msgstr "skriv utmatning till fil med formatterat namn"
@@ -7049,8 +7161,8 @@
msgid "revision, tag or branch to check out"
msgstr "revision, märke eller gren att hämta ut"
-msgid "a changeset you would like to have after cloning"
-msgstr "en ändring du skulle vilja ha efter kloning"
+msgid "clone only the specified revisions and ancestors"
+msgstr "klona bara specificerade revisioner och anfäder"
msgid "[OPTION]... SOURCE [DEST]"
msgstr "[FLAGGA]... KÄLLA [DEST]"
@@ -7068,7 +7180,7 @@
msgstr ""
msgid "[OPTION]... [SOURCE]... DEST"
-msgstr ""
+msgstr "[FLAGGA]... [KÄLLA]... DEST"
msgid "[INDEX] REV1 REV2"
msgstr ""
@@ -7449,10 +7561,10 @@
msgstr ""
msgid "update to new tip if changesets were unbundled"
-msgstr ""
+msgstr "uppdatera till ny topp om ändringas packades upp"
msgid "[-u] FILE..."
-msgstr ""
+msgstr "[-u] FIL..."
msgid "discard uncommitted changes (no backup)"
msgstr "kassera oarkiverade ändringar (ingen backup)"
@@ -7516,7 +7628,7 @@
#, python-format
msgid "abort: %s\n"
-msgstr ""
+msgstr "avbryter: %s\n"
#, python-format
msgid "hg: %s\n"
@@ -7616,6 +7728,16 @@
msgstr ""
#, python-format
+msgid ""
+"alias for: hg %s\n"
+"\n"
+"%s"
+msgstr ""
+"alias för: hg %s\n"
+"\n"
+"%s"
+
+#, python-format
msgid "alias '%s' resolves to unknown command '%s'\n"
msgstr ""
@@ -7624,7 +7746,7 @@
msgstr ""
#, python-format
-msgid "malformed --config option: %s"
+msgid "malformed --config option: %r (use --config section.name=value)"
msgstr ""
#, python-format
@@ -7734,7 +7856,7 @@
msgstr ""
msgid "Configuration Files"
-msgstr ""
+msgstr "Konfigurationsfiler"
msgid "Date Formats"
msgstr ""
@@ -7834,6 +7956,12 @@
msgid "%s hook is invalid (\"%s\" not in a module)"
msgstr ""
+msgid "exception from first failed import attempt:\n"
+msgstr ""
+
+msgid "exception from second failed import attempt:\n"
+msgstr ""
+
#, python-format
msgid "%s hook is invalid (import of \"%s\" failed)"
msgstr ""
@@ -8579,7 +8707,7 @@
msgstr ""
msgid "no username supplied (see \"hg help config\")"
-msgstr ""
+msgstr "inget användarnamn angivet (se \"hg help config\")"
#, python-format
msgid "username %s contains a newline\n"
--- a/mercurial/ancestor.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/ancestor.py Thu Dec 10 12:31:57 2009 +0100
@@ -9,10 +9,11 @@
def ancestor(a, b, pfunc):
"""
- return the least common ancestor of nodes a and b or None if there
- is no such ancestor.
+ return a minimal-distance ancestor of nodes a and b, or None if there is no
+ such ancestor. Note that there can be several ancestors with the same
+ (minimal) distance, and the one returned is arbitrary.
- pfunc must return a list of parent vertices
+ pfunc must return a list of parent vertices for a given vertex
"""
if a == b:
--- a/mercurial/cmdutil.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/cmdutil.py Thu Dec 10 12:31:57 2009 +0100
@@ -275,31 +275,42 @@
def findrenames(repo, added, removed, threshold):
'''find renamed files -- yields (before, after, score) tuples'''
+ copies = {}
ctx = repo['.']
- for a in added:
- aa = repo.wread(a)
- bestname, bestscore = None, threshold
- for r in removed:
- if r not in ctx:
- continue
- rr = ctx.filectx(r).data()
+ for r in removed:
+ if r not in ctx:
+ continue
+ fctx = ctx.filectx(r)
+ def score(text):
+ if not len(text):
+ return 0.0
+ if not fctx.cmp(text):
+ return 1.0
+ if threshold == 1.0:
+ return 0.0
+ orig = fctx.data()
# bdiff.blocks() returns blocks of matching lines
# count the number of bytes in each
equal = 0
- alines = mdiff.splitnewlines(aa)
- matches = bdiff.blocks(aa, rr)
- for x1,x2,y1,y2 in matches:
+ alines = mdiff.splitnewlines(text)
+ matches = bdiff.blocks(text, orig)
+ for x1, x2, y1, y2 in matches:
for line in alines[x1:x2]:
equal += len(line)
- lengths = len(aa) + len(rr)
- if lengths:
- myscore = equal*2.0 / lengths
- if myscore >= bestscore:
- bestname, bestscore = r, myscore
- if bestname:
- yield bestname, a, bestscore
+ lengths = len(text) + len(orig)
+ return equal * 2.0 / lengths
+
+ for a in added:
+ bestscore = copies.get(a, (None, threshold))[1]
+ myscore = score(repo.wread(a))
+ if myscore >= bestscore:
+ copies[a] = (r, myscore)
+
+ for dest, v in copies.iteritems():
+ source, score = v
+ yield source, dest, score
def addremove(repo, pats=[], opts={}, dry_run=None, similarity=None):
if dry_run is None:
@@ -552,7 +563,7 @@
return errors
def service(opts, parentfn=None, initfn=None, runfn=None, logfile=None,
- runargs=None):
+ runargs=None, appendpid=False):
'''Run a command as a service.'''
if opts['daemon'] and not opts['daemon_pipefds']:
@@ -582,7 +593,8 @@
initfn()
if opts['pid_file']:
- fp = open(opts['pid_file'], 'w')
+ mode = appendpid and 'a' or 'w'
+ fp = open(opts['pid_file'], mode)
fp.write(str(os.getpid()) + '\n')
fp.close()
@@ -749,7 +761,8 @@
cache={
'parent': '{rev}:{node|formatnode} ',
'manifest': '{rev}:{node|formatnode}',
- 'filecopy': '{name} ({source})'})
+ 'filecopy': '{name} ({source})',
+ 'extra': '{key}={value|stringescape}'})
# Cache mapping from rev to a tuple with tag date, tag
# distance and tag name
self._latesttagcache = {-1: (0, 0, 'null')}
@@ -1161,7 +1174,7 @@
class followfilter(object):
def __init__(self, onlyfirst=False):
self.startrev = nullrev
- self.roots = []
+ self.roots = set()
self.onlyfirst = onlyfirst
def match(self, rev):
@@ -1179,18 +1192,18 @@
if rev > self.startrev:
# forward: all descendants
if not self.roots:
- self.roots.append(self.startrev)
+ self.roots.add(self.startrev)
for parent in realparents(rev):
if parent in self.roots:
- self.roots.append(rev)
+ self.roots.add(rev)
return True
else:
# backwards: all parents
if not self.roots:
- self.roots.extend(realparents(self.startrev))
+ self.roots.update(realparents(self.startrev))
if rev in self.roots:
self.roots.remove(rev)
- self.roots.extend(realparents(rev))
+ self.roots.update(realparents(rev))
return True
return False
--- a/mercurial/commands.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/commands.py Thu Dec 10 12:31:57 2009 +0100
@@ -1161,6 +1161,7 @@
With the --switch-parent option, the diff will be against the
second parent. It can be useful to review a merge.
"""
+ changesets += tuple(opts.get('rev', []))
if not changesets:
raise util.Abort(_("export requires at least one changeset"))
revs = cmdutil.revrange(repo, changesets)
@@ -1476,7 +1477,7 @@
ui.write('\n')
try:
- aliases, i = cmdutil.findcmd(name, table, False)
+ aliases, entry = cmdutil.findcmd(name, table, False)
except error.AmbiguousCommand, inst:
# py3k fix: except vars can't be used outside the scope of the
# except block, nor can be used inside a lambda. python issue4617
@@ -1485,12 +1486,17 @@
helplist(_('list of commands:\n\n'), select)
return
+ # check if it's an invalid alias and display its error if it is
+ if getattr(entry[0], 'badalias', False):
+ entry[0](ui)
+ return
+
# synopsis
- if len(i) > 2:
- if i[2].startswith('hg'):
- ui.write("%s\n" % i[2])
+ if len(entry) > 2:
+ if entry[2].startswith('hg'):
+ ui.write("%s\n" % entry[2])
else:
- ui.write('hg %s %s\n' % (aliases[0], i[2]))
+ ui.write('hg %s %s\n' % (aliases[0], entry[2]))
else:
ui.write('hg %s\n' % aliases[0])
@@ -1499,7 +1505,7 @@
ui.write(_("\naliases: %s\n") % ', '.join(aliases[1:]))
# description
- doc = gettext(i[0].__doc__)
+ doc = gettext(entry[0].__doc__)
if not doc:
doc = _("(no help text available)")
if ui.quiet:
@@ -1508,8 +1514,8 @@
if not ui.quiet:
# options
- if i[1]:
- option_lists.append((_("options:\n"), i[1]))
+ if entry[1]:
+ option_lists.append((_("options:\n"), entry[1]))
addglobalopts(False)
@@ -2017,7 +2023,6 @@
else:
endrev = len(repo)
rcache = {}
- ncache = {}
def getrenamed(fn, rev):
'''looks up all renames for a file (up to endrev) the first
time the file is given. It indexes on the changerev and only
@@ -2025,15 +2030,11 @@
Returns rename info for fn at changerev rev.'''
if fn not in rcache:
rcache[fn] = {}
- ncache[fn] = {}
fl = repo.file(fn)
for i in fl:
- node = fl.node(i)
lr = fl.linkrev(i)
- renamed = fl.renamed(node)
+ renamed = fl.renamed(fl.node(i))
rcache[fn][lr] = renamed
- if renamed:
- ncache[fn][node] = renamed
if lr >= endrev:
break
if rev in rcache[fn]:
@@ -2041,12 +2042,10 @@
# If linkrev != rev (i.e. rev not found in rcache) fallback to
# filectx logic.
-
try:
return repo[rev][fn].renamed()
except error.LookupError:
- pass
- return None
+ return None
df = False
if opts["date"]:
@@ -2849,7 +2848,8 @@
If one revision is given, it is used as the base revision.
If two revisions are given, the differences between them are
- shown.
+ shown. The --change option can also be used as a shortcut to list
+ the changed files of a revision from its first parent.
The codes used to show the status of files are::
@@ -2863,7 +2863,18 @@
= origin of the previous file listed as A (added)
"""
- node1, node2 = cmdutil.revpair(repo, opts.get('rev'))
+ revs = opts.get('rev')
+ change = opts.get('change')
+
+ if revs and change:
+ msg = _('cannot specify --rev and --change at the same time')
+ raise util.Abort(msg)
+ elif change:
+ node2 = repo.lookup(change)
+ node1 = repo[node2].parents()[0].node()
+ else:
+ node1, node2 = cmdutil.revpair(repo, revs)
+
cwd = (pats and repo.getcwd()) or ''
end = opts.get('print0') and '\0' or '\n'
copy = {}
@@ -3451,7 +3462,8 @@
"^export":
(export,
[('o', 'output', '', _('print output to file with formatted name')),
- ('', 'switch-parent', None, _('diff against the second parent'))
+ ('', 'switch-parent', None, _('diff against the second parent')),
+ ('r', 'rev', [], _('revisions to export')),
] + diffopts,
_('[OPTION]... [-o OUTFILESPEC] REV...')),
"^forget":
@@ -3667,6 +3679,7 @@
('0', 'print0', None,
_('end filenames with NUL, for use with xargs')),
('', 'rev', [], _('show difference from revision')),
+ ('', 'change', '', _('list the changed files of a revision')),
] + walkopts,
_('[OPTION]... [FILE]...')),
"tag":
--- a/mercurial/context.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/context.py Thu Dec 10 12:31:57 2009 +0100
@@ -433,19 +433,17 @@
# sort by revision (per file) which is a topological order
visit = []
for f in files:
- fn = [(n.rev(), n) for n in needed if n._path == f]
- visit.extend(fn)
+ visit.extend(n for n in needed if n._path == f)
hist = {}
- for r, f in sorted(visit):
+ for f in sorted(visit, key=lambda x: x.rev()):
curr = decorate(f.data(), f)
for p in parents(f):
- if p != nullid:
- curr = pair(hist[p], curr)
- # trim the history of unneeded revs
- needed[p] -= 1
- if not needed[p]:
- del hist[p]
+ curr = pair(hist[p], curr)
+ # trim the history of unneeded revs
+ needed[p] -= 1
+ if not needed[p]:
+ del hist[p]
hist[f] = curr
return zip(hist[f][0], hist[f][1].splitlines(True))
--- a/mercurial/dispatch.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/dispatch.py Thu Dec 10 12:31:57 2009 +0100
@@ -177,6 +177,7 @@
self.opts = []
self.help = ''
self.norepo = True
+ self.badalias = False
try:
cmdutil.findcmd(self.name, cmdtable, True)
@@ -189,6 +190,7 @@
ui.warn(_("no definition for alias '%s'\n") % self.name)
return 1
self.fn = fn
+ self.badalias = True
return
@@ -205,18 +207,26 @@
self.args = aliasargs(self.fn) + args
if cmd not in commands.norepo.split(' '):
self.norepo = False
+ if self.help.startswith("hg " + cmd):
+ # drop prefix in old-style help lines so hg shows the alias
+ self.help = self.help[4 + len(cmd):]
+ self.__doc__ = _("alias for: hg %s\n\n%s") \
+ % (definition, self.fn.__doc__)
+
except error.UnknownCommand:
def fn(ui, *args):
ui.warn(_("alias '%s' resolves to unknown command '%s'\n") \
% (self.name, cmd))
return 1
self.fn = fn
+ self.badalias = True
except error.AmbiguousCommand:
def fn(ui, *args):
ui.warn(_("alias '%s' resolves to ambiguous command '%s'\n") \
% (self.name, cmd))
return 1
self.fn = fn
+ self.badalias = True
def __call__(self, ui, *args, **opts):
if self.shadows:
@@ -245,14 +255,14 @@
if args:
cmd, args = args[0], args[1:]
- aliases, i = cmdutil.findcmd(cmd, commands.table,
+ aliases, entry = cmdutil.findcmd(cmd, commands.table,
ui.config("ui", "strict"))
cmd = aliases[0]
- args = aliasargs(i[0]) + args
+ args = aliasargs(entry[0]) + args
defaults = ui.config("defaults", cmd)
if defaults:
args = map(util.expandpath, shlex.split(defaults)) + args
- c = list(i[1])
+ c = list(entry[1])
else:
cmd = None
c = []
@@ -272,7 +282,7 @@
options[n] = cmdoptions[n]
del cmdoptions[n]
- return (cmd, cmd and i[0] or None, args, options, cmdoptions)
+ return (cmd, cmd and entry[0] or None, args, options, cmdoptions)
def _parseconfig(ui, config):
"""parse the --config options from the command line"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/config.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,37 @@
+Mercurial reads configuration data from several files, if they exist.
+Below we list the most specific file first.
+
+On Windows, these configuration files are read:
+
+- ``<repo>\.hg\hgrc``
+- ``%USERPROFILE%\.hgrc``
+- ``%USERPROFILE%\Mercurial.ini``
+- ``%HOME%\.hgrc``
+- ``%HOME%\Mercurial.ini``
+- ``C:\Mercurial\Mercurial.ini``
+- ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial``
+- ``<install-dir>\Mercurial.ini``
+
+On Unix, these files are read:
+
+- ``<repo>/.hg/hgrc``
+- ``$HOME/.hgrc``
+- ``/etc/mercurial/hgrc``
+- ``/etc/mercurial/hgrc.d/*.rc``
+- ``<install-root>/etc/mercurial/hgrc``
+- ``<install-root>/etc/mercurial/hgrc.d/*.rc``
+
+The configuration files for Mercurial use a simple ini-file format. A
+configuration file consists of sections, led by a ``[section]`` header
+and followed by ``name = value`` entries::
+
+ [ui]
+ username = Firstname Lastname <firstname.lastname@example.net>
+ verbose = True
+
+This above entries will be referred to as ``ui.username`` and
+``ui.verbose``, respectively. Please see the hgrc man page for a full
+description of the possible configuration values:
+
+- on Unix-like systems: ``man hgrc``
+- online: http://www.selenic.com/mercurial/hgrc.5.html
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/dates.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+Some commands allow the user to specify a date, e.g.:
+
+- backout, commit, import, tag: Specify the commit date.
+- log, revert, update: Select revision(s) by date.
+
+Many date formats are valid. Here are some examples:
+
+- ``Wed Dec 6 13:18:29 2006`` (local timezone assumed)
+- ``Dec 6 13:18 -0600`` (year assumed, time offset provided)
+- ``Dec 6 13:18 UTC`` (UTC and GMT are aliases for +0000)
+- ``Dec 6`` (midnight)
+- ``13:18`` (today assumed)
+- ``3:39`` (3:39AM assumed)
+- ``3:39pm`` (15:39)
+- ``2006-12-06 13:18:29`` (ISO 8601 format)
+- ``2006-12-6 13:18``
+- ``2006-12-6``
+- ``12-6``
+- ``12/6``
+- ``12/6/6`` (Dec 6 2006)
+
+Lastly, there is Mercurial's internal format:
+
+- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC)
+
+This is the internal representation format for dates. unixtime is the
+number of seconds since the epoch (1970-01-01 00:00 UTC). offset is
+the offset of the local timezone, in seconds west of UTC (negative if
+the timezone is east of UTC).
+
+The log command also accepts date ranges:
+
+- ``<{datetime}`` - at or before a given date/time
+- ``>{datetime}`` - on or after a given date/time
+- ``{datetime} to {datetime}`` - a date range, inclusive
+- ``-{days}`` - within a given number of days of today
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/diffs.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,29 @@
+Mercurial's default format for showing changes between two versions of
+a file is compatible with the unified format of GNU diff, which can be
+used by GNU patch and many other standard tools.
+
+While this standard format is often enough, it does not encode the
+following information:
+
+- executable status and other permission bits
+- copy or rename information
+- changes in binary files
+- creation or deletion of empty files
+
+Mercurial also supports the extended diff format from the git VCS
+which addresses these limitations. The git diff format is not produced
+by default because a few widespread tools still do not understand this
+format.
+
+This means that when generating diffs from a Mercurial repository
+(e.g. with "hg export"), you should be careful about things like file
+copies and renames or other things mentioned above, because when
+applying a standard diff to a different repository, this extra
+information is lost. Mercurial's internal operations (like push and
+pull) are not affected by this, because they use an internal binary
+format for communicating changes.
+
+To make Mercurial produce the git extended diff format, use the --git
+option available for many commands, or set 'git = True' in the [diff]
+section of your hgrc. You do not need to set this option when
+importing diffs in this format or using them in the mq extension.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/environment.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,76 @@
+HG
+ Path to the 'hg' executable, automatically passed when running
+ hooks, extensions or external tools. If unset or empty, this is
+ the hg executable's name if it's frozen, or an executable named
+ 'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
+ Windows) is searched.
+
+HGEDITOR
+ This is the name of the editor to run when committing. See EDITOR.
+
+ (deprecated, use .hgrc)
+
+HGENCODING
+ This overrides the default locale setting detected by Mercurial.
+ This setting is used to convert data including usernames,
+ changeset descriptions, tag names, and branches. This setting can
+ be overridden with the --encoding command-line option.
+
+HGENCODINGMODE
+ This sets Mercurial's behavior for handling unknown characters
+ while transcoding user input. The default is "strict", which
+ causes Mercurial to abort if it can't map a character. Other
+ settings include "replace", which replaces unknown characters, and
+ "ignore", which drops them. This setting can be overridden with
+ the --encodingmode command-line option.
+
+HGMERGE
+ An executable to use for resolving merge conflicts. The program
+ will be executed with three arguments: local file, remote file,
+ ancestor file.
+
+ (deprecated, use .hgrc)
+
+HGRCPATH
+ A list of files or directories to search for hgrc files. Item
+ separator is ":" on Unix, ";" on Windows. If HGRCPATH is not set,
+ platform default search path is used. If empty, only the .hg/hgrc
+ from the current repository is read.
+
+ For each element in HGRCPATH:
+
+ - if it's a directory, all files ending with .rc are added
+ - otherwise, the file itself will be added
+
+HGUSER
+ This is the string used as the author of a commit. If not set,
+ available values will be considered in this order:
+
+ - HGUSER (deprecated)
+ - hgrc files from the HGRCPATH
+ - EMAIL
+ - interactive prompt
+ - LOGNAME (with ``@hostname`` appended)
+
+ (deprecated, use .hgrc)
+
+EMAIL
+ May be used as the author of a commit; see HGUSER.
+
+LOGNAME
+ May be used as the author of a commit; see HGUSER.
+
+VISUAL
+ This is the name of the editor to use when committing. See EDITOR.
+
+EDITOR
+ Sometimes Mercurial needs to open a text file in an editor for a
+ user to modify, for example when writing commit messages. The
+ editor it uses is determined by looking at the environment
+ variables HGEDITOR, VISUAL and EDITOR, in that order. The first
+ non-empty one is chosen. If all of them are empty, the editor
+ defaults to 'vi'.
+
+PYTHONPATH
+ This is used by Python to find imported modules and may need to be
+ set appropriately if this Mercurial is not installed system-wide.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/extensions.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,33 @@
+Mercurial has the ability to add new features through the use of
+extensions. Extensions may add new commands, add options to
+existing commands, change the default behavior of commands, or
+implement hooks.
+
+Extensions are not loaded by default for a variety of reasons:
+they can increase startup overhead; they may be meant for advanced
+usage only; they may provide potentially dangerous abilities (such
+as letting you destroy or modify history); they might not be ready
+for prime time; or they may alter some usual behaviors of stock
+Mercurial. It is thus up to the user to activate extensions as
+needed.
+
+To enable the "foo" extension, either shipped with Mercurial or in
+the Python search path, create an entry for it in your hgrc, like
+this::
+
+ [extensions]
+ foo =
+
+You may also specify the full path to an extension::
+
+ [extensions]
+ myfeature = ~/.hgext/myfeature.py
+
+To explicitly disable an extension enabled in an hgrc of broader
+scope, prepend its path with !::
+
+ [extensions]
+ # disabling extension bar residing in /path/to/extension/bar.py
+ hgext.bar = !/path/to/extension/bar.py
+ # ditto, but no path was supplied for extension baz
+ hgext.baz = !
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/multirevs.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,13 @@
+When Mercurial accepts more than one revision, they may be specified
+individually, or provided as a topologically continuous range,
+separated by the ":" character.
+
+The syntax of range notation is [BEGIN]:[END], where BEGIN and END are
+revision identifiers. Both BEGIN and END are optional. If BEGIN is not
+specified, it defaults to revision number 0. If END is not specified,
+it defaults to the tip. The range ":" thus means "all revisions".
+
+If BEGIN is greater than END, revisions are treated in reverse order.
+
+A range acts as a closed interval. This means that a range of 3:5
+gives 3, 4 and 5. Similarly, a range of 9:6 gives 9, 8, 7, and 6.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/patterns.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,41 @@
+Mercurial accepts several notations for identifying one or more files
+at a time.
+
+By default, Mercurial treats filenames as shell-style extended glob
+patterns.
+
+Alternate pattern notations must be specified explicitly.
+
+To use a plain path name without any pattern matching, start it with
+``path:``. These path names must completely match starting at the
+current repository root.
+
+To use an extended glob, start a name with ``glob:``. Globs are rooted
+at the current directory; a glob such as ``*.c`` will only match files
+in the current directory ending with ``.c``.
+
+The supported glob syntax extensions are ``**`` to match any string
+across path separators and ``{a,b}`` to mean "a or b".
+
+To use a Perl/Python regular expression, start a name with ``re:``.
+Regexp pattern matching is anchored at the root of the repository.
+
+Plain examples::
+
+ path:foo/bar a name bar in a directory named foo in the root
+ of the repository
+ path:path:name a file or directory named "path:name"
+
+Glob examples::
+
+ glob:*.c any name ending in ".c" in the current directory
+ *.c any name ending in ".c" in the current directory
+ **.c any name ending in ".c" in any subdirectory of the
+ current directory including itself.
+ foo/*.c any name ending in ".c" in the directory foo
+ foo/**.c any name ending in ".c" in any subdirectory of foo
+ including itself.
+
+Regexp examples::
+
+ re:.*\.c$ any name ending in ".c", anywhere in the repository
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/revisions.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,29 @@
+Mercurial supports several ways to specify individual revisions.
+
+A plain integer is treated as a revision number. Negative integers are
+treated as sequential offsets from the tip, with -1 denoting the tip,
+-2 denoting the revision prior to the tip, and so forth.
+
+A 40-digit hexadecimal string is treated as a unique revision
+identifier.
+
+A hexadecimal string less than 40 characters long is treated as a
+unique revision identifier and is referred to as a short-form
+identifier. A short-form identifier is only valid if it is the prefix
+of exactly one full-length identifier.
+
+Any other string is treated as a tag or branch name. A tag name is a
+symbolic name associated with a revision identifier. A branch name
+denotes the tipmost revision of that branch. Tag and branch names must
+not contain the ":" character.
+
+The reserved name "tip" is a special tag that always identifies the
+most recent revision.
+
+The reserved name "null" indicates the null revision. This is the
+revision of an empty repository, and the parent of revision 0.
+
+The reserved name "." indicates the working directory parent. If no
+working directory is checked out, it is equivalent to null. If an
+uncommitted merge is in progress, "." is the revision of the first
+parent.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/templates.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,113 @@
+Mercurial allows you to customize output of commands through
+templates. You can either pass in a template from the command
+line, via the --template option, or select an existing
+template-style (--style).
+
+You can customize output for any "log-like" command: log,
+outgoing, incoming, tip, parents, heads and glog.
+
+Three styles are packaged with Mercurial: default (the style used
+when no explicit preference is passed), compact and changelog.
+Usage::
+
+ $ hg log -r1 --style changelog
+
+A template is a piece of text, with markup to invoke variable
+expansion::
+
+ $ hg log -r1 --template "{node}\n"
+ b56ce7b07c52de7d5fd79fb89701ea538af65746
+
+Strings in curly braces are called keywords. The availability of
+keywords depends on the exact context of the templater. These
+keywords are usually available for templating a log-like command:
+
+:author: String. The unmodified author of the changeset.
+:branches: String. The name of the branch on which the changeset
+ was committed. Will be empty if the branch name was
+ default.
+:date: Date information. The date when the changeset was
+ committed.
+:desc: String. The text of the changeset description.
+:diffstat: String. Statistics of changes with the following
+ format: "modified files: +added/-removed lines"
+:files: List of strings. All files modified, added, or removed
+ by this changeset.
+:file_adds: List of strings. Files added by this changeset.
+:file_mods: List of strings. Files modified by this changeset.
+:file_dels: List of strings. Files removed by this changeset.
+:node: String. The changeset identification hash, as a
+ 40-character hexadecimal string.
+:parents: List of strings. The parents of the changeset.
+:rev: Integer. The repository-local changeset revision
+ number.
+:tags: List of strings. Any tags associated with the
+ changeset.
+:latesttag: String. Most recent global tag in the ancestors of this
+ changeset.
+:latesttagdistance: Integer. Longest path to the latest tag.
+
+The "date" keyword does not produce human-readable output. If you
+want to use a date in your output, you can use a filter to process
+it. Filters are functions which return a string based on the input
+variable. You can also use a chain of filters to get the desired
+output::
+
+ $ hg tip --template "{date|isodate}\n"
+ 2008-08-21 18:22 +0000
+
+List of filters:
+
+:addbreaks: Any text. Add an XHTML "<br />" tag before the end of
+ every line except the last.
+:age: Date. Returns a human-readable date/time difference
+ between the given date/time and the current
+ date/time.
+:basename: Any text. Treats the text as a path, and returns the
+ last component of the path after splitting by the
+ path separator (ignoring trailing separators). For
+ example, "foo/bar/baz" becomes "baz" and "foo/bar//"
+ becomes "bar".
+:stripdir: Treat the text as path and strip a directory level,
+ if possible. For example, "foo" and "foo/bar" becomes
+ "foo".
+:date: Date. Returns a date in a Unix date format, including
+ the timezone: "Mon Sep 04 15:13:13 2006 0700".
+:domain: Any text. Finds the first string that looks like an
+ email address, and extracts just the domain
+ component. Example: ``User <user@example.com>`` becomes
+ ``example.com``.
+:email: Any text. Extracts the first string that looks like
+ an email address. Example: ``User <user@example.com>``
+ becomes ``user@example.com``.
+:escape: Any text. Replaces the special XML/XHTML characters
+ "&", "<" and ">" with XML entities.
+:fill68: Any text. Wraps the text to fit in 68 columns.
+:fill76: Any text. Wraps the text to fit in 76 columns.
+:firstline: Any text. Returns the first line of text.
+:nonempty: Any text. Returns '(none)' if the string is empty.
+:hgdate: Date. Returns the date as a pair of numbers:
+ "1157407993 25200" (Unix timestamp, timezone offset).
+:isodate: Date. Returns the date in ISO 8601 format:
+ "2009-08-18 13:00 +0200".
+:isodatesec: Date. Returns the date in ISO 8601 format, including
+ seconds: "2009-08-18 13:00:13 +0200". See also the
+ rfc3339date filter.
+:localdate: Date. Converts a date to local date.
+:obfuscate: Any text. Returns the input text rendered as a
+ sequence of XML entities.
+:person: Any text. Returns the text before an email address.
+:rfc822date: Date. Returns a date using the same format used in
+ email headers: "Tue, 18 Aug 2009 13:00:13 +0200".
+:rfc3339date: Date. Returns a date using the Internet date format
+ specified in RFC 3339: "2009-08-18T13:00:13+02:00".
+:short: Changeset hash. Returns the short form of a changeset
+ hash, i.e. a 12-byte hexadecimal string.
+:shortdate: Date. Returns a date like "2006-09-18".
+:strip: Any text. Strips all leading and trailing whitespace.
+:tabindent: Any text. Returns the text, with every line except
+ the first starting with a tab character.
+:urlescape: Any text. Escapes all "special" characters. For
+ example, "foo bar" becomes "foo%20bar".
+:user: Any text. Returns the user portion of an email
+ address.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/help/urls.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,63 @@
+Valid URLs are of the form::
+
+ local/filesystem/path[#revision]
+ file://local/filesystem/path[#revision]
+ http://[user[:pass]@]host[:port]/[path][#revision]
+ https://[user[:pass]@]host[:port]/[path][#revision]
+ ssh://[user[:pass]@]host[:port]/[path][#revision]
+
+Paths in the local filesystem can either point to Mercurial
+repositories or to bundle files (as created by 'hg bundle' or 'hg
+incoming --bundle').
+
+An optional identifier after # indicates a particular branch, tag, or
+changeset to use from the remote repository. See also 'hg help
+revisions'.
+
+Some features, such as pushing to http:// and https:// URLs are only
+possible if the feature is explicitly enabled on the remote Mercurial
+server.
+
+Some notes about using SSH with Mercurial:
+
+- SSH requires an accessible shell account on the destination machine
+ and a copy of hg in the remote path or specified with as remotecmd.
+- path is relative to the remote user's home directory by default. Use
+ an extra slash at the start of a path to specify an absolute path::
+
+ ssh://example.com//tmp/repository
+
+- Mercurial doesn't use its own compression via SSH; the right thing
+ to do is to configure it in your ~/.ssh/config, e.g.::
+
+ Host *.mylocalnetwork.example.com
+ Compression no
+ Host *
+ Compression yes
+
+ Alternatively specify "ssh -C" as your ssh command in your hgrc or
+ with the --ssh command line option.
+
+These URLs can all be stored in your hgrc with path aliases under the
+[paths] section like so::
+
+ [paths]
+ alias1 = URL1
+ alias2 = URL2
+ ...
+
+You can then use the alias for any command that uses a URL (for
+example 'hg pull alias1' will be treated as 'hg pull URL1').
+
+Two path aliases are special because they are used as defaults when
+you do not provide the URL to a command:
+
+default:
+ When you create a repository with hg clone, the clone command saves
+ the location of the source repository as the new repository's
+ 'default' path. This is then used when you omit path from push- and
+ pull-like commands (including incoming and outgoing).
+
+default-push:
+ The push command will look for a path named 'default-push', and
+ prefer it over 'default' if both are defined.
--- a/mercurial/hgweb/common.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/hgweb/common.py Thu Dec 10 12:31:57 2009 +0100
@@ -16,6 +16,58 @@
HTTP_METHOD_NOT_ALLOWED = 405
HTTP_SERVER_ERROR = 500
+# Hooks for hgweb permission checks; extensions can add hooks here. Each hook
+# is invoked like this: hook(hgweb, request, operation), where operation is
+# either read, pull or push. Hooks should either raise an ErrorResponse
+# exception, or just return.
+# It is possible to do both authentication and authorization through this.
+permhooks = []
+
+def checkauthz(hgweb, req, op):
+ '''Check permission for operation based on request data (including
+ authentication info). Return if op allowed, else raise an ErrorResponse
+ exception.'''
+
+ user = req.env.get('REMOTE_USER')
+
+ deny_read = hgweb.configlist('web', 'deny_read')
+ if deny_read and (not user or deny_read == ['*'] or user in deny_read):
+ raise ErrorResponse(HTTP_UNAUTHORIZED, 'read not authorized')
+
+ allow_read = hgweb.configlist('web', 'allow_read')
+ result = (not allow_read) or (allow_read == ['*'])
+ if not (result or user in allow_read):
+ raise ErrorResponse(HTTP_UNAUTHORIZED, 'read not authorized')
+
+ if op == 'pull' and not hgweb.allowpull:
+ raise ErrorResponse(HTTP_UNAUTHORIZED, 'pull not authorized')
+ elif op == 'pull' or op is None: # op is None for interface requests
+ return
+
+ # enforce that you can only push using POST requests
+ if req.env['REQUEST_METHOD'] != 'POST':
+ msg = 'push requires POST request'
+ raise ErrorResponse(HTTP_METHOD_NOT_ALLOWED, msg)
+
+ # require ssl by default for pushing, auth info cannot be sniffed
+ # and replayed
+ scheme = req.env.get('wsgi.url_scheme')
+ if hgweb.configbool('web', 'push_ssl', True) and scheme != 'https':
+ raise ErrorResponse(HTTP_OK, 'ssl required')
+
+ deny = hgweb.configlist('web', 'deny_push')
+ if deny and (not user or deny == ['*'] or user in deny):
+ raise ErrorResponse(HTTP_UNAUTHORIZED, 'push not authorized')
+
+ allow = hgweb.configlist('web', 'allow_push')
+ result = allow and (allow == ['*'] or user in allow)
+ if not result:
+ raise ErrorResponse(HTTP_UNAUTHORIZED, 'push not authorized')
+
+# Add the default permhook, which provides simple authorization.
+permhooks.append(checkauthz)
+
+
class ErrorResponse(Exception):
def __init__(self, code, message=None, headers=[]):
Exception.__init__(self)
--- a/mercurial/hgweb/hgweb_mod.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/hgweb/hgweb_mod.py Thu Dec 10 12:31:57 2009 +0100
@@ -8,7 +8,7 @@
import os
from mercurial import ui, hg, hook, error, encoding, templater
-from common import get_mtime, ErrorResponse
+from common import get_mtime, ErrorResponse, permhooks
from common import HTTP_OK, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, HTTP_SERVER_ERROR
from common import HTTP_UNAUTHORIZED, HTTP_METHOD_NOT_ALLOWED
from request import wsgirequest
@@ -54,7 +54,9 @@
return self.repo.ui.configlist(section, name, default,
untrusted=untrusted)
- def refresh(self):
+ def refresh(self, request=None):
+ if request:
+ self.repo.ui.environ = request.env
mtime = get_mtime(self.repo.root)
if mtime != self.mtime:
self.mtime = mtime
@@ -80,7 +82,7 @@
def run_wsgi(self, req):
- self.refresh()
+ self.refresh(req)
# work with CGI variables to create coherent structure
# use SCRIPT_NAME, PATH_INFO and QUERY_STRING as well as our REPO_NAME
@@ -281,42 +283,5 @@
}
def check_perm(self, req, op):
- '''Check permission for operation based on request data (including
- authentication info). Return if op allowed, else raise an ErrorResponse
- exception.'''
-
- user = req.env.get('REMOTE_USER')
-
- deny_read = self.configlist('web', 'deny_read')
- if deny_read and (not user or deny_read == ['*'] or user in deny_read):
- raise ErrorResponse(HTTP_UNAUTHORIZED, 'read not authorized')
-
- allow_read = self.configlist('web', 'allow_read')
- result = (not allow_read) or (allow_read == ['*'])
- if not (result or user in allow_read):
- raise ErrorResponse(HTTP_UNAUTHORIZED, 'read not authorized')
-
- if op == 'pull' and not self.allowpull:
- raise ErrorResponse(HTTP_UNAUTHORIZED, 'pull not authorized')
- elif op == 'pull' or op is None: # op is None for interface requests
- return
-
- # enforce that you can only push using POST requests
- if req.env['REQUEST_METHOD'] != 'POST':
- msg = 'push requires POST request'
- raise ErrorResponse(HTTP_METHOD_NOT_ALLOWED, msg)
-
- # require ssl by default for pushing, auth info cannot be sniffed
- # and replayed
- scheme = req.env.get('wsgi.url_scheme')
- if self.configbool('web', 'push_ssl', True) and scheme != 'https':
- raise ErrorResponse(HTTP_OK, 'ssl required')
-
- deny = self.configlist('web', 'deny_push')
- if deny and (not user or deny == ['*'] or user in deny):
- raise ErrorResponse(HTTP_UNAUTHORIZED, 'push not authorized')
-
- allow = self.configlist('web', 'allow_push')
- result = allow and (allow == ['*'] or user in allow)
- if not result:
- raise ErrorResponse(HTTP_UNAUTHORIZED, 'push not authorized')
+ for hook in permhooks:
+ hook(self, req, op)
--- a/mercurial/httprepo.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/httprepo.py Thu Dec 10 12:31:57 2009 +0100
@@ -93,7 +93,7 @@
resp_url = resp.geturl()
if resp_url.endswith(qs):
resp_url = resp_url[:-len(qs)]
- if self._url != resp_url:
+ if self._url.rstrip('/') != resp_url.rstrip('/'):
self.ui.status(_('real URL is %s\n') % resp_url)
self._url = resp_url
try:
--- a/mercurial/localrepo.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/localrepo.py Thu Dec 10 12:31:57 2009 +0100
@@ -128,6 +128,12 @@
return context.workingctx(self)
return context.changectx(self, changeid)
+ def __contains__(self, changeid):
+ try:
+ return bool(self.lookup(changeid))
+ except error.RepoLookupError:
+ return False
+
def __nonzero__(self):
return True
@@ -819,6 +825,7 @@
extra, changes)
if editor:
cctx._text = editor(self, cctx, subs)
+ edited = (text != cctx._text)
# commit subs
if subs:
@@ -829,7 +836,21 @@
state[s] = (state[s][0], sr)
subrepo.writestate(self, state)
- ret = self.commitctx(cctx, True)
+ # Save commit message in case this transaction gets rolled back
+ # (e.g. by a pretxncommit hook). Leave the content alone on
+ # the assumption that the user will use the same editor again.
+ msgfile = self.opener('last-message.txt', 'wb')
+ msgfile.write(cctx._text)
+ msgfile.close()
+
+ try:
+ ret = self.commitctx(cctx, True)
+ except:
+ if edited:
+ msgfn = self.pathto(msgfile.name[len(self.root)+1:])
+ self.ui.write(
+ _('note: commit message saved in %s\n') % msgfn)
+ raise
# update dirstate and mergestate
for f in changes[0] + changes[1]:
@@ -1686,18 +1707,8 @@
# also assume the recipient will have all the parents. This function
# prunes them from the set of missing nodes.
def prune_parents(revlog, hasset, msngset):
- haslst = list(hasset)
- haslst.sort(key=revlog.rev)
- for node in haslst:
- parentlst = [p for p in revlog.parents(node) if p != nullid]
- while parentlst:
- n = parentlst.pop()
- if n not in hasset:
- hasset.add(n)
- p = [p for p in revlog.parents(n) if p != nullid]
- parentlst.extend(p)
- for n in hasset:
- msngset.pop(n, None)
+ for r in revlog.ancestors(*[revlog.rev(n) for n in hasset]):
+ msngset.pop(revlog.node(r), None)
# This is a function generating function used to set up an environment
# for the inner function to execute in.
@@ -1743,7 +1754,6 @@
# A function generating function that sets up the initial environment
# the inner function.
def filenode_collector(changedfiles):
- next_rev = [0]
# This gathers information from each manifestnode included in the
# changegroup about which filenodes the manifest node references
# so we can include those in the changegroup too.
@@ -1753,8 +1763,8 @@
# the first manifest that references it belongs to.
def collect_msng_filenodes(mnfstnode):
r = mnfst.rev(mnfstnode)
- if r == next_rev[0]:
- # If the last rev we looked at was the one just previous,
+ if r - 1 in mnfst.parentrevs(r):
+ # If the previous rev is one of the parents,
# we only need to see a diff.
deltamf = mnfst.readdelta(mnfstnode)
# For each line in the delta
@@ -1783,8 +1793,6 @@
clnode = msng_mnfst_set[mnfstnode]
ndset = msng_filenode_set.setdefault(f, {})
ndset.setdefault(fnode, clnode)
- # Remember the revision we hope to see next.
- next_rev[0] = r + 1
return collect_msng_filenodes
# We have a list of filenodes we think we need for a file, lets remove
--- a/mercurial/mail.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/mail.py Thu Dec 10 12:31:57 2009 +0100
@@ -160,11 +160,7 @@
return str(email.Header.Header(s, cs))
return s
-def addressencode(ui, address, charsets=None, display=False):
- '''Turns address into RFC-2047 compliant header.'''
- if display or not address:
- return address or ''
- name, addr = email.Utils.parseaddr(address)
+def _addressencode(ui, name, addr, charsets=None):
name = headencode(ui, name, charsets)
try:
acc, dom = addr.split('@')
@@ -181,6 +177,26 @@
raise util.Abort(_('invalid local address: %s') % addr)
return email.Utils.formataddr((name, addr))
+def addressencode(ui, address, charsets=None, display=False):
+ '''Turns address into RFC-2047 compliant header.'''
+ if display or not address:
+ return address or ''
+ name, addr = email.Utils.parseaddr(address)
+ return _addressencode(ui, name, addr, charsets)
+
+def addrlistencode(ui, addrs, charsets=None, display=False):
+ '''Turns a list of addresses into a list of RFC-2047 compliant headers.
+ A single element of input list may contain multiple addresses, but output
+ always has one address per item'''
+ if display:
+ return [a.strip() for a in addrs if a.strip()]
+
+ result = []
+ for name, addr in email.Utils.getaddresses(addrs):
+ if name or addr:
+ result.append(_addressencode(ui, name, addr, charsets))
+ return result
+
def mimeencode(ui, s, charsets=None, display=False):
'''creates mime text object, encodes it if needed, and sets
charset and transfer-encoding accordingly.'''
--- a/mercurial/revlog.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/revlog.py Thu Dec 10 12:31:57 2009 +0100
@@ -1118,10 +1118,19 @@
def ancestor(self, a, b):
"""calculate the least common ancestor of nodes a and b"""
+ # fast path, check if it is a descendant
+ a, b = self.rev(a), self.rev(b)
+ start, end = sorted((a, b))
+ for i in self.descendants(start):
+ if i == end:
+ return self.node(start)
+ elif i > end:
+ break
+
def parents(rev):
return [p for p in self.parentrevs(rev) if p != nullrev]
- c = ancestor.ancestor(self.rev(a), self.rev(b), parents)
+ c = ancestor.ancestor(a, b, parents)
if c is None:
return nullid
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/changelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,10 @@
+{header}
+ <!-- Changelog -->
+ <id>{urlbase}{url}</id>
+ <link rel="self" href="{urlbase}{url}atom-log"/>
+ <link rel="alternate" href="{urlbase}{url}"/>
+ <title>{repo|escape} Changelog</title>
+ {latestentry%feedupdated}
+
+{entries%changelogentry}
+</feed>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/changelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,16 @@
+ <entry>
+ <title>{desc|strip|firstline|strip|escape|nonempty}</title>
+ <id>{urlbase}{url}#changeset-{node}</id>
+ <link href="{urlbase}{url}rev/{node|short}"/>
+ <author>
+ <name>{author|person|escape}</name>
+ <email>{author|email|obfuscate}</email>
+ </author>
+ <updated>{date|rfc3339date}</updated>
+ <published>{date|rfc3339date}</published>
+ <content type="xhtml">
+ <div xmlns="http://www.w3.org/1999/xhtml">
+ <pre xml:space="preserve">{desc|escape|nonempty}</pre>
+ </div>
+ </content>
+ </entry>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,17 @@
+{header}
+ <!-- Error -->
+ <id>{urlbase}{url}</id>
+ <link rel="self" href="{urlbase}{url}atom-log"/>
+ <link rel="alternate" href="{urlbase}{url}"/>
+ <title>Error</title>
+ <updated>1970-01-01T00:00:00+00:00</updated>
+ <entry>
+ <title>Error</title>
+ <id>http://mercurial.selenic.com/#error</id>
+ <author>
+ <name>mercurial</name>
+ </author>
+ <updated>1970-01-01T00:00:00+00:00</updated>
+ <content type="text">{error|escape}</content>
+ </entry>
+</feed>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,8 @@
+{header}
+ <id>{urlbase}{url}atom-log/tip/{file|escape}</id>
+ <link rel="self" href="{urlbase}{url}atom-log/tip/{file|urlescape}"/>
+ <title>{repo|escape}: {file|escape} history</title>
+ {latestentry%feedupdated}
+
+{entries%changelogentry}
+</feed>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="{encoding}"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,11 @@
+default = 'changelog'
+feedupdated = '<updated>{date|rfc3339date}</updated>'
+mimetype = 'application/atom+xml; charset={encoding}'
+header = header.tmpl
+changelog = changelog.tmpl
+changelogentry = changelogentry.tmpl
+filelog = filelog.tmpl
+filelogentry = filelogentry.tmpl
+tags = tags.tmpl
+tagentry = tagentry.tmpl
+error = error.tmpl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/tagentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,8 @@
+ <entry>
+ <title>{tag|escape}</title>
+ <link rel="alternate" href="{urlbase}{url}rev/{node|short}"/>
+ <id>{urlbase}{url}#tag-{node}</id>
+ <updated>{date|rfc3339date}</updated>
+ <published>{date|rfc3339date}</published>
+ <content type="text">{tag|strip|escape}</content>
+ </entry>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/atom/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,11 @@
+{header}
+ <id>{urlbase}{url}</id>
+ <link rel="self" href="{urlbase}{url}atom-tags"/>
+ <link rel="alternate" href="{urlbase}{url}tags"/>
+ <title>{repo|escape}: tags</title>
+ <summary>{repo|escape} tag history</summary>
+ <author><name>Mercurial SCM</name></author>
+ {latestentry%feedupdated}
+
+{entriesnotip%tagentry}
+</feed>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/coal/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+<head>
+<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/coal/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,191 @@
+default = 'shortlog'
+
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = ../paper/footer.tmpl
+search = ../paper/search.tmpl
+
+changelog = ../paper/shortlog.tmpl
+shortlog = ../paper/shortlog.tmpl
+shortlogentry = ../paper/shortlogentry.tmpl
+graph = ../paper/graph.tmpl
+
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenolink = '{file|escape} '
+fileellipses = '...'
+changelogentry = ../paper/shortlogentry.tmpl
+searchentry = ../paper/shortlogentry.tmpl
+changeset = ../paper/changeset.tmpl
+manifest = ../paper/manifest.tmpl
+
+direntry = '
+ <tr class="fileline parity{parity}">
+ <td class="name">
+ <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
+ <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
+ </a>
+ <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
+ {emptydirs|escape}
+ </a>
+ </td>
+ <td class="size"></td>
+ <td class="permissions">drwxr-xr-x</td>
+ </tr>'
+
+fileentry = '
+ <tr class="fileline parity{parity}">
+ <td class="filename">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
+ </a>
+ </td>
+ <td class="size">{size}</td>
+ <td class="permissions">{permissions|permissions}</td>
+ </tr>'
+
+filerevision = ../paper/filerevision.tmpl
+fileannotate = ../paper/fileannotate.tmpl
+filediff = ../paper/filediff.tmpl
+filelog = ../paper/filelog.tmpl
+fileline = '
+ <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
+filelogentry = ../paper/filelogentry.tmpl
+
+annotateline = '
+ <tr class="parity{parity}">
+ <td class="annotate">
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
+ title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ </td>
+ <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
+ </tr>'
+
+diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
+difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
+difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
+difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
+diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
+
+changelogparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+
+changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
+
+filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
+filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
+
+filerename = '{file|escape}@'
+filelogrename = '
+ <tr>
+ <th>base:</th>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {file|escape}@{node|short}
+ </a>
+ </td>
+ </tr>'
+fileannotateparent = '
+ <tr>
+ <td class="metatag">parent:</td>
+ <td>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
+changelogchild = '
+ <tr>
+ <th class="child">child</th>
+ <td class="child">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+fileannotatechild = '
+ <tr>
+ <td class="metatag">child:</td>
+ <td>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+tags = ../paper/tags.tmpl
+tagentry = '
+ <tr class="tagEntry parity{parity}">
+ <td>
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ {tag|escape}
+ </a>
+ </td>
+ <td class="node">
+ {node|short}
+ </td>
+ </tr>'
+branches = ../paper/branches.tmpl
+branchentry = '
+ <tr class="tagEntry parity{parity}">
+ <td>
+ <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
+ {branch|escape}
+ </a>
+ </td>
+ <td class="node">
+ {node|short}
+ </td>
+ </tr>'
+changelogtag = '<span class="tag">{name|escape}</span> '
+changesettag = '<span class="tag">{tag|escape}</span> '
+changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
+changelogbranchname = '<span class="branchname">{name|escape}</span> '
+
+filediffparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filelogparent = '
+ <tr>
+ <th>parent {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+filelogchild = '
+ <tr>
+ <th>child {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+
+indexentry = '
+ <tr class="parity{parity}">
+ <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
+ <td>{description}</td>
+ <td>{contact|obfuscate}</td>
+ <td class="age">{lastchange|age} ago</td>
+ <td class="indexlinks">{archives%indexarchiveentry}</td>
+ </tr>\n'
+indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>'
+index = ../paper/index.tmpl
+archiveentry = '
+ <li>
+ <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
+ </li>'
+notfound = ../paper/notfound.tmpl
+error = ../paper/error.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/branches.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,30 @@
+{header}
+<title>{repo|escape}: Branches</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / branches
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+branches |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+<br/>
+</div>
+
+<div class="title"> </div>
+<table cellspacing="0">
+{entries%branchentry}
+</table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/changelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,39 @@
+{header}
+<title>{repo|escape}: Changelog</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog
+</div>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<div class="search">
+<input type="text" name="rev" />
+</div>
+</form>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
+changelog |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
+<br/>
+{changenav%naventry}<br/>
+</div>
+
+{entries%changelogentry}
+
+<div class="page_nav">
+{changenav%naventry}<br/>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/changelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,14 @@
+<div>
+<a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
+</div>
+<div class="title_text">
+<div class="log_link">
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
+</div>
+<i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
+</div>
+<div class="log_body">
+{desc|strip|escape|addbreaks|nonempty}
+<br/>
+<br/>
+</div>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/changeset.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,50 @@
+{header}
+<title>{repo|escape}: changeset {rev}:{node|short}</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
+changeset |
+<a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}<br/>
+</div>
+
+<div>
+<a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
+</div>
+<div class="title_text">
+<table cellspacing="0">
+<tr><td>author</td><td>{author|obfuscate}</td></tr>
+<tr><td></td><td>{date|date} ({date|age})</td></tr>
+{branch%changesetbranch}
+<tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
+{parent%changesetparent}
+{child%changesetchild}
+</table></div>
+
+<div class="page_body">
+{desc|strip|escape|addbreaks|nonempty}
+</div>
+<div class="list_head"></div>
+<div class="title_text">
+<table cellspacing="0">
+{files}
+</table></div>
+
+<div class="page_body">{diff}</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,25 @@
+{header}
+<title>{repo|escape}: Error</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / error
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> | <a href="{url}log{sessionvars%urlparameter}">changelog</a> | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a><br/>
+</div>
+
+<div class="page_body">
+<br/>
+<i>An error occurred while processing your request</i><br/>
+<br/>
+{error|escape}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/fileannotate.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,62 @@
+{header}
+<title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+<a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+annotate |
+<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+<a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a><br/>
+</div>
+
+<div class="title">{file|escape}</div>
+
+<div class="title_text">
+<table cellspacing="0">
+<tr>
+ <td>author</td>
+ <td>{author|obfuscate}</td></tr>
+<tr>
+ <td></td>
+ <td>{date|date} ({date|age})</td></tr>
+{branch%filerevbranch}
+<tr>
+ <td>changeset {rev}</td>
+ <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
+{parent%fileannotateparent}
+{child%fileannotatechild}
+<tr>
+ <td>permissions</td>
+ <td style="font-family:monospace">{permissions|permissions}</td></tr>
+</table>
+</div>
+
+<div class="page_path">
+{desc|strip|escape|addbreaks|nonempty}
+</div>
+<div class="page_body">
+<table>
+{annotate%annotateline}
+</table>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/filediff.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,48 @@
+{header}
+<title>{repo|escape}: diff {file|escape}</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / diff
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+<a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+diff |
+<a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a><br/>
+</div>
+
+<div class="title">{file|escape}</div>
+
+<table>
+{branch%filerevbranch}
+<tr>
+ <td>changeset {rev}</td>
+ <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
+{parent%filediffparent}
+{child%filediffchild}
+</table>
+
+<div class="list_head"></div>
+
+<div class="page_body">
+{diff}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,40 @@
+{header}
+<title>{repo|escape}: File revisions</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+revisions |
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+<a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a>
+<br/>
+{nav%filenaventry}
+</div>
+
+<div class="title" >{file|urlescape}</div>
+
+<table>
+{entries%filelogentry}
+</table>
+
+<div class="page_nav">
+{nav%filenaventry}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/filerevision.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,61 @@
+{header}
+<title>{repo|escape}: {file|escape}@{node|short}</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+file |
+<a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a> |
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+<a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a><br/>
+</div>
+
+<div class="title">{file|escape}</div>
+
+<div class="title_text">
+<table cellspacing="0">
+<tr>
+ <td>author</td>
+ <td>{author|obfuscate}</td></tr>
+<tr>
+ <td></td>
+ <td>{date|date} ({date|age})</td></tr>
+{branch%filerevbranch}
+<tr>
+ <td>changeset {rev}</td>
+ <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
+{parent%filerevparent}
+{child%filerevchild}
+<tr>
+ <td>permissions</td>
+ <td style="font-family:monospace">{permissions|permissions}</td></tr>
+</table>
+</div>
+
+<div class="page_path">
+{desc|strip|escape|addbreaks|nonempty}
+</div>
+
+<div class="page_body">
+{text%fileline}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/footer.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,11 @@
+<div class="page_footer">
+<div class="page_footer_text">{repo|escape}</div>
+<div class="rss_logo">
+<a href="{url}rss-log">RSS</a>
+<a href="{url}atom-log">Atom</a>
+</div>
+<br />
+{motd}
+</div>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/graph.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,121 @@
+{header}
+<title>{repo|escape}: Graph</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
+</div>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<div class="search">
+<input type="text" name="rev" />
+</div>
+</form>
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
+graph |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+<br/>
+<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
+<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
+| {changenav%navgraphentry}<br/>
+</div>
+
+<div class="title"> </div>
+
+<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
+
+<div id="wrapper">
+<ul id="nodebgs"></ul>
+<canvas id="graph" width="224" height="{canvasheight}"></canvas>
+<ul id="graphnodes"></ul>
+</div>
+
+<script type="text/javascript" src="{staticurl}graph.js"></script>
+<script>
+<!-- hide script content
+
+var data = {jsdata|json};
+var graph = new Graph();
+graph.scale({bg_height});
+
+graph.edge = function(x0, y0, x1, y1, color) {
+
+ this.setColor(color, 0.0, 0.65);
+ this.ctx.beginPath();
+ this.ctx.moveTo(x0, y0);
+ this.ctx.lineTo(x1, y1);
+ this.ctx.stroke();
+
+}
+
+var revlink = '<li style="_STYLE"><span class="desc">';
+revlink += '<a class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>';
+revlink += '</span> _TAGS';
+revlink += '<span class="info">_DATE ago, by _USER</span></li>';
+
+graph.vertex = function(x, y, color, parity, cur) {
+
+ this.ctx.beginPath();
+ color = this.setColor(color, 0.25, 0.75);
+ this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+ this.ctx.fill();
+
+ var bg = '<li class="bg parity' + parity + '"></li>';
+ var left = (this.columns + 1) * this.bg_height;
+ var nstyle = 'padding-left: ' + left + 'px;';
+ var item = revlink.replace(/_STYLE/, nstyle);
+ item = item.replace(/_PARITY/, 'parity' + parity);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_DESC/, cur[3]);
+ item = item.replace(/_USER/, cur[4]);
+ item = item.replace(/_DATE/, cur[5]);
+
+ var tagspan = '';
+ if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
+ tagspan = '<span class="logtags">';
+ if (cur[6][1]) {
+ tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ } else if (!cur[6][1] && cur[6][0] != 'default') {
+ tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ }
+ if (cur[7].length) {
+ for (var t in cur[7]) {
+ var tag = cur[7][t];
+ tagspan += '<span class="tagtag">' + tag + '</span> ';
+ }
+ }
+ tagspan += '</span>';
+ }
+
+ item = item.replace(/_TAGS/, tagspan);
+ return [bg, item];
+
+}
+
+graph.render(data);
+
+// stop hiding script -->
+</script>
+
+<div class="page_nav">
+<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
+<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
+| {changenav%navgraphentry}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="{encoding}"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
+<head>
+<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
+<meta name="robots" content="index, nofollow"/>
+<link rel="stylesheet" href="{staticurl}style-gitweb.css" type="text/css" />
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/index.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,26 @@
+{header}
+<title>Mercurial repositories index</title>
+</head>
+<body>
+
+<div class="page_header">
+ <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a>
+ Repositories list
+</div>
+
+<table cellspacing="0">
+ <tr>
+ <td><a href="?sort={sort_name}">Name</a></td>
+ <td><a href="?sort={sort_description}">Description</a></td>
+ <td><a href="?sort={sort_contact}">Contact</a></td>
+ <td><a href="?sort={sort_lastchange}">Last change</a></td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ {entries%indexentry}
+</table>
+<div class="page_footer">
+{motd}
+</div>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/manifest.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,38 @@
+{header}
+<title>{repo|escape}: files</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+files |
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry}<br/>
+</div>
+
+<div class="title">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></div>
+<table cellspacing="0">
+<tr class="parity{upparity}">
+<td style="font-family:monospace">drwxr-xr-x</td>
+<td style="font-family:monospace"></td>
+<td style="font-family:monospace"></td>
+<td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
+<td class="link"> </td>
+</tr>
+{dentries%direntry}
+{fentries%fileentry}
+</table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,248 @@
+default = 'summary'
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+changelog = changelog.tmpl
+summary = summary.tmpl
+error = error.tmpl
+notfound = notfound.tmpl
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '
+ <tr class="parity{parity}">
+ <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+ <td></td>
+ <td class="link">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+ </td>
+ </tr>'
+filenolink = '
+ <tr class="parity{parity}">
+ <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+ <td></td>
+ <td class="link">
+ file |
+ annotate |
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+ </td>
+ </tr>'
+fileellipses = '...'
+changelogentry = changelogentry.tmpl
+searchentry = changelogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+direntry = '
+ <tr class="parity{parity}">
+ <td style="font-family:monospace">drwxr-xr-x</td>
+ <td style="font-family:monospace"></td>
+ <td style="font-family:monospace"></td>
+ <td>
+ <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
+ <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
+ </td>
+ <td class="link">
+ <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+fileentry = '
+ <tr class="parity{parity}">
+ <td style="font-family:monospace">{permissions|permissions}</td>
+ <td style="font-family:monospace" align=right>{date|isodate}</td>
+ <td style="font-family:monospace" align=right>{size}</td>
+ <td class="list">
+ <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
+ </td>
+ <td class="link">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+ </td>
+ </tr>'
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filelog = filelog.tmpl
+fileline = '
+ <div style="font-family:monospace" class="parity{parity}">
+ <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
+ </div>'
+annotateline = '
+ <tr style="font-family:monospace" class="parity{parity}">
+ <td class="linenr" style="text-align: right;">
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
+ title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ </td>
+ <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
+ <td><pre>{line|escape}</pre></td>
+ </tr>'
+difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+changelogparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
+changesetparent = '
+ <tr>
+ <td>parent {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
+filerevparent = '
+ <tr>
+ <td>parent {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+filerename = '{file|escape}@'
+filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
+fileannotateparent = '
+ <tr>
+ <td>parent {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+changelogchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+changesetchild = '
+ <tr>
+ <td>child {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+filerevchild = '
+ <tr>
+ <td>child {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+fileannotatechild = '
+ <tr>
+ <td>child {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+tags = tags.tmpl
+tagentry = '
+ <tr class="parity{parity}">
+ <td class="age"><i>{date|age}</i></td>
+ <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
+ <td class="link">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+branches = branches.tmpl
+branchentry = '
+ <tr class="parity{parity}">
+ <td class="age"><i>{date|age}</i></td>
+ <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
+ <td class="{status}">{branch|escape}</td>
+ <td class="link">
+ <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+diffblock = '<pre>{lines}</pre>'
+filediffparent = '
+ <tr>
+ <td>parent {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+filelogparent = '
+ <tr>
+ <td align="right">parent {rev}: </td>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <tr>
+ <td>child {rev}</td>
+ <td style="font-family:monospace">
+ <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+filelogchild = '
+ <tr>
+ <td align="right">child {rev}: </td>
+ <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+shortlog = shortlog.tmpl
+graph = graph.tmpl
+tagtag = '<span class="tagtag" title="{name}">{name}</span> '
+branchtag = '<span class="branchtag" title="{name}">{name}</span> '
+inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
+shortlogentry = '
+ <tr class="parity{parity}">
+ <td class="age"><i>{date|age}</i></td>
+ <td><i>{author|person}</i></td>
+ <td>
+ <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ <b>{desc|strip|firstline|escape|nonempty}</b>
+ <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span>
+ </a>
+ </td>
+ <td class="link" nowrap>
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+filelogentry = '
+ <tr class="parity{parity}">
+ <td class="age"><i>{date|age}</i></td>
+ <td>
+ <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ <b>{desc|strip|firstline|escape|nonempty}</b>
+ </a>
+ </td>
+ <td class="link">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> | <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> | <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
+ </tr>'
+archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
+indexentry = '
+ <tr class="parity{parity}">
+ <td>
+ <a class="list" href="{url}{sessionvars%urlparameter}">
+ <b>{name|escape}</b>
+ </a>
+ </td>
+ <td>{description}</td>
+ <td>{contact|obfuscate}</td>
+ <td class="age">{lastchange|age}</td>
+ <td class="indexlinks">{archives%indexarchiveentry}</td>
+ <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
+ </tr>\n'
+indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
+index = index.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/notfound.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,18 @@
+{header}
+<title>Mercurial repository not found</title>
+</head>
+
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a> Not found: {repo|escape}
+</div>
+
+<div class="page_body">
+The specified repository "{repo|escape}" is unknown, sorry.
+<br/>
+<br/>
+Please go back to the <a href="{url}">main repository list page</a>.
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/search.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+{header}
+<title>{repo|escape}: Search</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<div class="search">
+<input type="text" name="rev" value="{query|escape}" />
+</div>
+</form>
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
+<br/>
+</div>
+
+<div class="title">searching for {query|escape}</div>
+
+{entries}
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/shortlog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,41 @@
+{header}
+<title>{repo|escape}: Shortlog</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog
+</div>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<div class="search">
+<input type="text" name="rev" />
+</div>
+</form>
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+shortlog |
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
+<br/>
+{changenav%navshortentry}<br/>
+</div>
+
+<div class="title"> </div>
+<table cellspacing="0">
+{entries%shortlogentry}
+</table>
+
+<div class="page_nav">
+{changenav%navshortentry}
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/summary.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,58 @@
+{header}
+<title>{repo|escape}: Summary</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<div class="search">
+<input type="text" name="rev" />
+</div>
+</form>
+</div>
+
+<div class="page_nav">
+summary |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
+<br/>
+</div>
+
+<div class="title"> </div>
+<table cellspacing="0">
+<tr><td>description</td><td>{desc}</td></tr>
+<tr><td>owner</td><td>{owner|obfuscate}</td></tr>
+<tr><td>last change</td><td>{lastchange|rfc822date}</td></tr>
+</table>
+
+<div><a class="title" href="{url}shortlog{sessionvars%urlparameter}">changes</a></div>
+<table cellspacing="0">
+{shortlog}
+<tr class="light"><td colspan="4"><a class="list" href="{url}shortlog{sessionvars%urlparameter}">...</a></td></tr>
+</table>
+
+<div><a class="title" href="{url}tags{sessionvars%urlparameter}">tags</a></div>
+<table cellspacing="0">
+{tags}
+<tr class="light"><td colspan="3"><a class="list" href="{url}tags{sessionvars%urlparameter}">...</a></td></tr>
+</table>
+
+<div><a class="title" href="#">branches</a></div>
+<table cellspacing="0">
+{branches%branchentry}
+<tr class="light">
+ <td colspan="4"><a class="list" href="#">...</a></td>
+</tr>
+</table>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/gitweb/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,30 @@
+{header}
+<title>{repo|escape}: Tags</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}"/>
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}"/>
+</head>
+<body>
+
+<div class="page_header">
+<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / tags
+</div>
+
+<div class="page_nav">
+<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
+<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
+<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
+tags |
+<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+<br/>
+</div>
+
+<div class="title"> </div>
+<table cellspacing="0">
+{entries%tagentry}
+</table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/map-cmdline.changelog Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,17 @@
+header = '{date|shortdate} {author|person} <{author|email}>\n\n'
+header_verbose = ''
+changeset = '\t* {files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\t[{node|short}]{tags}{branches}\n\n'
+changeset_quiet = '\t* {desc|firstline|fill68|tabindent|strip}\n\n'
+changeset_verbose = '{date|isodate} {author|person} <{author|email}> ({node|short}{tags}{branches})\n\n\t* {file_adds|stringify|fill68|tabindent}{file_dels|stringify|fill68|tabindent}{files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\n'
+start_tags = ' ['
+tag = '{tag}, '
+last_tag = '{tag}]'
+start_branches = ' <'
+branch = '{branch}, '
+last_branch = '{branch}>'
+file = '{file}, '
+last_file = '{file}:\n\t'
+file_add = '{file_add}, '
+last_file_add = '{file_add}: new file.\n* '
+file_del = '{file_del}, '
+last_file_del = '{file_del}: deleted file.\n* '
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/map-cmdline.compact Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,9 @@
+changeset = '{rev}{tags}{parents} {node|short} {date|isodate} {author|user}\n {desc|firstline|strip}\n\n'
+changeset_quiet = '{rev}:{node|short}\n'
+changeset_verbose = '{rev}{tags}{parents} {node|short} {date|isodate} {author}\n {desc|strip}\n\n'
+start_tags = '['
+tag = '{tag},'
+last_tag = '{tag}]'
+start_parents = ':'
+parent = '{rev},'
+last_parent = '{rev}'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/map-cmdline.default Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,24 @@
+changeset = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\nsummary: {desc|firstline}\n\n'
+changeset_quiet = '{rev}:{node|short}\n'
+changeset_verbose = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\n{files}{file_copies}description:\n{desc|strip}\n\n\n'
+changeset_debug = 'changeset: {rev}:{node}\n{branches}{tags}{parents}{manifest}user: {author}\ndate: {date|date}\n{file_mods}{file_adds}{file_dels}{file_copies}{extras}description:\n{desc|strip}\n\n\n'
+start_files = 'files: '
+file = ' {file}'
+end_files = '\n'
+start_file_mods = 'files: '
+file_mod = ' {file_mod}'
+end_file_mods = '\n'
+start_file_adds = 'files+: '
+file_add = ' {file_add}'
+end_file_adds = '\n'
+start_file_dels = 'files-: '
+file_del = ' {file_del}'
+end_file_dels = '\n'
+start_file_copies = 'copies: '
+file_copy = ' {name} ({source})'
+end_file_copies = '\n'
+parent = 'parent: {rev}:{node|formatnode}\n'
+manifest = 'manifest: {rev}:{node}\n'
+branch = 'branch: {branch}\n'
+tag = 'tag: {tag}\n'
+extra = 'extra: {key}={value|stringescape}\n'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/branches.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+{header}
+ <title>{repo|escape}: Branches</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Branches</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li class="current">branches</li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">tags</h2>
+ <table cellspacing="0">
+{entries%branchentry}
+ </table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/changelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,40 @@
+{header}
+ <title>{repo|escape}: changelog</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li class="current">changelog</li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">changelog</h2>
+ <div>
+ {entries%changelogentry}
+ </div>
+
+ <div class="page-path">
+{changenav%naventry}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/changelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
+<ul class="changelog-entry">
+ <li class="age">{date|age}</li>
+ <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
+ <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
+</ul>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/changeset.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,63 @@
+{header}
+<title>{repo|escape}: changeset {rev}:{node|short}</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li class="current">changeset</li>
+ <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
+ </ul>
+
+ <h2 class="no-link no-border">changeset</h2>
+
+ <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
+ <p class="changeset-age"><span>{date|age}</span></p>
+
+ <dl class="overview">
+ <dt>author</dt>
+ <dd>{author|obfuscate}</dd>
+ <dt>date</dt>
+ <dd>{date|date}</dd>
+ {branch%changesetbranch}
+ <dt>changeset {rev}</dt>
+ <dd>{node|short}</dd>
+ {parent%changesetparent}
+ {child%changesetchild}
+ </dl>
+
+ <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
+
+ <table>
+ {files}
+ </table>
+
+ <div class="diff">
+ {diff}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,34 @@
+{header}
+ <title>{repo|escape}: Error</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li class="current">summary</li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">An error occurred while processing your request</h2>
+ <p class="normal">{error|escape}</p>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/fileannotate.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,63 @@
+{header}
+<title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+ <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+ <li class="current">annotate</li>
+ <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+ <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
+ </ul>
+
+ <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
+ <h3 class="changeset">{file|escape}</h3>
+ <p class="changeset-age"><span>{date|age}</span></p>
+
+ <dl class="overview">
+ <dt>author</dt>
+ <dd>{author|obfuscate}</dd>
+ <dt>date</dt>
+ <dd>{date|date}</dd>
+ {branch%filerevbranch}
+ <dt>changeset {rev}</dt>
+ <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
+ {parent%fileannotateparent}
+ {child%fileannotatechild}
+ <dt>permissions</dt>
+ <dd>{permissions|permissions}</dd>
+ </dl>
+
+ <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
+
+ <table class="annotated">
+ {annotate%annotateline}
+ </table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/filediff.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,54 @@
+{header}
+<title>{repo|escape}: diff {file|escape}</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file diff</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+ <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+ <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+ <li class="current">diff</li>
+ <li><a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
+ </ul>
+
+ <h2 class="no-link no-border">diff: {file|escape}</h2>
+ <h3 class="changeset">{file|escape}</h3>
+
+ <dl class="overview">
+ {branch%filerevbranch}
+ <dt>changeset {rev}</dt>
+ <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
+ {parent%filediffparent}
+ {child%filediffchild}
+ </dl>
+
+ <div class="diff">
+ {diff}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,49 @@
+{header}
+<title>{repo|escape}: File revisions</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+ <li class="current">revisions</li>
+ <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+ <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+ <li><a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a></li>
+ </ul>
+
+ <h2 class="no-link no-border">{file|urlescape}</h2>
+
+ <table>
+ {entries%filelogentry}
+ </table>
+
+ <div class="page-path">
+ {nav%filenaventry}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/filerevision.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,63 @@
+{header}
+<title>{repo|escape}: {file|escape}@{node|short}</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li class="current">file</li>
+ <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
+ <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+ <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+ <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
+ </ul>
+
+ <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
+ <h3 class="changeset">{file|escape}</h3>
+ <p class="changeset-age"><span>{date|age}</span></p>
+
+ <dl class="overview">
+ <dt>author</dt>
+ <dd>{author|obfuscate}</dd>
+ <dt>date</dt>
+ <dd>{date|date}</dd>
+ {branch%filerevbranch}
+ <dt>changeset {rev}</dt>
+ <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
+ {parent%filerevparent}
+ {child%filerevchild}
+ <dt>permissions</dt>
+ <dd>{permissions|permissions}</dd>
+ </dl>
+
+ <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
+
+ <div class="source">
+ {text%fileline}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/footer.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,22 @@
+ <div class="page-footer">
+ <p>Mercurial Repository: {repo|escape}</p>
+ <ul class="rss-logo">
+ <li><a href="{url}rss-log">RSS</a></li>
+ <li><a href="{url}atom-log">Atom</a></li>
+ </ul>
+ {motd}
+ </div>
+
+ <div id="powered-by">
+ <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
+ </div>
+
+ <div id="corner-top-left"></div>
+ <div id="corner-top-right"></div>
+ <div id="corner-bottom-left"></div>
+ <div id="corner-bottom-right"></div>
+
+</div>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/graph.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,118 @@
+{header}
+ <title>{repo|escape}: graph</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+ <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li class="current">graph</li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">graph</h2>
+
+ <div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
+ <div id="wrapper">
+ <ul id="nodebgs"></ul>
+ <canvas id="graph" width="224" height="{canvasheight}"></canvas>
+ <ul id="graphnodes"></ul>
+ </div>
+
+ <script type="text/javascript" src="{staticurl}graph.js"></script>
+ <script>
+ <!-- hide script content
+
+ document.getElementById('noscript').style.display = 'none';
+
+ var data = {jsdata|json};
+ var graph = new Graph();
+ graph.scale({bg_height});
+
+ graph.edge = function(x0, y0, x1, y1, color) {
+
+ this.setColor(color, 0.0, 0.65);
+ this.ctx.beginPath();
+ this.ctx.moveTo(x0, y0);
+ this.ctx.lineTo(x1, y1);
+ this.ctx.stroke();
+
+ }
+
+ var revlink = '<li style="_STYLE"><span class="desc">';
+ revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
+ revlink += '</span>_TAGS<span class="info">_DATE ago, by _USER</span></li>';
+
+ graph.vertex = function(x, y, color, parity, cur) {
+
+ this.ctx.beginPath();
+ color = this.setColor(color, 0.25, 0.75);
+ this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+ this.ctx.fill();
+
+ var bg = '<li class="bg parity' + parity + '"></li>';
+ var left = (this.columns + 1) * this.bg_height;
+ var nstyle = 'padding-left: ' + left + 'px;';
+ var item = revlink.replace(/_STYLE/, nstyle);
+ item = item.replace(/_PARITY/, 'parity' + parity);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_DESC/, cur[3]);
+ item = item.replace(/_USER/, cur[4]);
+ item = item.replace(/_DATE/, cur[5]);
+
+ var tagspan = '';
+ if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
+ tagspan = '<span class="logtags">';
+ if (cur[6][1]) {
+ tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ } else if (!cur[6][1] && cur[6][0] != 'default') {
+ tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ }
+ if (cur[7].length) {
+ for (var t in cur[7]) {
+ var tag = cur[7][t];
+ tagspan += '<span class="tagtag">' + tag + '</span> ';
+ }
+ }
+ tagspan += '</span>';
+ }
+
+ item = item.replace(/_TAGS/, tagspan);
+ return [bg, item];
+
+ }
+
+ graph.render(data);
+
+ // stop hiding script -->
+ </script>
+
+ <div class="page-path">
+ <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
+ <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
+ | {changenav%navgraphentry}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
+ <meta name="robots" content="index, nofollow"/>
+ <link rel="stylesheet" href="{staticurl}style-monoblue.css" type="text/css" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/index.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,39 @@
+{header}
+ <title>{repo|escape}: Mercurial repositories index</title>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1>Mercurial Repositories</h1>
+ <ul class="page-nav">
+ </ul>
+ </div>
+
+ <table cellspacing="0">
+ <tr>
+ <td><a href="?sort={sort_name}">Name</a></td>
+ <td><a href="?sort={sort_description}">Description</a></td>
+ <td><a href="?sort={sort_contact}">Contact</a></td>
+ <td><a href="?sort={sort_lastchange}">Last change</a></td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ {entries%indexentry}
+ </table>
+ <div class="page-footer">
+ {motd}
+ </div>
+
+ <div id="powered-by">
+ <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
+ </div>
+
+ <div id="corner-top-left"></div>
+ <div id="corner-top-right"></div>
+ <div id="corner-bottom-left"></div>
+ <div id="corner-bottom-right"></div>
+
+</div>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/manifest.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,51 @@
+{header}
+<title>{repo|escape}: files</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li class="current">files</li>
+ </ul>
+ </div>
+
+ <ul class="submenu">
+ <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry}</li>
+ {archives%archiveentry}
+ </ul>
+
+ <h2 class="no-link no-border">files</h2>
+ <p class="files">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></p>
+
+ <table>
+ <tr class="parity{upparity}">
+ <td>drwxr-xr-x</td>
+ <td></td>
+ <td></td>
+ <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
+ <td class="link"> </td>
+ </tr>
+ {dentries%direntry}
+ {fentries%fileentry}
+ </table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,214 @@
+default = 'summary'
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+changelog = changelog.tmpl
+summary = summary.tmpl
+error = error.tmpl
+notfound = notfound.tmpl
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
+filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '
+ <tr class="parity{parity}">
+ <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
+ <td></td>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+ </td>
+ </tr>'
+filenolink = '
+ <tr class="parity{parity}">
+ <td>
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td><td></td><td>file |
+ annotate |
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+ </td>
+ </tr>'
+fileellipses = '...'
+changelogentry = changelogentry.tmpl
+searchentry = changelogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+direntry = '
+ <tr class="parity{parity}">
+ <td>drwxr-xr-x</td>
+ <td></td>
+ <td></td>
+ <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
+ <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
+ </tr>'
+fileentry = '
+ <tr class="parity{parity}">
+ <td>{permissions|permissions}</td>
+ <td>{date|isodate}</td>
+ <td>{size}</td>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
+ <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+ </td>
+ </tr>'
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filelog = filelog.tmpl
+fileline = '
+ <div style="font-family:monospace" class="parity{parity}">
+ <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
+ </div>'
+annotateline = '
+ <tr class="parity{parity}">
+ <td class="linenr">
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
+ title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ </td>
+ <td class="lineno">
+ <a href="#{lineid}" id="{lineid}">{linenumber}</a>
+ </td>
+ <td class="source">{line|escape}</td>
+ </tr>'
+difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
+changelogparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
+changesetparent = '
+ <dt>parent {rev}</dt>
+ <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
+filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
+filerevparent = '
+ <dt>parent {rev}</dt>
+ <dd>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </dd>'
+filerename = '{file|escape}@'
+filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
+fileannotateparent = '
+ <dt>parent {rev}</dt>
+ <dd>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </dd>'
+changelogchild = '
+ <dt>child {rev}:</dt>
+ <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
+changesetchild = '
+ <dt>child {rev}</dt>
+ <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
+filerevchild = '
+ <dt>child {rev}</dt>
+ <dd>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
+ </dd>'
+fileannotatechild = '
+ <dt>child {rev}</dt>
+ <dd>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
+ </dd>'
+tags = tags.tmpl
+tagentry = '
+ <tr class="parity{parity}">
+ <td class="nowrap">{date|age}</td>
+ <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
+ <td class="nowrap">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+branches = branches.tmpl
+branchentry = '
+ <tr class="parity{parity}">
+ <td class="nowrap">{date|age}</td>
+ <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ <td class="{status}">{branch|escape}</td>
+ <td class="nowrap">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+diffblock = '<pre>{lines}</pre>'
+filediffparent = '
+ <dt>parent {rev}</dt>
+ <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
+filelogparent = '
+ <tr>
+ <td align="right">parent {rev}: </td>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <dt>child {rev}</dt>
+ <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
+filelogchild = '
+ <tr>
+ <td align="right">child {rev}: </td>
+ <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+shortlog = shortlog.tmpl
+tagtag = '<span class="tagtag" title="{name}">{name}</span> '
+branchtag = '<span class="branchtag" title="{name}">{name}</span> '
+inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
+shortlogentry = '
+ <tr class="parity{parity}">
+ <td class="nowrap">{date|age}</td>
+ <td>{author|person}</td>
+ <td>
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ {desc|strip|firstline|escape|nonempty}
+ <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span>
+ </a>
+ </td>
+ <td class="nowrap">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
+ <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+ </td>
+ </tr>'
+filelogentry = '
+ <tr class="parity{parity}">
+ <td class="nowrap">{date|age}</td>
+ <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
+ <td class="nowrap">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> | <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> | <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+ {rename%filelogrename}
+ </td>
+ </tr>'
+archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
+indexentry = '
+ <tr class="parity{parity}">
+ <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
+ <td>{description}</td>
+ <td>{contact|obfuscate}</td>
+ <td>{lastchange|age}</td>
+ <td class="indexlinks">{archives%indexarchiveentry}</td>
+ <td>
+ <div class="rss_logo">
+ <a href="{url}rss-log">RSS</a>
+ <a href="{url}atom-log">Atom</a>
+ </div>
+ </td>
+ </tr>\n'
+indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
+index = index.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
+graph = graph.tmpl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/notfound.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,35 @@
+{header}
+ <title>{repo|escape}: Mercurial repository not found</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li class="current">summary</li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">Not Found</h2>
+ <p class="normal">The specified repository "{repo|escape}" is unknown, sorry.</p>
+ <p class="normal">Please go back to the <a href="{url}">main repository list page</a>.</p>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/search.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,34 @@
+{header}
+ <title>{repo|escape}: Search</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" value="{query|escape}" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">searching for {query|escape}</h2>
+ {entries}
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/shortlog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,41 @@
+{header}
+ <title>{repo|escape}: shortlog</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li class="current">shortlog</li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">shortlog</h2>
+
+ <table>
+{entries%shortlogentry}
+ </table>
+
+ <div class="page-path">
+{changenav%navshortentry}
+ </div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/summary.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,66 @@
+{header}
+ <title>{repo|escape}: Summary</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li class="current">summary</li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">Mercurial Repository Overview</h2>
+ <dl class="overview">
+ <dt>name</dt>
+ <dd>{repo|escape}</dd>
+ <dt>description</dt>
+ <dd>{desc}</dd>
+ <dt>owner</dt>
+ <dd>{owner|obfuscate}</dd>
+ <dt>last change</dt>
+ <dd>{lastchange|rfc822date}</dd>
+ </dl>
+
+ <h2><a href="{url}shortlog{sessionvars%urlparameter}">Changes</a></h2>
+ <table>
+{shortlog}
+ <tr class="light">
+ <td colspan="4"><a class="list" href="{url}shortlog{sessionvars%urlparameter}">...</a></td>
+ </tr>
+ </table>
+
+ <h2><a href="{url}tags{sessionvars%urlparameter}">Tags</a></h2>
+ <table>
+{tags}
+ <tr class="light">
+ <td colspan="3"><a class="list" href="{url}tags{sessionvars%urlparameter}">...</a></td>
+ </tr>
+ </table>
+
+ <h2 class="no-link">Branches</h2>
+ <table>
+ {branches%branchentry}
+ <tr class="light">
+ <td colspan="4"><a class="list" href="#">...</a></td>
+ </tr>
+ </table>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/monoblue/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+{header}
+ <title>{repo|escape}: Tags</title>
+ <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
+ <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
+</head>
+
+<body>
+<div id="container">
+ <div class="page-header">
+ <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Tags</h1>
+
+ <form action="{url}log">
+ {sessionvars%hiddenformentry}
+ <dl class="search">
+ <dt><label>Search: </label></dt>
+ <dd><input type="text" name="rev" /></dd>
+ </dl>
+ </form>
+
+ <ul class="page-nav">
+ <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
+ <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
+ <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li class="current">tags</li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
+ </ul>
+ </div>
+
+ <h2 class="no-link no-border">tags</h2>
+ <table cellspacing="0">
+{entries%tagentry}
+ </table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/branches.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,45 @@
+{header}
+<title>{repo|escape}: branches</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}: branches" />
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}: branches" />
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li class="active">branches</li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>branches</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<table class="bigtable">
+<tr>
+ <th>branch</th>
+ <th>node</th>
+</tr>
+{entries%branchentry}
+</table>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/changeset.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,71 @@
+{header}
+<title>{repo|escape}: {node|short}</title>
+</head>
+<body>
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+ <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+ <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+ <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+ <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+ <li class="active">changeset</li>
+ <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
+ <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+ {archives%archiveentry}
+</ul>
+</div>
+
+<div class="main">
+
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag}</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">{author|obfuscate}</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">{date|date} ({date|age})</td></tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author">{parent%changesetparent}</td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author">{child%changesetchild}</td>
+</tr>
+<tr>
+ <th class="files">files</th>
+ <td class="files">{files}</td>
+</tr>
+</table>
+
+<div class="overflow">
+<div class="sourcefirst"> line diff</div>
+
+{diff}
+</div>
+
+</div>
+</div>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,43 @@
+{header}
+<title>{repo|escape}: error</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+</div>
+
+<div class="main">
+
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>error</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="description">
+<p>
+An error occurred while processing your request:
+</p>
+<p>
+{error|escape}
+</p>
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/fileannotate.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,78 @@
+{header}
+<title>{repo|escape}: {file|escape} annotate</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
+<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+<li class="active">annotate</li>
+<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
+<li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>annotate {file|escape} @ {rev}:{node|short}</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">{author|obfuscate}</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">{date|date} ({date|age})</td>
+</tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author">{parent%filerevparent}</td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author">{child%filerevchild}</td>
+</tr>
+{changesettag}
+</table>
+
+<div class="overflow">
+<table class="bigtable">
+<tr>
+ <th class="annotate">rev</th>
+ <th class="line"> line source</th>
+</tr>
+{annotate%annotateline}
+</table>
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/filediff.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,73 @@
+{header}
+<title>{repo|escape}: {file|escape} diff</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
+<li class="active">diff</li>
+<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
+<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>diff {file|escape} @ {rev}:{node|short}</h3>
+
+<form class="search" action="{url}log">
+<p>{sessionvars%hiddenformentry}</p>
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
+
+<table id="changesetEntry">
+<tr>
+ <th>author</th>
+ <td>{author|obfuscate}</td>
+</tr>
+<tr>
+ <th>date</th>
+ <td>{date|date} ({date|age})</td>
+</tr>
+<tr>
+ <th>parents</th>
+ <td>{parent%filerevparent}</td>
+</tr>
+<tr>
+ <th>children</th>
+ <td>{child%filerevchild}</td>
+</tr>
+{changesettag}
+</table>
+
+<div class="overflow">
+<div class="sourcefirst"> line diff</div>
+
+{diff}
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,60 @@
+{header}
+<title>{repo|escape}: {file|escape} history</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}" />
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}" />
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
+<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+<li class="active">file log</li>
+<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>log {file|escape}</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="navigate">{nav%filenaventry}</div>
+
+<table class="bigtable">
+ <tr>
+ <th class="age">age</th>
+ <th class="author">author</th>
+ <th class="description">description</th>
+ </tr>
+{entries%filelogentry}
+</table>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/filelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,5 @@
+ <tr class="parity{parity}">
+ <td class="age">{date|age}</td>
+ <td class="author">{author|person}</td>
+ <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}</td>
+ </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/filerevision.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,73 @@
+{header}
+<title>{repo|escape}: {node|short} {file|escape}</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+<li class="active">file</li>
+<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
+<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
+<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
+<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
+<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>view {file|escape} @ {rev}:{node|short}</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
+
+<table id="changesetEntry">
+<tr>
+ <th class="author">author</th>
+ <td class="author">{author|obfuscate}</td>
+</tr>
+<tr>
+ <th class="date">date</th>
+ <td class="date">{date|date} ({date|age})</td>
+</tr>
+<tr>
+ <th class="author">parents</th>
+ <td class="author">{parent%filerevparent}</td>
+</tr>
+<tr>
+ <th class="author">children</th>
+ <td class="author">{child%filerevchild}</td>
+</tr>
+{changesettag}
+</table>
+
+<div class="overflow">
+<div class="sourcefirst"> line source</div>
+{text%fileline}
+<div class="sourcelast"></div>
+</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/footer.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,4 @@
+{motd}
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/graph.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,132 @@
+{header}
+<title>{repo|escape}: revision graph</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}: log" />
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}: log" />
+<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li class="active">graph</li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>graph</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="navigate">
+<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
+<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
+| rev {rev}: {changenav%navgraphentry}
+</div>
+
+<noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
+
+<div id="wrapper">
+<ul id="nodebgs"></ul>
+<canvas id="graph" width="224" height="{canvasheight}"></canvas>
+<ul id="graphnodes"></ul>
+</div>
+
+<script type="text/javascript" src="{staticurl}graph.js"></script>
+<script type="text/javascript">
+<!-- hide script content
+
+var data = {jsdata|json};
+var graph = new Graph();
+graph.scale({bg_height});
+
+graph.edge = function(x0, y0, x1, y1, color) {
+
+ this.setColor(color, 0.0, 0.65);
+ this.ctx.beginPath();
+ this.ctx.moveTo(x0, y0);
+ this.ctx.lineTo(x1, y1);
+ this.ctx.stroke();
+
+}
+
+var revlink = '<li style="_STYLE"><span class="desc">';
+revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
+revlink += '</span>_TAGS<span class="info">_DATE ago, by _USER</span></li>';
+
+graph.vertex = function(x, y, color, parity, cur) {
+
+ this.ctx.beginPath();
+ color = this.setColor(color, 0.25, 0.75);
+ this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+ this.ctx.fill();
+
+ var bg = '<li class="bg parity' + parity + '"></li>';
+ var left = (this.columns + 1) * this.bg_height;
+ var nstyle = 'padding-left: ' + left + 'px;';
+ var item = revlink.replace(/_STYLE/, nstyle);
+ item = item.replace(/_PARITY/, 'parity' + parity);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_DESC/, cur[3]);
+ item = item.replace(/_USER/, cur[4]);
+ item = item.replace(/_DATE/, cur[5]);
+
+ var tagspan = '';
+ if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
+ tagspan = '<span class="logtags">';
+ if (cur[6][1]) {
+ tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ } else if (!cur[6][1] && cur[6][0] != 'default') {
+ tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
+ tagspan += cur[6][0] + '</span> ';
+ }
+ if (cur[7].length) {
+ for (var t in cur[7]) {
+ var tag = cur[7][t];
+ tagspan += '<span class="tag">' + tag + '</span> ';
+ }
+ }
+ tagspan += '</span>';
+ }
+
+ item = item.replace(/_TAGS/, tagspan);
+ return [bg, item];
+
+}
+
+graph.render(data);
+
+// stop hiding script -->
+</script>
+
+<div class="navigate">
+<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
+<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
+| rev {rev}: {changenav%navgraphentry}
+</div>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+<head>
+<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="{staticurl}style-paper.css" type="text/css" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/index.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,26 @@
+{header}
+<title>Mercurial repositories index</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
+</div>
+<div class="main">
+<h2>Mercurial Repositories</h2>
+
+<table class="bigtable">
+ <tr>
+ <th><a href="?sort={sort_name}">Name</a></th>
+ <th><a href="?sort={sort_description}">Description</a></th>
+ <th><a href="?sort={sort_contact}">Contact</a></th>
+ <th><a href="?sort={sort_lastchange}">Last change</a></th>
+ <th> </th>
+ </tr>
+ {entries%indexentry}
+</table>
+</div>
+</div>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/manifest.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,54 @@
+{header}
+<title>{repo|escape}: {node|short} {path|escape}</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li class="active">browse</li>
+</ul>
+<ul>
+{archives%archiveentry}
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<table class="bigtable">
+<tr>
+ <th class="name">name</th>
+ <th class="size">size</th>
+ <th class="permissions">permissions</th>
+</tr>
+<tr class="fileline parity{upparity}">
+ <td class="name"><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
+ <td class="size"></td>
+ <td class="permissions">drwxr-xr-x</td>
+</tr>
+{dentries%direntry}
+{fentries%fileentry}
+</table>
+</div>
+</div>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,191 @@
+default = 'shortlog'
+
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+
+changelog = shortlog.tmpl
+shortlog = shortlog.tmpl
+shortlogentry = shortlogentry.tmpl
+graph = graph.tmpl
+
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenolink = '{file|escape} '
+fileellipses = '...'
+changelogentry = shortlogentry.tmpl
+searchentry = shortlogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+
+direntry = '
+ <tr class="fileline parity{parity}">
+ <td class="name">
+ <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
+ <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
+ </a>
+ <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
+ {emptydirs|escape}
+ </a>
+ </td>
+ <td class="size"></td>
+ <td class="permissions">drwxr-xr-x</td>
+ </tr>'
+
+fileentry = '
+ <tr class="fileline parity{parity}">
+ <td class="filename">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
+ </a>
+ </td>
+ <td class="size">{size}</td>
+ <td class="permissions">{permissions|permissions}</td>
+ </tr>'
+
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filelog = filelog.tmpl
+fileline = '
+ <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
+filelogentry = filelogentry.tmpl
+
+annotateline = '
+ <tr class="parity{parity}">
+ <td class="annotate">
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
+ title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ </td>
+ <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
+ </tr>'
+
+diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
+difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
+difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
+difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
+diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
+
+changelogparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+
+changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
+
+filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
+filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
+
+filerename = '{file|escape}@'
+filelogrename = '
+ <tr>
+ <th>base:</th>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {file|escape}@{node|short}
+ </a>
+ </td>
+ </tr>'
+fileannotateparent = '
+ <tr>
+ <td class="metatag">parent:</td>
+ <td>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
+changelogchild = '
+ <tr>
+ <th class="child">child</th>
+ <td class="child">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+fileannotatechild = '
+ <tr>
+ <td class="metatag">child:</td>
+ <td>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {node|short}
+ </a>
+ </td>
+ </tr>'
+tags = tags.tmpl
+tagentry = '
+ <tr class="tagEntry parity{parity}">
+ <td>
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
+ {tag|escape}
+ </a>
+ </td>
+ <td class="node">
+ {node|short}
+ </td>
+ </tr>'
+branches = branches.tmpl
+branchentry = '
+ <tr class="tagEntry parity{parity}">
+ <td>
+ <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
+ {branch|escape}
+ </a>
+ </td>
+ <td class="node">
+ {node|short}
+ </td>
+ </tr>'
+changelogtag = '<span class="tag">{name|escape}</span> '
+changesettag = '<span class="tag">{tag|escape}</span> '
+changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
+changelogbranchname = '<span class="branchname">{name|escape}</span> '
+
+filediffparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filelogparent = '
+ <tr>
+ <th>parent {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+filelogchild = '
+ <tr>
+ <th>child {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+
+indexentry = '
+ <tr class="parity{parity}">
+ <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
+ <td>{description}</td>
+ <td>{contact|obfuscate}</td>
+ <td class="age">{lastchange|age}</td>
+ <td class="indexlinks">{archives%indexarchiveentry}</td>
+ </tr>\n'
+indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>'
+index = index.tmpl
+archiveentry = '
+ <li>
+ <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
+ </li>'
+notfound = notfound.tmpl
+error = error.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/notfound.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,12 @@
+{header}
+<title>Mercurial repository not found</title>
+</head>
+<body>
+
+<h2>Mercurial repository not found</h2>
+
+The specified repository "{repo|escape}" is unknown, sorry.
+
+Please go back to the <a href="{url}">main repository list page</a>.
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/search.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,43 @@
+{header}
+<title>{repo|escape}: searching for {query|escape}</title>
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+<ul>
+<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>searching for '{query|escape}'</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30"></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<table class="bigtable">
+ <tr>
+ <th class="age">age</th>
+ <th class="author">author</th>
+ <th class="description">description</th>
+ </tr>
+{entries}
+</table>
+
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/shortlog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,57 @@
+{header}
+<title>{repo|escape}: log</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}" />
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}" />
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li class="active">log</li>
+<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
+<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+<ul>
+<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
+<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
+</ul>
+<ul>
+{archives%archiveentry}
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>log</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<div class="navigate">rev {rev}: {changenav%navshortentry}</div>
+
+<table class="bigtable">
+ <tr>
+ <th class="age">age</th>
+ <th class="author">author</th>
+ <th class="description">description</th>
+ </tr>
+{entries%shortlogentry}
+</table>
+
+<div class="navigate">rev {rev}: {changenav%navshortentry}</div>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/shortlogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,5 @@
+ <tr class="parity{parity}">
+ <td class="age">{date|age}</td>
+ <td class="author">{author|person}</td>
+ <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}</td>
+ </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/paper/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,45 @@
+{header}
+<title>{repo|escape}: tags</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}: tags" />
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}: tags" />
+</head>
+<body>
+
+<div class="container">
+<div class="menu">
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
+</div>
+<ul>
+<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
+<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
+<li class="active">tags</li>
+<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
+</ul>
+</div>
+
+<div class="main">
+<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
+<h3>tags</h3>
+
+<form class="search" action="{url}log">
+{sessionvars%hiddenformentry}
+<p><input name="rev" id="search1" type="text" size="30" /></p>
+<div id="hint">find changesets by author, revision,
+files, or words in the commit message</div>
+</form>
+
+<table class="bigtable">
+<tr>
+ <th>tag</th>
+ <th>node</th>
+</tr>
+{entries%tagentry}
+</table>
+</div>
+</div>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/changeset.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,9 @@
+{header}
+# HG changeset patch
+# User {author}
+# Date {date|hgdate}
+# Node ID {node}
+{parent%changesetparent}
+{desc}
+
+{diff}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,2 @@
+{header}
+error: {error}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/fileannotate.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,5 @@
+{header}
+{annotate%annotateline}
+{footer}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/filediff.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,5 @@
+{header}
+{diff}
+{footer}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/index.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,2 @@
+{header}
+{entries%indexentry}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/manifest.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,3 @@
+{header}
+{dentries%direntry}{fentries%fileentry}
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,27 @@
+mimetype = 'text/plain; charset={encoding}'
+header = ''
+footer = ''
+changeset = changeset.tmpl
+difflineplus = '{line}'
+difflineminus = '{line}'
+difflineat = '{line}'
+diffline = '{line}'
+changesetparent = '# Parent {node}'
+changesetchild = '# Child {node}'
+filenodelink = ''
+fileline = '{line}'
+diffblock = '{lines}'
+filediff = filediff.tmpl
+fileannotate = fileannotate.tmpl
+annotateline = '{author|user}@{rev}: {line}'
+manifest = manifest.tmpl
+direntry = 'drwxr-xr-x {basename}\n'
+fileentry = '{permissions|permissions} {size} {basename}\n'
+index = index.tmpl
+notfound = notfound.tmpl
+error = error.tmpl
+indexentry = '{url}\n'
+tags = '{entries%tagentry}'
+tagentry = '{tag} {node}\n'
+branches = '{entries%branchentry}'
+branchentry = '{branch} {node} {status}\n'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/raw/notfound.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,2 @@
+{header}
+error: repository {repo} not found
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/changelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+{header}
+ <title>{repo|escape} Changelog</title>
+ <description>{repo|escape} Changelog</description>
+ {entries%changelogentry}
+ </channel>
+</rss>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/changelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,7 @@
+<item>
+ <title>{desc|strip|firstline|strip|escape}</title>
+ <guid isPermaLink="true">{urlbase}{url}rev/{node|short}</guid>
+ <description><![CDATA[{desc|strip|escape|addbreaks|nonempty}]]></description>
+ <author>{author|obfuscate}</author>
+ <pubDate>{date|rfc822date}</pubDate>
+</item>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,10 @@
+{header}
+ <title>Error</title>
+ <description>Error</description>
+ <item>
+ <title>Error</title>
+ <description>{error|escape}</description>
+ <guid>http://mercurial.selenic.com/#error</guid>
+ </item>
+ </channel>
+</rss>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+{header}
+ <title>{repo|escape}: {file|escape} history</title>
+ <description>{file|escape} revision history</description>
+ {entries%filelogentry}
+ </channel>
+</rss>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/filelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,7 @@
+<item>
+ <title>{desc|strip|firstline|strip|escape}</title>
+ <link>{urlbase}{url}log{{node|short}}/{file|urlescape}</link>
+ <description><![CDATA[{desc|strip|escape|addbreaks|nonempty}]]></description>
+ <author>{author|obfuscate}</author>
+ <pubDate>{date|rfc822date}</pubDate>
+</item>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="{encoding}"?>
+<rss version="2.0">
+ <channel>
+ <link>{urlbase}{url}</link>
+ <language>en-us</language>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,10 @@
+default = 'changelog'
+mimetype = 'text/xml; charset={encoding}'
+header = header.tmpl
+changelog = changelog.tmpl
+changelogentry = changelogentry.tmpl
+filelog = filelog.tmpl
+filelogentry = filelogentry.tmpl
+tags = tags.tmpl
+tagentry = tagentry.tmpl
+error = error.tmpl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/tagentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<item>
+ <title>{tag|escape}</title>
+ <link>{urlbase}{url}rev/{node|short}</link>
+ <description><![CDATA[{tag|strip|escape|addbreaks}]]></description>
+ <pubDate>{date|rfc822date}</pubDate>
+</item>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/rss/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+{header}
+ <title>{repo|escape}: tags </title>
+ <description>{repo|escape} tag history</description>
+ {entriesnotip%tagentry}
+ </channel>
+</rss>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/branches.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,26 @@
+{header}
+<title>{repo|escape}: branches</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-branches" title="Atom feed for {repo|escape}: branches">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-branches" title="RSS feed for {repo|escape}: branches">
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
+<a type="application/rss+xml" href="{url}rss-branches">rss</a>
+<a type="application/atom+xml" href="{url}atom-branches">atom</a>
+</div>
+
+<h2>branches:</h2>
+
+<ul id="tagEntries">
+{entries%branchentry}
+</ul>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/changelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,43 @@
+{header}
+<title>{repo|escape}: changelog</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}">
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+{archives%archiveentry}
+<a type="application/rss+xml" href="{url}rss-log">rss</a>
+<a type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
+</div>
+
+<h2>changelog for {repo|escape}</h2>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">{changenav%naventry}</small>
+</p>
+</form>
+
+{entries%changelogentry}
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search2">search:</label>
+<input name="rev" id="search2" type="text" size="30">
+navigate: <small class="navigate">{changenav%naventry}</small>
+</p>
+</form>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/changelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,25 @@
+<table class="logEntry parity{parity}">
+ <tr>
+ <th class="age">{date|age}:</th>
+ <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
+ </tr>
+ <tr>
+ <th class="revision">changeset {rev}:</th>
+ <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>
+ {parent%changelogparent}
+ {child%changelogchild}
+ {changelogtag}
+ <tr>
+ <th class="author">author:</th>
+ <td class="author">{author|obfuscate}</td>
+ </tr>
+ <tr>
+ <th class="date">date:</th>
+ <td class="date">{date|date}</td>
+ </tr>
+ <tr>
+ <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
+ <td class="files">{files}</td>
+ </tr>
+</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/changeset.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,51 @@
+{header}
+<title>{repo|escape}: changeset {node|short}</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+<a href="{url}raw-rev/{node|short}">raw</a>
+{archives%archiveentry}
+</div>
+
+<h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
+
+<table id="changesetEntry">
+<tr>
+ <th class="changeset">changeset {rev}:</th>
+ <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+</tr>
+{parent%changesetparent}
+{child%changesetchild}
+{changesettag}
+<tr>
+ <th class="author">author:</th>
+ <td class="author">{author|obfuscate}</td>
+</tr>
+<tr>
+ <th class="date">date:</th>
+ <td class="date">{date|date} ({date|age})</td>
+</tr>
+<tr>
+ <th class="files">files:</th>
+ <td class="files">{files}</td>
+</tr>
+<tr>
+ <th class="description">description:</th>
+ <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
+</tr>
+</table>
+
+<div id="changesetDiff">
+{diff}
+</div>
+
+{footer}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/error.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,15 @@
+{header}
+<title>Mercurial Error</title>
+</head>
+<body>
+
+<h2>Mercurial Error</h2>
+
+<p>
+An error occurred while processing your request:
+</p>
+<p>
+{error|escape}
+</p>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/fileannotate.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,48 @@
+{header}
+<title>{repo|escape}: {file|escape} annotate</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+<a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
+</div>
+
+<h2>Annotate {file|escape}</h2>
+
+<table>
+<tr>
+ <td class="metatag">changeset {rev}:</td>
+ <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
+{parent%fileannotateparent}
+{child%fileannotatechild}
+<tr>
+ <td class="metatag">author:</td>
+ <td>{author|obfuscate}</td></tr>
+<tr>
+ <td class="metatag">date:</td>
+ <td>{date|date} ({date|age})</td>
+</tr>
+<tr>
+ <td class="metatag">permissions:</td>
+ <td>{permissions|permissions}</td>
+</tr>
+<tr>
+ <td class="metatag">description:</td>
+ <td>{desc|strip|escape|addbreaks|nonempty}</td>
+</tr>
+</table>
+
+<table cellspacing="0" cellpadding="0">
+{annotate%annotateline}
+</table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/filediff.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+{header}
+<title>{repo|escape}: {file|escape} diff</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+<a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a>
+</div>
+
+<h2>{file|escape}</h2>
+
+<table id="filediffEntry">
+<tr>
+ <th class="revision">revision {rev}:</th>
+ <td class="revision"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+</tr>
+{parent%filediffparent}
+{child%filediffchild}
+</table>
+
+<div id="fileDiff">
+{diff}
+</div>
+
+{footer}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/filelog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,28 @@
+{header}
+<title>{repo|escape}: {file|escape} history</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}">
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+<a type="application/rss+xml" href="{url}rss-log/tip/{file|urlescape}">rss</a>
+<a type="application/atom+xml" href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">atom</a>
+</div>
+
+<h2>{file|escape} revision history</h2>
+
+<p>navigate: <small class="navigate">{nav%filenaventry}</small></p>
+
+{entries%filelogentry}
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/filelogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,25 @@
+<table class="logEntry parity{parity}">
+ <tr>
+ <th class="age">{date|age}:</th>
+ <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
+ </tr>
+ <tr>
+ <th class="revision">revision {filerev}:</td>
+ <td class="node">
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
+ <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
+ </td>
+ </tr>
+ {rename%filelogrename}
+ <tr>
+ <th class="author">author:</th>
+ <td class="author">{author|obfuscate}</td>
+ </tr>
+ <tr>
+ <th class="date">date:</th>
+ <td class="date">{date|date}</td>
+ </tr>
+</table>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/filerevision.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,46 @@
+{header}
+<title>{repo|escape}:{file|escape}</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
+<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
+<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
+<a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
+</div>
+
+<h2>{file|escape}</h2>
+
+<table>
+<tr>
+ <td class="metatag">changeset {rev}:</td>
+ <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
+{parent%filerevparent}
+{child%filerevchild}
+<tr>
+ <td class="metatag">author:</td>
+ <td>{author|obfuscate}</td></tr>
+<tr>
+ <td class="metatag">date:</td>
+ <td>{date|date} ({date|age})</td></tr>
+<tr>
+ <td class="metatag">permissions:</td>
+ <td>{permissions|permissions}</td></tr>
+<tr>
+ <td class="metatag">description:</td>
+ <td>{desc|strip|escape|addbreaks|nonempty}</td>
+</tr>
+</table>
+
+<pre>
+{text%fileline}
+</pre>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/footer.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,8 @@
+{motd}
+<div class="logo">
+<a href="http://mercurial.selenic.com/">
+<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
+</div>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/graph.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,96 @@
+{header}
+<title>{repo|escape}: graph</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
+<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
+</div>
+
+<h2>graph</h2>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">{changenav%navgraphentry}</small>
+</p>
+</form>
+
+<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
+
+<div id="wrapper">
+<ul id="nodebgs"></ul>
+<canvas id="graph" width="224" height="{canvasheight}"></canvas>
+<ul id="graphnodes"></ul>
+</div>
+
+<script type="text/javascript" src="{staticurl}graph.js"></script>
+<script type="text/javascript">
+<!-- hide script content
+
+var data = {jsdata|json};
+var graph = new Graph();
+graph.scale({bg_height});
+
+graph.edge = function(x0, y0, x1, y1, color) {
+
+ this.setColor(color, 0.0, 0.65);
+ this.ctx.beginPath();
+ this.ctx.moveTo(x0, y0);
+ this.ctx.lineTo(x1, y1);
+ this.ctx.stroke();
+
+}
+
+var revlink = '<li style="_STYLE"><span class="desc">';
+revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
+revlink += '</span><span class="info">_DATE ago, by _USER</span></li>';
+
+graph.vertex = function(x, y, color, parity, cur) {
+
+ this.ctx.beginPath();
+ color = this.setColor(color, 0.25, 0.75);
+ this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
+ this.ctx.fill();
+
+ var bg = '<li class="bg parity' + parity + '"></li>';
+ var left = (this.columns + 1) * this.bg_height;
+ var nstyle = 'padding-left: ' + left + 'px;';
+ var item = revlink.replace(/_STYLE/, nstyle);
+ item = item.replace(/_PARITY/, 'parity' + parity);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_NODEID/, cur[0]);
+ item = item.replace(/_DESC/, cur[3]);
+ item = item.replace(/_USER/, cur[4]);
+ item = item.replace(/_DATE/, cur[5]);
+
+ return [bg, item];
+
+}
+
+graph.render(data);
+
+// stop hiding script -->
+</script>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">{changenav%navgraphentry}</small>
+</p>
+</form>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/header.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,6 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<link rel="icon" href="{staticurl}hgicon.png" type="image/png">
+<meta name="robots" content="index, nofollow" />
+<link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/index.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,19 @@
+{header}
+<title>Mercurial repositories index</title>
+</head>
+<body>
+
+<h2>Mercurial Repositories</h2>
+
+<table>
+ <tr>
+ <td><a href="?sort={sort_name}">Name</a></td>
+ <td><a href="?sort={sort_description}">Description</a></td>
+ <td><a href="?sort={sort_contact}">Contact</a></td>
+ <td><a href="?sort={sort_lastchange}">Last change</a></td>
+ <td> </td>
+ </tr>
+ {entries%indexentry}
+</table>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/manifest.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,28 @@
+{header}
+<title>{repo|escape}: files for changeset {node|short}</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
+{archives%archiveentry}
+</div>
+
+<h2>files for changeset {node|short}: {path|escape}</h2>
+
+<table cellpadding="0" cellspacing="0">
+<tr class="parity{upparity}">
+ <td><tt>drwxr-xr-x</tt>
+ <td>
+ <td>
+ <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
+</tr>
+{dentries%direntry}
+{fentries%fileentry}
+</table>
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/map Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,178 @@
+default = 'shortlog'
+mimetype = 'text/html; charset={encoding}'
+header = header.tmpl
+footer = footer.tmpl
+search = search.tmpl
+changelog = changelog.tmpl
+shortlog = shortlog.tmpl
+shortlogentry = shortlogentry.tmpl
+graph = graph.tmpl
+naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
+filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
+filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
+filenolink = '{file|escape} '
+fileellipses = '...'
+changelogentry = changelogentry.tmpl
+searchentry = changelogentry.tmpl
+changeset = changeset.tmpl
+manifest = manifest.tmpl
+
+direntry = '
+ <tr class="parity{parity}">
+ <td><tt>drwxr-xr-x</tt>
+ <td>
+ <td>
+ <td>
+ <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
+ <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
+ {emptydirs|urlescape}
+ </a>'
+
+fileentry = '
+ <tr class="parity{parity}">
+ <td><tt>{permissions|permissions}</tt>
+ <td align=right><tt class="date">{date|isodate}</tt>
+ <td align=right><tt>{size}</tt>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
+
+filerevision = filerevision.tmpl
+fileannotate = fileannotate.tmpl
+filediff = filediff.tmpl
+filelog = filelog.tmpl
+fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
+filelogentry = filelogentry.tmpl
+
+# The ensures that all table cells have content (even if there
+# is an empty line in the annotated file), which in turn ensures that
+# all table rows have equal height.
+annotateline = '
+ <tr class="parity{parity}">
+ <td class="annotate">
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
+ title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
+ </td>
+ <td>
+ <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
+ </td>
+ <td><pre> {line|escape}</pre></td>
+ </tr>'
+difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
+difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
+difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
+diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
+changelogparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent">
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
+ </td>
+ </tr>'
+changesetparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filerevparent = '
+ <tr>
+ <td class="metatag">parent:</td>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+filerename = '{file|escape}@'
+filelogrename = '
+ <tr>
+ <th>base:</th>
+ <td>
+ <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {file|escape}@{node|short}
+ </a>
+ </td>
+ </tr>'
+fileannotateparent = '
+ <tr>
+ <td class="metatag">parent:</td>
+ <td>
+ <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
+ {rename%filerename}{node|short}
+ </a>
+ </td>
+ </tr>'
+changesetchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+changelogchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filerevchild = '
+ <tr>
+ <td class="metatag">child:</td>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+fileannotatechild = '
+ <tr>
+ <td class="metatag">child:</td>
+ <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+tags = tags.tmpl
+tagentry = '
+ <li class="tagEntry parity{parity}">
+ <tt class="node">{node}</tt>
+ <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
+ </li>'
+branches = branches.tmpl
+branchentry = '
+ <li class="tagEntry parity{parity}">
+ <tt class="node">{node}</tt>
+ <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
+ </li>'
+diffblock = '<pre class="parity{parity}">{lines}</pre>'
+changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
+changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
+filediffparent = '
+ <tr>
+ <th class="parent">parent {rev}:</th>
+ <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filelogparent = '
+ <tr>
+ <th>parent {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filediffchild = '
+ <tr>
+ <th class="child">child {rev}:</th>
+ <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+filelogchild = '
+ <tr>
+ <th>child {rev}:</th>
+ <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
+ </tr>'
+indexentry = '
+ <tr class="parity{parity}">
+ <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
+ <td>{description}</td>
+ <td>{contact|obfuscate}</td>
+ <td class="age">{lastchange|age} ago</td>
+ <td class="indexlinks">
+ <a href="{url}rss-log">RSS</a>
+ <a href="{url}atom-log">Atom</a>
+ {archives%archiveentry}
+ </td>
+ </tr>'
+index = index.tmpl
+archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
+notfound = notfound.tmpl
+error = error.tmpl
+urlparameter = '{separator}{name}={value|urlescape}'
+hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/notfound.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,12 @@
+{header}
+<title>Mercurial repository not found</title>
+</head>
+<body>
+
+<h2>Mercurial repository not found</h2>
+
+The specified repository "{repo|escape}" is unknown, sorry.
+
+Please go back to the <a href="{url}">main repository list page</a>.
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/search.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,36 @@
+{header}
+<title>{repo|escape}: searching for {query|escape}</title>
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
+{archives%archiveentry}
+</div>
+
+<h2>searching for {query|escape}</h2>
+
+<form>
+{sessionvars%hiddenformentry}
+<p>
+search:
+<input name="rev" type="text" width="30" value="{query|escape}">
+</p>
+</form>
+
+{entries}
+
+<form>
+{sessionvars%hiddenformentry}
+<p>
+search:
+<input name="rev" type="text" width="30" value="{query|escape}">
+</p>
+</form>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/shortlog.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,43 @@
+{header}
+<title>{repo|escape}: shortlog</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-log" title="Atom feed for {repo|escape}">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-log" title="RSS feed for {repo|escape}">
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}tags{sessionvars%urlparameter}">tags</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
+{archives%archiveentry}
+<a type="application/rss+xml" href="{url}rss-log">rss</a>
+<a type="application/rss+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
+</div>
+
+<h2>shortlog for {repo|escape}</h2>
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search1">search:</label>
+<input name="rev" id="search1" type="text" size="30">
+navigate: <small class="navigate">{changenav%navshortentry}</small>
+</p>
+</form>
+
+{entries%shortlogentry}
+
+<form action="{url}log">
+{sessionvars%hiddenformentry}
+<p>
+<label for="search2">search:</label>
+<input name="rev" id="search2" type="text" size="30">
+navigate: <small class="navigate">{changenav%navshortentry}</small>
+</p>
+</form>
+
+{footer}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/shortlogentry.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,7 @@
+<table class="slogEntry parity{parity}">
+ <tr>
+ <td class="age">{date|age}</td>
+ <td class="author">{author|person}</td>
+ <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
+ </tr>
+</table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/spartan/tags.tmpl Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,26 @@
+{header}
+<title>{repo|escape}: tags</title>
+<link rel="alternate" type="application/atom+xml"
+ href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
+<link rel="alternate" type="application/rss+xml"
+ href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
+</head>
+<body>
+
+<div class="buttons">
+<a href="{url}log{sessionvars%urlparameter}">changelog</a>
+<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
+<a href="{url}graph{sessionvars%urlparameter}">graph</a>
+<a href="{url}branches{sessionvars%urlparameter}">branches</a>
+<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
+<a type="application/rss+xml" href="{url}rss-tags">rss</a>
+<a type="application/atom+xml" href="{url}atom-tags">atom</a>
+</div>
+
+<h2>tags:</h2>
+
+<ul id="tagEntries">
+{entries%tagentry}
+</ul>
+
+{footer}
Binary file mercurial/templates/static/background.png has changed
Binary file mercurial/templates/static/coal-file.png has changed
Binary file mercurial/templates/static/coal-folder.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/excanvas.js Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,19 @@
+if(!window.CanvasRenderingContext2D){(function(){var I=Math,i=I.round,L=I.sin,M=I.cos,m=10,A=m/2,Q={init:function(a){var b=a||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var c=this;b.attachEvent("onreadystatechange",function(){c.r(b)})}},r:function(a){if(a.readyState=="complete"){if(!a.namespaces["s"]){a.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var b=a.createStyleSheet();b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}";
+var c=a.getElementsByTagName("canvas");for(var d=0;d<c.length;d++){if(!c[d].getContext){this.initElement(c[d])}}}},q:function(a){var b=a.outerHTML,c=a.ownerDocument.createElement(b);if(b.slice(-2)!="/>"){var d="/"+a.tagName,e;while((e=a.nextSibling)&&e.tagName!=d){e.removeNode()}if(e){e.removeNode()}}a.parentNode.replaceChild(c,a);return c},initElement:function(a){a=this.q(a);a.getContext=function(){if(this.l){return this.l}return this.l=new K(this)};a.attachEvent("onpropertychange",V);a.attachEvent("onresize",
+W);var b=a.attributes;if(b.width&&b.width.specified){a.style.width=b.width.nodeValue+"px"}else{a.width=a.clientWidth}if(b.height&&b.height.specified){a.style.height=b.height.nodeValue+"px"}else{a.height=a.clientHeight}return a}};function V(a){var b=a.srcElement;switch(a.propertyName){case "width":b.style.width=b.attributes.width.nodeValue+"px";b.getContext().clearRect();break;case "height":b.style.height=b.attributes.height.nodeValue+"px";b.getContext().clearRect();break}}function W(a){var b=a.srcElement;
+if(b.firstChild){b.firstChild.style.width=b.clientWidth+"px";b.firstChild.style.height=b.clientHeight+"px"}}Q.init();var R=[];for(var E=0;E<16;E++){for(var F=0;F<16;F++){R[E*16+F]=E.toString(16)+F.toString(16)}}function J(){return[[1,0,0],[0,1,0],[0,0,1]]}function G(a,b){var c=J();for(var d=0;d<3;d++){for(var e=0;e<3;e++){var g=0;for(var h=0;h<3;h++){g+=a[d][h]*b[h][e]}c[d][e]=g}}return c}function N(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit=
+a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.d=a.d;b.e=a.e}function O(a){var b,c=1;a=String(a);if(a.substring(0,3)=="rgb"){var d=a.indexOf("(",3),e=a.indexOf(")",d+1),g=a.substring(d+1,e).split(",");b="#";for(var h=0;h<3;h++){b+=R[Number(g[h])]}if(g.length==4&&a.substr(3,1)=="a"){c=g[3]}}else{b=a}return[b,c]}function S(a){switch(a){case "butt":return"flat";case "round":return"round";
+case "square":default:return"square"}}function K(a){this.a=J();this.m=[];this.k=[];this.c=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=m*1;this.globalAlpha=1;this.canvas=a;var b=a.ownerDocument.createElement("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.overflow="hidden";b.style.position="absolute";a.appendChild(b);this.j=b;this.d=1;this.e=1}var j=K.prototype;j.clearRect=function(){this.j.innerHTML=
+"";this.c=[]};j.beginPath=function(){this.c=[]};j.moveTo=function(a,b){this.c.push({type:"moveTo",x:a,y:b});this.f=a;this.g=b};j.lineTo=function(a,b){this.c.push({type:"lineTo",x:a,y:b});this.f=a;this.g=b};j.bezierCurveTo=function(a,b,c,d,e,g){this.c.push({type:"bezierCurveTo",cp1x:a,cp1y:b,cp2x:c,cp2y:d,x:e,y:g});this.f=e;this.g=g};j.quadraticCurveTo=function(a,b,c,d){var e=this.f+0.6666666666666666*(a-this.f),g=this.g+0.6666666666666666*(b-this.g),h=e+(c-this.f)/3,l=g+(d-this.g)/3;this.bezierCurveTo(e,
+g,h,l,c,d)};j.arc=function(a,b,c,d,e,g){c*=m;var h=g?"at":"wa",l=a+M(d)*c-A,n=b+L(d)*c-A,o=a+M(e)*c-A,f=b+L(e)*c-A;if(l==o&&!g){l+=0.125}this.c.push({type:h,x:a,y:b,radius:c,xStart:l,yStart:n,xEnd:o,yEnd:f})};j.rect=function(a,b,c,d){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath()};j.strokeRect=function(a,b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.stroke()};j.fillRect=function(a,
+b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.fill()};j.createLinearGradient=function(a,b,c,d){var e=new H("gradient");return e};j.createRadialGradient=function(a,b,c,d,e,g){var h=new H("gradientradial");h.n=c;h.o=g;h.i.x=a;h.i.y=b;return h};j.drawImage=function(a,b){var c,d,e,g,h,l,n,o,f=a.runtimeStyle.width,k=a.runtimeStyle.height;a.runtimeStyle.width="auto";a.runtimeStyle.height="auto";var q=a.width,r=a.height;a.runtimeStyle.width=
+f;a.runtimeStyle.height=k;if(arguments.length==3){c=arguments[1];d=arguments[2];h=(l=0);n=(e=q);o=(g=r)}else if(arguments.length==5){c=arguments[1];d=arguments[2];e=arguments[3];g=arguments[4];h=(l=0);n=q;o=r}else if(arguments.length==9){h=arguments[1];l=arguments[2];n=arguments[3];o=arguments[4];c=arguments[5];d=arguments[6];e=arguments[7];g=arguments[8]}else{throw"Invalid number of arguments";}var s=this.b(c,d),t=[],v=10,w=10;t.push(" <g_vml_:group",' coordsize="',m*v,",",m*w,'"',' coordorigin="0,0"',
+' style="width:',v,";height:",w,";position:absolute;");if(this.a[0][0]!=1||this.a[0][1]){var x=[];x.push("M11='",this.a[0][0],"',","M12='",this.a[1][0],"',","M21='",this.a[0][1],"',","M22='",this.a[1][1],"',","Dx='",i(s.x/m),"',","Dy='",i(s.y/m),"'");var p=s,y=this.b(c+e,d),z=this.b(c,d+g),B=this.b(c+e,d+g);p.x=Math.max(p.x,y.x,z.x,B.x);p.y=Math.max(p.y,y.y,z.y,B.y);t.push("padding:0 ",i(p.x/m),"px ",i(p.y/m),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",x.join(""),", sizingmethod='clip');")}else{t.push("top:",
+i(s.y/m),"px;left:",i(s.x/m),"px;")}t.push(' ">','<g_vml_:image src="',a.src,'"',' style="width:',m*e,";"," height:",m*g,';"',' cropleft="',h/q,'"',' croptop="',l/r,'"',' cropright="',(q-h-n)/q,'"',' cropbottom="',(r-l-o)/r,'"'," />","</g_vml_:group>");this.j.insertAdjacentHTML("BeforeEnd",t.join(""))};j.stroke=function(a){var b=[],c=O(a?this.fillStyle:this.strokeStyle),d=c[0],e=c[1]*this.globalAlpha,g=10,h=10;b.push("<g_vml_:shape",' fillcolor="',d,'"',' filled="',Boolean(a),'"',' style="position:absolute;width:',
+g,";height:",h,';"',' coordorigin="0 0" coordsize="',m*g," ",m*h,'"',' stroked="',!a,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',d,'"',' path="');var l={x:null,y:null},n={x:null,y:null};for(var o=0;o<this.c.length;o++){var f=this.c[o];if(f.type=="moveTo"){b.push(" m ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="lineTo"){b.push(" l ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="close"){b.push(" x ")}else if(f.type=="bezierCurveTo"){b.push(" c ");
+var k=this.b(f.x,f.y),q=this.b(f.cp1x,f.cp1y),r=this.b(f.cp2x,f.cp2y);b.push(i(q.x),",",i(q.y),",",i(r.x),",",i(r.y),",",i(k.x),",",i(k.y))}else if(f.type=="at"||f.type=="wa"){b.push(" ",f.type," ");var k=this.b(f.x,f.y),s=this.b(f.xStart,f.yStart),t=this.b(f.xEnd,f.yEnd);b.push(i(k.x-this.d*f.radius),",",i(k.y-this.e*f.radius)," ",i(k.x+this.d*f.radius),",",i(k.y+this.e*f.radius)," ",i(s.x),",",i(s.y)," ",i(t.x),",",i(t.y))}if(k){if(l.x==null||k.x<l.x){l.x=k.x}if(n.x==null||k.x>n.x){n.x=k.x}if(l.y==
+null||k.y<l.y){l.y=k.y}if(n.y==null||k.y>n.y){n.y=k.y}}}b.push(' ">');if(typeof this.fillStyle=="object"){var v={x:"50%",y:"50%"},w=n.x-l.x,x=n.y-l.y,p=w>x?w:x;v.x=i(this.fillStyle.i.x/w*100+50)+"%";v.y=i(this.fillStyle.i.y/x*100+50)+"%";var y=[];if(this.fillStyle.p=="gradientradial"){var z=this.fillStyle.n/p*100,B=this.fillStyle.o/p*100-z}else{var z=0,B=100}var C={offset:null,color:null},D={offset:null,color:null};this.fillStyle.h.sort(function(T,U){return T.offset-U.offset});for(var o=0;o<this.fillStyle.h.length;o++){var u=
+this.fillStyle.h[o];y.push(u.offset*B+z,"% ",u.color,",");if(u.offset>C.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset<D.offset||D.offset==null){D.offset=u.offset;D.color=u.color}}y.pop();b.push("<g_vml_:fill",' color="',D.color,'"',' color2="',C.color,'"',' type="',this.fillStyle.p,'"',' focusposition="',v.x,", ",v.y,'"',' colors="',y.join(""),'"',' opacity="',e,'" />')}else if(a){b.push('<g_vml_:fill color="',d,'" opacity="',e,'" />')}else{b.push("<g_vml_:stroke",' opacity="',
+e,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',S(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',d,'" />')}b.push("</g_vml_:shape>");this.j.insertAdjacentHTML("beforeEnd",b.join(""));this.c=[]};j.fill=function(){this.stroke(true)};j.closePath=function(){this.c.push({type:"close"})};j.b=function(a,b){return{x:m*(a*this.a[0][0]+b*this.a[1][0]+this.a[2][0])-A,y:m*(a*this.a[0][1]+b*this.a[1][1]+this.a[2][1])-A}};j.save=function(){var a={};N(this,a);
+this.k.push(a);this.m.push(this.a);this.a=G(J(),this.a)};j.restore=function(){N(this.k.pop(),this);this.a=this.m.pop()};j.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];this.a=G(c,this.a)};j.rotate=function(a){var b=M(a),c=L(a),d=[[b,c,0],[-c,b,0],[0,0,1]];this.a=G(d,this.a)};j.scale=function(a,b){this.d*=a;this.e*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];this.a=G(c,this.a)};j.clip=function(){};j.arcTo=function(){};j.createPattern=function(){return new P};function H(a){this.p=a;this.n=0;this.o=
+0;this.h=[];this.i={x:0,y:0}}H.prototype.addColorStop=function(a,b){b=O(b);this.h.push({offset:1-a,color:b})};function P(){}G_vmlCanvasManager=Q;CanvasRenderingContext2D=K;CanvasGradient=H;CanvasPattern=P})()};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/graph.js Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,137 @@
+// branch_renderer.js - Rendering of branch DAGs on the client side
+//
+// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
+// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
+//
+// derived from code written by Scott James Remnant <scott@ubuntu.com>
+// Copyright 2005 Canonical Ltd.
+//
+// This software may be used and distributed according to the terms
+// of the GNU General Public License, incorporated herein by reference.
+
+var colors = [
+ [ 1.0, 0.0, 0.0 ],
+ [ 1.0, 1.0, 0.0 ],
+ [ 0.0, 1.0, 0.0 ],
+ [ 0.0, 1.0, 1.0 ],
+ [ 0.0, 0.0, 1.0 ],
+ [ 1.0, 0.0, 1.0 ]
+];
+
+function Graph() {
+
+ this.canvas = document.getElementById('graph');
+ if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
+ this.ctx = this.canvas.getContext('2d');
+ this.ctx.strokeStyle = 'rgb(0, 0, 0)';
+ this.ctx.fillStyle = 'rgb(0, 0, 0)';
+ this.cur = [0, 0];
+ this.line_width = 3;
+ this.bg = [0, 4];
+ this.cell = [2, 0];
+ this.columns = 0;
+ this.revlink = '';
+
+ this.scale = function(height) {
+ this.bg_height = height;
+ this.box_size = Math.floor(this.bg_height / 1.2);
+ this.cell_height = this.box_size;
+ }
+
+ function colorPart(num) {
+ num *= 255
+ num = num < 0 ? 0 : num;
+ num = num > 255 ? 255 : num;
+ var digits = Math.round(num).toString(16);
+ if (num < 16) {
+ return '0' + digits;
+ } else {
+ return digits;
+ }
+ }
+
+ this.setColor = function(color, bg, fg) {
+
+ // Set the colour.
+ //
+ // Picks a distinct colour based on an internal wheel; the bg
+ // parameter provides the value that should be assigned to the 'zero'
+ // colours and the fg parameter provides the multiplier that should be
+ // applied to the foreground colours.
+
+ color %= colors.length;
+ var red = (colors[color][0] * fg) || bg;
+ var green = (colors[color][1] * fg) || bg;
+ var blue = (colors[color][2] * fg) || bg;
+ red = Math.round(red * 255);
+ green = Math.round(green * 255);
+ blue = Math.round(blue * 255);
+ var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
+ this.ctx.strokeStyle = s;
+ this.ctx.fillStyle = s;
+ return s;
+
+ }
+
+ this.render = function(data) {
+
+ var backgrounds = '';
+ var nodedata = '';
+
+ for (var i in data) {
+
+ var parity = i % 2;
+ this.cell[1] += this.bg_height;
+ this.bg[1] += this.bg_height;
+
+ var cur = data[i];
+ var node = cur[1];
+ var edges = cur[2];
+ var fold = false;
+
+ for (var j in edges) {
+
+ line = edges[j];
+ start = line[0];
+ end = line[1];
+ color = line[2];
+
+ if (end > this.columns || start > this.columns) {
+ this.columns += 1;
+ }
+
+ if (start == this.columns && start > end) {
+ var fold = true;
+ }
+
+ x0 = this.cell[0] + this.box_size * start + this.box_size / 2;
+ y0 = this.bg[1] - this.bg_height / 2;
+ x1 = this.cell[0] + this.box_size * end + this.box_size / 2;
+ y1 = this.bg[1] + this.bg_height / 2;
+
+ this.edge(x0, y0, x1, y1, color);
+
+ }
+
+ // Draw the revision node in the right column
+
+ column = node[0]
+ color = node[1]
+
+ radius = this.box_size / 8;
+ x = this.cell[0] + this.box_size * column + this.box_size / 2;
+ y = this.bg[1] - this.bg_height / 2;
+ var add = this.vertex(x, y, color, parity, cur);
+ backgrounds += add[0];
+ nodedata += add[1];
+
+ if (fold) this.columns -= 1;
+
+ }
+
+ document.getElementById('nodebgs').innerHTML += backgrounds;
+ document.getElementById('graphnodes').innerHTML += nodedata;
+
+ }
+
+}
Binary file mercurial/templates/static/hgicon.png has changed
Binary file mercurial/templates/static/hglogo.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/style-coal.css Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,265 @@
+body {
+ margin: 0;
+ padding: 0;
+ background: black url(background.png) repeat-x;
+ font-family: sans-serif;
+}
+
+.container {
+ padding-right: 150px;
+}
+
+.main {
+ position: relative;
+ background: white;
+ padding: 2em;
+ border-right: 15px solid black;
+ border-bottom: 15px solid black;
+}
+
+#.main {
+ width: 98%;
+}
+
+.overflow {
+ width: 100%;
+ overflow: auto;
+}
+
+.menu {
+ background: #999;
+ padding: 10px;
+ width: 75px;
+ margin: 0;
+ font-size: 80%;
+ text-align: left;
+ position: fixed;
+ top: 27px;
+ left: auto;
+ right: 27px;
+}
+
+#.menu {
+ position: absolute !important;
+ top:expression(eval(document.body.scrollTop + 27));
+}
+
+.menu ul {
+ list-style: none;
+ padding: 0;
+ margin: 10px 0 0 0;
+}
+
+.menu li {
+ margin-bottom: 3px;
+ padding: 2px 4px;
+ background: white;
+ color: black;
+ font-weight: normal;
+}
+
+.menu li.active {
+ background: black;
+ color: white;
+}
+
+.menu img {
+ width: 75px;
+ height: 90px;
+ border: 0;
+}
+
+.menu a { color: black; display: block; }
+
+.search {
+ position: absolute;
+ top: .7em;
+ right: 2em;
+}
+
+form.search div#hint {
+ display: none;
+ position: absolute;
+ top: 40px;
+ right: 0px;
+ width: 190px;
+ padding: 5px;
+ background: #ffc;
+ font-size: 70%;
+ border: 1px solid yellow;
+ -moz-border-radius: 5px; /* this works only in camino/firefox */
+ -webkit-border-radius: 5px; /* this is just for Safari */
+}
+
+form.search:hover div#hint { display: block; }
+
+a { text-decoration:none; }
+.age { white-space:nowrap; }
+.date { white-space:nowrap; }
+.indexlinks { white-space:nowrap; }
+.parity0 { background-color: #f0f0f0; }
+.parity1 { background-color: white; }
+.plusline { color: green; }
+.minusline { color: #dc143c; } /* crimson */
+.atline { color: purple; }
+
+.navigate {
+ text-align: right;
+ font-size: 60%;
+ margin: 1em 0;
+}
+
+.tag {
+ color: #999;
+ font-size: 70%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+.branchhead {
+ color: #000;
+ font-size: 80%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+ul#graphnodes .branchhead {
+ font-size: 75%;
+}
+
+.branchname {
+ color: #000;
+ font-size: 60%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+h3 .branchname {
+ font-size: 80%;
+}
+
+/* Common */
+pre { margin: 0; }
+
+h2 { font-size: 120%; border-bottom: 1px solid #999; }
+h2 a { color: #000; }
+h3 {
+ margin-top: -.7em;
+ font-size: 100%;
+}
+
+/* log and tags tables */
+.bigtable {
+ border-bottom: 1px solid #999;
+ border-collapse: collapse;
+ font-size: 90%;
+ width: 100%;
+ font-weight: normal;
+ text-align: left;
+}
+
+.bigtable td {
+ vertical-align: top;
+}
+
+.bigtable th {
+ padding: 1px 4px;
+ border-bottom: 1px solid #999;
+}
+.bigtable tr { border: none; }
+.bigtable .age { width: 6em; }
+.bigtable .author { width: 12em; }
+.bigtable .description { }
+.bigtable .node { width: 5em; font-family: monospace;}
+.bigtable .lineno { width: 2em; text-align: right;}
+.bigtable .lineno a { color: #999; font-size: smaller; font-family: monospace;}
+.bigtable .permissions { width: 8em; text-align: left;}
+.bigtable .size { width: 5em; text-align: right; }
+.bigtable .annotate { text-align: right; }
+.bigtable td.annotate { font-size: smaller; }
+.bigtable td.source { font-size: inherit; }
+
+.source, .sourcefirst, .sourcelast {
+ font-family: monospace;
+ white-space: pre;
+ padding: 1px 4px;
+ font-size: 90%;
+}
+.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; }
+.sourcelast { border-top: 1px solid #999; }
+.source a { color: #999; font-size: smaller; font-family: monospace;}
+.bottomline { border-bottom: 1px solid #999; }
+
+.fileline { font-family: monospace; }
+.fileline img { border: 0; }
+
+.tagEntry .closed { color: #99f; }
+
+/* Changeset entry */
+#changesetEntry {
+ border-collapse: collapse;
+ font-size: 90%;
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+#changesetEntry th {
+ padding: 1px 4px;
+ width: 4em;
+ text-align: right;
+ font-weight: normal;
+ color: #999;
+ margin-right: .5em;
+ vertical-align: top;
+}
+
+div.description {
+ border-left: 3px solid #999;
+ margin: 1em 0 1em 0;
+ padding: .3em;
+}
+
+/* Graph */
+div#wrapper {
+ position: relative;
+ border-top: 1px solid black;
+ border-bottom: 1px solid black;
+ margin: 0;
+ padding: 0;
+}
+
+canvas {
+ position: absolute;
+ z-index: 5;
+ top: -0.7em;
+ margin: 0;
+}
+
+ul#graphnodes {
+ position: absolute;
+ z-index: 10;
+ top: -1.0em;
+ list-style: none inside none;
+ padding: 0;
+}
+
+ul#nodebgs {
+ list-style: none inside none;
+ padding: 0;
+ margin: 0;
+ top: -0.7em;
+}
+
+ul#graphnodes li, ul#nodebgs li {
+ height: 39px;
+}
+
+ul#graphnodes li .info {
+ display: block;
+ font-size: 70%;
+ position: relative;
+ top: -3px;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/style-gitweb.css Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,123 @@
+body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
+a { color:#0000cc; }
+a:hover, a:visited, a:active { color:#880000; }
+div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
+div.page_header a:visited { color:#0000cc; }
+div.page_header a:hover { color:#880000; }
+div.page_nav { padding:8px; }
+div.page_nav a:visited { color:#0000cc; }
+div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
+div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
+div.page_footer_text { float:left; color:#555555; font-style:italic; }
+div.page_body { padding:8px; }
+div.title, a.title {
+ display:block; padding:6px 8px;
+ font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
+}
+a.title:hover { background-color: #d9d8d1; }
+div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
+div.log_body { padding:8px 8px 8px 150px; }
+.age { white-space:nowrap; }
+span.age { position:relative; float:left; width:142px; font-style:italic; }
+div.log_link {
+ padding:0px 8px;
+ font-size:10px; font-family:sans-serif; font-style:normal;
+ position:relative; float:left; width:136px;
+}
+div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
+a.list { text-decoration:none; color:#000000; }
+a.list:hover { text-decoration:underline; color:#880000; }
+table { padding:8px 4px; }
+th { padding:2px 5px; font-size:12px; text-align:left; }
+tr.light:hover, .parity0:hover { background-color:#edece6; }
+tr.dark, .parity1 { background-color:#f6f6f0; }
+tr.dark:hover, .parity1:hover { background-color:#edece6; }
+td { padding:2px 5px; font-size:12px; vertical-align:top; }
+td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
+td.indexlinks { white-space: nowrap; }
+td.indexlinks a {
+ padding: 2px 5px; line-height: 10px;
+ border: 1px solid;
+ color: #ffffff; background-color: #7777bb;
+ border-color: #aaaadd #333366 #333366 #aaaadd;
+ font-weight: bold; text-align: center; text-decoration: none;
+ font-size: 10px;
+}
+td.indexlinks a:hover { background-color: #6666aa; }
+div.pre { font-family:monospace; font-size:12px; white-space:pre; }
+div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
+div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
+div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
+.linenr { color:#999999; text-decoration:none }
+div.rss_logo { float: right; white-space: nowrap; }
+div.rss_logo a {
+ padding:3px 6px; line-height:10px;
+ border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
+ color:#ffffff; background-color:#ff6600;
+ font-weight:bold; font-family:sans-serif; font-size:10px;
+ text-align:center; text-decoration:none;
+}
+div.rss_logo a:hover { background-color:#ee5500; }
+pre { margin: 0; }
+span.logtags span {
+ padding: 0px 4px;
+ font-size: 10px;
+ font-weight: normal;
+ border: 1px solid;
+ background-color: #ffaaff;
+ border-color: #ffccff #ff00ee #ff00ee #ffccff;
+}
+span.logtags span.tagtag {
+ background-color: #ffffaa;
+ border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
+}
+span.logtags span.branchtag {
+ background-color: #aaffaa;
+ border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
+}
+span.logtags span.inbranchtag {
+ background-color: #d5dde6;
+ border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
+}
+
+/* Graph */
+div#wrapper {
+ position: relative;
+ margin: 0;
+ padding: 0;
+ margin-top: 3px;
+}
+
+canvas {
+ position: absolute;
+ z-index: 5;
+ top: -0.9em;
+ margin: 0;
+}
+
+ul#nodebgs {
+ list-style: none inside none;
+ padding: 0;
+ margin: 0;
+ top: -0.7em;
+}
+
+ul#graphnodes li, ul#nodebgs li {
+ height: 39px;
+}
+
+ul#graphnodes {
+ position: absolute;
+ z-index: 10;
+ top: -0.8em;
+ list-style: none inside none;
+ padding: 0;
+}
+
+ul#graphnodes li .info {
+ display: block;
+ font-size: 100%;
+ position: relative;
+ top: -3px;
+ font-style: italic;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/style-monoblue.css Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,472 @@
+/*** Initial Settings ***/
+* {
+ margin: 0;
+ padding: 0;
+ font-weight: normal;
+ font-style: normal;
+}
+
+html {
+ font-size: 100%;
+ font-family: sans-serif;
+}
+
+body {
+ font-size: 77%;
+ margin: 15px 50px;
+ background: #4B4B4C;
+}
+
+a {
+ color:#0000cc;
+ text-decoration: none;
+}
+/*** end of Initial Settings ***/
+
+
+/** common settings **/
+div#container {
+ background: #FFFFFF;
+ position: relative;
+ color: #666;
+}
+
+div.page-header {
+ padding: 50px 20px 0;
+ background: #006699 top left repeat-x;
+ position: relative;
+}
+ div.page-header h1 {
+ margin: 10px 0 30px;
+ font-size: 1.8em;
+ font-weight: bold;
+ font-family: osaka,'MS P Gothic', Georgia, serif;
+ letter-spacing: 1px;
+ color: #DDD;
+ }
+ div.page-header h1 a {
+ font-weight: bold;
+ color: #FFF;
+ }
+ div.page-header a {
+ text-decoration: none;
+ }
+
+ div.page-header form {
+ position: absolute;
+ margin-bottom: 2px;
+ bottom: 0;
+ right: 20px;
+ }
+ div.page-header form label {
+ color: #DDD;
+ }
+ div.page-header form input {
+ padding: 2px;
+ border: solid 1px #DDD;
+ }
+ div.page-header form dl {
+ overflow: hidden;
+ }
+ div.page-header form dl dt {
+ font-size: 1.2em;
+ }
+ div.page-header form dl dt,
+ div.page-header form dl dd {
+ margin: 0 0 0 5px;
+ float: left;
+ height: 24px;
+ line-height: 20px;
+ }
+
+ ul.page-nav {
+ margin: 10px 0 0 0;
+ list-style-type: none;
+ overflow: hidden;
+ width: 800px;
+ }
+ ul.page-nav li {
+ margin: 0 2px 0 0;
+ float: left;
+ width: 80px;
+ height: 24px;
+ font-size: 1.1em;
+ line-height: 24px;
+ text-align: center;
+ }
+ ul.page-nav li.current {
+ background: #FFF;
+ }
+ ul.page-nav li a {
+ height: 24px;
+ color: #666;
+ background: #DDD;
+ display: block;
+ text-decoration: none;
+ }
+ ul.page-nav li a:hover {
+ color:#333;
+ background: #FFF;
+ }
+
+ul.submenu {
+ margin: 10px 0 -10px 20px;
+ list-style-type: none;
+}
+ul.submenu li {
+ margin: 0 10px 0 0;
+ font-size: 1.2em;
+ display: inline;
+}
+
+h2 {
+ margin: 20px 0 10px;
+ height: 30px;
+ line-height: 30px;
+ text-indent: 20px;
+ background: #FFF;
+ font-size: 1.2em;
+ border-top: dotted 1px #D5E1E6;
+ font-weight: bold;
+}
+h2.no-link {
+ color:#006699;
+}
+h2.no-border {
+ color: #FFF;
+ background: #006699;
+ border: 0;
+}
+h2 a {
+ font-weight:bold;
+ color:#006699;
+}
+
+div.page-path {
+ text-align: right;
+ padding: 20px 30px 10px 0;
+ border:solid #d9d8d1;
+ border-width:0px 0px 1px;
+ font-size: 1.2em;
+}
+
+div.page-footer {
+ margin: 50px 0 0;
+ position: relative;
+}
+ div.page-footer p {
+ position: relative;
+ left: 20px;
+ bottom: 5px;
+ font-size: 1.2em;
+ }
+
+ ul.rss-logo {
+ position: absolute;
+ top: -10px;
+ right: 20px;
+ height: 20px;
+ list-style-type: none;
+ }
+ ul.rss-logo li {
+ display: inline;
+ }
+ ul.rss-logo li a {
+ padding: 3px 6px;
+ line-height: 10px;
+ border:1px solid;
+ border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
+ color:#ffffff;
+ background-color:#ff6600;
+ font-weight:bold;
+ font-family:sans-serif;
+ font-size:10px;
+ text-align:center;
+ text-decoration:none;
+ }
+ div.rss-logo li a:hover {
+ background-color:#ee5500;
+ }
+
+p.normal {
+ margin: 20px 0 20px 30px;
+ font-size: 1.2em;
+}
+
+table {
+ margin: 10px 0 0 20px;
+ width: 95%;
+ border-collapse: collapse;
+}
+table tr td {
+ font-size: 1.1em;
+}
+table tr td.nowrap {
+ white-space: nowrap;
+}
+/*
+table tr.parity0:hover,
+table tr.parity1:hover {
+ background: #D5E1E6;
+}
+*/
+table tr.parity0 {
+ background: #F1F6F7;
+}
+table tr.parity1 {
+ background: #FFFFFF;
+}
+table tr td {
+ padding: 5px 5px;
+}
+table.annotated tr td {
+ padding: 0px 5px;
+}
+
+span.logtags span {
+ padding: 2px 6px;
+ font-weight: normal;
+ font-size: 11px;
+ border: 1px solid;
+ background-color: #ffaaff;
+ border-color: #ffccff #ff00ee #ff00ee #ffccff;
+}
+span.logtags span.tagtag {
+ background-color: #ffffaa;
+ border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
+}
+span.logtags span.branchtag {
+ background-color: #aaffaa;
+ border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
+}
+span.logtags span.inbranchtag {
+ background-color: #d5dde6;
+ border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
+}
+
+div.diff pre {
+ margin: 10px 0 0 0;
+}
+div.diff pre span {
+ font-family: monospace;
+ white-space: pre;
+ font-size: 1.2em;
+ padding: 3px 0;
+}
+td.source {
+ white-space: pre;
+ font-family: monospace;
+ margin: 10px 30px 0;
+ font-size: 1.2em;
+ font-family: monospace;
+}
+ div.source div.parity0,
+ div.source div.parity1 {
+ padding: 1px;
+ font-size: 1.2em;
+ }
+ div.source div.parity0 {
+ background: #F1F6F7;
+ }
+ div.source div.parity1 {
+ background: #FFFFFF;
+ }
+div.parity0:hover,
+div.parity1:hover {
+ background: #D5E1E6;
+}
+.linenr {
+ color: #999;
+ text-align: right;
+}
+.lineno {
+ text-align: right;
+}
+.lineno a {
+ color: #999;
+}
+td.linenr {
+ width: 60px;
+}
+
+div#powered-by {
+ position: absolute;
+ width: 75px;
+ top: 15px;
+ right: 20px;
+ font-size: 1.2em;
+}
+div#powered-by a {
+ color: #EEE;
+ text-decoration: none;
+}
+div#powered-by a:hover {
+ text-decoration: underline;
+}
+/*
+div#monoblue-corner-top-left {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 10px;
+ height: 10px;
+ background: url(./monoblue-corner.png) top left no-repeat !important;
+ background: none;
+}
+div#monoblue-corner-top-right {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 10px;
+ height: 10px;
+ background: url(./monoblue-corner.png) top right no-repeat !important;
+ background: none;
+}
+div#monoblue-corner-bottom-left {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 10px;
+ height: 10px;
+ background: url(./monoblue-corner.png) bottom left no-repeat !important;
+ background: none;
+}
+div#monoblue-corner-bottom-right {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ width: 10px;
+ height: 10px;
+ background: url(./monoblue-corner.png) bottom right no-repeat !important;
+ background: none;
+}
+*/
+/** end of common settings **/
+
+/** summary **/
+dl.overview {
+ margin: 0 0 0 30px;
+ font-size: 1.1em;
+ overflow: hidden;
+}
+ dl.overview dt,
+ dl.overview dd {
+ margin: 5px 0;
+ float: left;
+ }
+ dl.overview dt {
+ clear: left;
+ font-weight: bold;
+ width: 150px;
+ }
+/** end of summary **/
+
+/** chagelog **/
+h3.changelog {
+ margin: 20px 0 5px 30px;
+ padding: 0 0 2px;
+ font-size: 1.4em;
+ border-bottom: dotted 1px #D5E1E6;
+}
+ul.changelog-entry {
+ margin: 0 0 10px 30px;
+ list-style-type: none;
+ position: relative;
+}
+ul.changelog-entry li span.revdate {
+ font-size: 1.1em;
+}
+ul.changelog-entry li.age {
+ position: absolute;
+ top: -25px;
+ right: 10px;
+ font-size: 1.4em;
+ color: #CCC;
+ font-weight: bold;
+ font-style: italic;
+}
+ul.changelog-entry li span.name {
+ font-size: 1.2em;
+ font-weight: bold;
+}
+ul.changelog-entry li.description {
+ margin: 10px 0 0;
+ font-size: 1.1em;
+}
+/** end of changelog **/
+
+/** file **/
+p.files {
+ margin: 0 0 0 20px;
+ font-size: 2.0em;
+ font-weight: bold;
+}
+/** end of file **/
+
+/** changeset **/
+h3.changeset {
+ margin: 20px 0 5px 20px;
+ padding: 0 0 2px;
+ font-size: 1.6em;
+ border-bottom: dotted 1px #D5E1E6;
+}
+p.changeset-age {
+ position: relative;
+}
+p.changeset-age span {
+ position: absolute;
+ top: -25px;
+ right: 10px;
+ font-size: 1.4em;
+ color: #CCC;
+ font-weight: bold;
+ font-style: italic;
+}
+p.description {
+ margin: 10px 30px 0 30px;
+ padding: 10px;
+ border: solid 1px #CCC;
+ font-size: 1.2em;
+}
+/** end of changeset **/
+
+/** canvas **/
+div#wrapper {
+ position: relative;
+ font-size: 1.2em;
+}
+
+canvas {
+ position: absolute;
+ z-index: 5;
+ top: -0.7em;
+}
+
+ul#nodebgs li.parity0 {
+ background: #F1F6F7;
+}
+
+ul#nodebgs li.parity1 {
+ background: #FFFFFF;
+}
+
+ul#graphnodes {
+ position: absolute;
+ z-index: 10;
+ top: 7px;
+ list-style: none inside none;
+}
+
+ul#nodebgs {
+ list-style: none inside none;
+}
+
+ul#graphnodes li, ul#nodebgs li {
+ height: 39px;
+}
+
+ul#graphnodes li .info {
+ display: block;
+ position: relative;
+}
+/** end of canvas **/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/style-paper.css Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,254 @@
+body {
+ margin: 0;
+ padding: 0;
+ background: white;
+ font-family: sans-serif;
+}
+
+.container {
+ padding-left: 115px;
+}
+
+.main {
+ position: relative;
+ background: white;
+ padding: 2em 2em 2em 0;
+}
+
+#.main {
+ width: 98%;
+}
+
+.overflow {
+ width: 100%;
+ overflow: auto;
+}
+
+.menu {
+ width: 90px;
+ margin: 0;
+ font-size: 80%;
+ text-align: left;
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ right: auto;
+}
+
+.menu ul {
+ list-style: none;
+ padding: 0;
+ margin: 10px 0 0 0;
+ border-left: 2px solid #999;
+}
+
+.menu li {
+ margin-bottom: 3px;
+ padding: 2px 4px;
+ background: white;
+ color: black;
+ font-weight: normal;
+}
+
+.menu li.active {
+ font-weight: bold;
+}
+
+.menu img {
+ width: 75px;
+ height: 90px;
+ border: 0;
+}
+
+.menu a { color: black; display: block; }
+
+.search {
+ position: absolute;
+ top: .7em;
+ right: 2em;
+}
+
+form.search div#hint {
+ display: none;
+ position: absolute;
+ top: 40px;
+ right: 0px;
+ width: 190px;
+ padding: 5px;
+ background: #ffc;
+ font-size: 70%;
+ border: 1px solid yellow;
+ -moz-border-radius: 5px; /* this works only in camino/firefox */
+ -webkit-border-radius: 5px; /* this is just for Safari */
+}
+
+form.search:hover div#hint { display: block; }
+
+a { text-decoration:none; }
+.age { white-space:nowrap; }
+.date { white-space:nowrap; }
+.indexlinks { white-space:nowrap; }
+.parity0 { background-color: #f0f0f0; }
+.parity1 { background-color: white; }
+.plusline { color: green; }
+.minusline { color: #dc143c; } /* crimson */
+.atline { color: purple; }
+
+.navigate {
+ text-align: right;
+ font-size: 60%;
+ margin: 1em 0;
+}
+
+.tag {
+ color: #999;
+ font-size: 70%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+.branchhead {
+ color: #000;
+ font-size: 80%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+ul#graphnodes .branchhead {
+ font-size: 75%;
+}
+
+.branchname {
+ color: #000;
+ font-size: 60%;
+ font-weight: normal;
+ margin-left: .5em;
+ vertical-align: baseline;
+}
+
+h3 .branchname {
+ font-size: 80%;
+}
+
+/* Common */
+pre { margin: 0; }
+
+h2 { font-size: 120%; border-bottom: 1px solid #999; }
+h2 a { color: #000; }
+h3 {
+ margin-top: -.7em;
+ font-size: 100%;
+}
+
+/* log and tags tables */
+.bigtable {
+ border-bottom: 1px solid #999;
+ border-collapse: collapse;
+ font-size: 90%;
+ width: 100%;
+ font-weight: normal;
+ text-align: left;
+}
+
+.bigtable td {
+ vertical-align: top;
+}
+
+.bigtable th {
+ padding: 1px 4px;
+ border-bottom: 1px solid #999;
+}
+.bigtable tr { border: none; }
+.bigtable .age { width: 7em; }
+.bigtable .author { width: 12em; }
+.bigtable .description { }
+.bigtable .node { width: 5em; font-family: monospace;}
+.bigtable .permissions { width: 8em; text-align: left;}
+.bigtable .size { width: 5em; text-align: right; }
+.bigtable .annotate { text-align: right; }
+.bigtable td.annotate { font-size: smaller; }
+.bigtable td.source { font-size: inherit; }
+
+.source, .sourcefirst, .sourcelast {
+ font-family: monospace;
+ white-space: pre;
+ padding: 1px 4px;
+ font-size: 90%;
+}
+.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; }
+.sourcelast { border-top: 1px solid #999; }
+.source a { color: #999; font-size: smaller; font-family: monospace;}
+.bottomline { border-bottom: 1px solid #999; }
+
+.fileline { font-family: monospace; }
+.fileline img { border: 0; }
+
+.tagEntry .closed { color: #99f; }
+
+/* Changeset entry */
+#changesetEntry {
+ border-collapse: collapse;
+ font-size: 90%;
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+#changesetEntry th {
+ padding: 1px 4px;
+ width: 4em;
+ text-align: right;
+ font-weight: normal;
+ color: #999;
+ margin-right: .5em;
+ vertical-align: top;
+}
+
+div.description {
+ border-left: 2px solid #999;
+ margin: 1em 0 1em 0;
+ padding: .3em;
+}
+
+/* Graph */
+div#wrapper {
+ position: relative;
+ border-top: 1px solid black;
+ border-bottom: 1px solid black;
+ margin: 0;
+ padding: 0;
+}
+
+canvas {
+ position: absolute;
+ z-index: 5;
+ top: -0.7em;
+ margin: 0;
+}
+
+ul#graphnodes {
+ position: absolute;
+ z-index: 10;
+ top: -1.0em;
+ list-style: none inside none;
+ padding: 0;
+}
+
+ul#nodebgs {
+ list-style: none inside none;
+ padding: 0;
+ margin: 0;
+ top: -0.7em;
+}
+
+ul#graphnodes li, ul#nodebgs li {
+ height: 39px;
+}
+
+ul#graphnodes li .info {
+ display: block;
+ font-size: 70%;
+ position: relative;
+ top: -3px;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/static/style.css Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,105 @@
+a { text-decoration:none; }
+.age { white-space:nowrap; }
+.date { white-space:nowrap; }
+.indexlinks { white-space:nowrap; }
+.parity0 { background-color: #ddd; }
+.parity1 { background-color: #eee; }
+.lineno { width: 60px; color: #aaa; font-size: smaller;
+ text-align: right; }
+.plusline { color: green; }
+.minusline { color: red; }
+.atline { color: purple; }
+.annotate { font-size: smaller; text-align: right; padding-right: 1em; }
+.buttons a {
+ background-color: #666;
+ padding: 2pt;
+ color: white;
+ font-family: sans;
+ font-weight: bold;
+}
+.navigate a {
+ background-color: #ccc;
+ padding: 2pt;
+ font-family: sans;
+ color: black;
+}
+
+.metatag {
+ background-color: #888;
+ color: white;
+ text-align: right;
+}
+
+/* Common */
+pre { margin: 0; }
+
+.logo {
+ float: right;
+ clear: right;
+}
+
+/* Changelog/Filelog entries */
+.logEntry { width: 100%; }
+.logEntry .age { width: 15%; }
+.logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
+.logEntry th.age, .logEntry th.firstline { font-weight: bold; }
+.logEntry th.firstline { text-align: left; width: inherit; }
+
+/* Shortlog entries */
+.slogEntry { width: 100%; }
+.slogEntry .age { width: 8em; }
+.slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
+.slogEntry td.author { width: 15em; }
+
+/* Tag entries */
+#tagEntries { list-style: none; margin: 0; padding: 0; }
+#tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
+
+/* Changeset entry */
+#changesetEntry { }
+#changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
+#changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
+
+/* File diff view */
+#filediffEntry { }
+#filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
+
+/* Graph */
+div#wrapper {
+ position: relative;
+ margin: 0;
+ padding: 0;
+}
+
+canvas {
+ position: absolute;
+ z-index: 5;
+ top: -0.6em;
+ margin: 0;
+}
+
+ul#nodebgs {
+ list-style: none inside none;
+ padding: 0;
+ margin: 0;
+ top: -0.7em;
+}
+
+ul#graphnodes li, ul#nodebgs li {
+ height: 39px;
+}
+
+ul#graphnodes {
+ position: absolute;
+ z-index: 10;
+ top: -0.85em;
+ list-style: none inside none;
+ padding: 0;
+}
+
+ul#graphnodes li .info {
+ display: block;
+ font-size: 70%;
+ position: relative;
+ top: -1px;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/templates/template-vars.txt Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,37 @@
+repo the name of the repo
+rev a changeset.manifest revision
+node a changeset node
+changesets total number of changesets
+file a filename
+filerev a file revision
+filerevs total number of file revisions
+up the directory of the relevant file
+path a path in the manifest, starting with "/"
+basename a short pathname
+date a date string
+age age in hours, days, etc
+line a line of text (escaped)
+desc a description (escaped, with breaks)
+shortdesc a short description (escaped)
+author a name or email addressv(obfuscated)
+parent a list of the parent
+child a list of the children
+tags a list of tag
+
+header the global page header
+footer the global page footer
+
+files a list of file links
+file_copies a list of pairs of name, source filenames
+dirs a set of directory links
+diff a diff of one or more files
+annotate an annotated file
+entries the entries relevant to the page
+
+Templates and commands:
+ changelog(rev) - a page for browsing changesets
+ naventry - a link for jumping to a changeset number
+ filenodelink - jump to file diff
+ fileellipses - printed after maxfiles
+ changelogentry - an entry in the log
+ manifest - browse a manifest as a directory tree
--- a/mercurial/ui.py Thu Dec 10 12:31:21 2009 +0100
+++ b/mercurial/ui.py Thu Dec 10 12:31:57 2009 +0100
@@ -29,8 +29,11 @@
self._ocfg = src._ocfg.copy()
self._trustusers = src._trustusers.copy()
self._trustgroups = src._trustgroups.copy()
+ self.environ = src.environ
self.fixconfig()
else:
+ # shared read-only environment
+ self.environ = os.environ
# we always trust global config files
for f in util.rcpath():
self.readconfig(f, trust=True)
--- a/setup.py Thu Dec 10 12:31:21 2009 +0100
+++ b/setup.py Thu Dec 10 12:31:57 2009 +0100
@@ -44,7 +44,7 @@
# simplified version of distutils.ccompiler.CCompiler.has_function
# that actually removes its temporary files.
-def has_function(cc, funcname):
+def hasfunction(cc, funcname):
tmpdir = tempfile.mkdtemp(prefix='hg-install-')
devnull = oldstderr = None
try:
@@ -165,13 +165,7 @@
except ImportError:
version = 'unknown'
-class install_package_data(install_data):
- def finalize_options(self):
- self.set_undefined_options('install',
- ('install_lib', 'install_dir'))
- install_data.finalize_options(self)
-
-class build_mo(build):
+class hgbuildmo(build):
description = "build translations (.mo files)"
@@ -193,22 +187,23 @@
pofile = join(podir, po)
modir = join('locale', po[:-3], 'LC_MESSAGES')
mofile = join(modir, 'hg.mo')
- cmd = ['msgfmt', '-v', '-o', mofile, pofile]
+ mobuildfile = join('mercurial', mofile)
+ cmd = ['msgfmt', '-v', '-o', mobuildfile, pofile]
if sys.platform != 'sunos5':
# msgfmt on Solaris does not know about -c
cmd.append('-c')
- self.mkpath(modir)
- self.make_file([pofile], mofile, spawn, (cmd,))
- self.distribution.data_files.append((join('mercurial', modir),
- [mofile]))
+ self.mkpath(join('mercurial', modir))
+ self.make_file([pofile], mobuildfile, spawn, (cmd,))
-build.sub_commands.append(('build_mo', None))
+# Insert hgbuildmo first so that files in mercurial/locale/ are found
+# when build_py is run next.
+build.sub_commands.insert(0, ('build_mo', None))
Distribution.pure = 0
Distribution.global_options.append(('pure', None, "use pure (slow) Python "
"code instead of C extensions"))
-class hg_build_py(build_py):
+class hgbuildpy(build_py):
def finalize_options(self):
build_py.finalize_options(self)
@@ -230,11 +225,10 @@
else:
yield module
-cmdclass = {'install_data': install_package_data,
- 'build_mo': build_mo,
- 'build_py': hg_build_py}
+cmdclass = {'build_mo': hgbuildmo,
+ 'build_py': hgbuildpy}
-ext_modules=[
+extmodules = [
Extension('mercurial.base85', ['mercurial/base85.c']),
Extension('mercurial.bdiff', ['mercurial/bdiff.c']),
Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c']),
@@ -250,18 +244,35 @@
# The inotify extension is only usable with Linux 2.6 kernels.
# You also need a reasonably recent C library.
cc = new_compiler()
- if has_function(cc, 'inotify_add_watch'):
- ext_modules.append(Extension('hgext.inotify.linux._inotify',
+ if hasfunction(cc, 'inotify_add_watch'):
+ extmodules.append(Extension('hgext.inotify.linux._inotify',
['hgext/inotify/linux/_inotify.c']))
packages.extend(['hgext.inotify', 'hgext.inotify.linux'])
-datafiles = []
-for root in ('templates', 'i18n', 'help'):
- for dir, dirs, files in os.walk(root):
- dirs[:] = [x for x in dirs if not x.startswith('.')]
- files = [x for x in files if not x.startswith('.')]
- datafiles.append((os.path.join('mercurial', dir),
- [os.path.join(dir, file_) for file_ in files]))
+packagedata = {'mercurial': ['locale/*/LC_MESSAGES/hg.mo',
+ 'help/*.txt']}
+
+def ordinarypath(p):
+ return p and p[0] != '.' and p[-1] != '~'
+
+for root in ('templates', ):
+ for curdir, dirs, files in os.walk(os.path.join('mercurial', root)):
+ curdir = curdir.split(os.sep, 1)[1]
+ dirs[:] = filter(ordinarypath, dirs)
+ for f in filter(ordinarypath, files):
+ f = os.path.join(curdir, f)
+ packagedata['mercurial'].append(f)
+
+datafiles = [
+ ('share/bash_completion.d', ['contrib/bash/hg']),
+ ('share/zsh/site-functions', ['contrib/zsh/_hg']),
+ ('share/mercurial/www', ['hgweb.cgi',
+ 'hgwebdir.cgi',
+ 'contrib/hgwebdir.fcgi',
+ 'contrib/hgwebdir.wsgi']),
+ ('share/mercurial/examples', ['contrib/sample.hgrc',
+ 'contrib/mergetools.hgrc']),
+]
setup(name='mercurial',
version=version,
@@ -272,8 +283,9 @@
license='GNU GPL',
scripts=scripts,
packages=packages,
- ext_modules=ext_modules,
+ ext_modules=extmodules,
data_files=datafiles,
+ package_data=packagedata,
cmdclass=cmdclass,
options=dict(py2exe=dict(packages=['hgext', 'email']),
bdist_mpkg=dict(zipdist=True,
--- a/templates/atom/changelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-{header}
- <!-- Changelog -->
- <id>{urlbase}{url}</id>
- <link rel="self" href="{urlbase}{url}atom-log"/>
- <link rel="alternate" href="{urlbase}{url}"/>
- <title>{repo|escape} Changelog</title>
- {latestentry%feedupdated}
-
-{entries%changelogentry}
-</feed>
--- a/templates/atom/changelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
- <entry>
- <title>{desc|strip|firstline|strip|escape|nonempty}</title>
- <id>{urlbase}{url}#changeset-{node}</id>
- <link href="{urlbase}{url}rev/{node|short}"/>
- <author>
- <name>{author|person|escape}</name>
- <email>{author|email|obfuscate}</email>
- </author>
- <updated>{date|rfc3339date}</updated>
- <published>{date|rfc3339date}</published>
- <content type="xhtml">
- <div xmlns="http://www.w3.org/1999/xhtml">
- <pre xml:space="preserve">{desc|escape|nonempty}</pre>
- </div>
- </content>
- </entry>
--- a/templates/atom/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-{header}
- <!-- Error -->
- <id>{urlbase}{url}</id>
- <link rel="self" href="{urlbase}{url}atom-log"/>
- <link rel="alternate" href="{urlbase}{url}"/>
- <title>Error</title>
- <updated>1970-01-01T00:00:00+00:00</updated>
- <entry>
- <title>Error</title>
- <id>http://mercurial.selenic.com/#error</id>
- <author>
- <name>mercurial</name>
- </author>
- <updated>1970-01-01T00:00:00+00:00</updated>
- <content type="text">{error|escape}</content>
- </entry>
-</feed>
--- a/templates/atom/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{header}
- <id>{urlbase}{url}atom-log/tip/{file|escape}</id>
- <link rel="self" href="{urlbase}{url}atom-log/tip/{file|urlescape}"/>
- <title>{repo|escape}: {file|escape} history</title>
- {latestentry%feedupdated}
-
-{entries%changelogentry}
-</feed>
--- a/templates/atom/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="{encoding}"?>
-<feed xmlns="http://www.w3.org/2005/Atom">
\ No newline at end of file
--- a/templates/atom/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-default = 'changelog'
-feedupdated = '<updated>{date|rfc3339date}</updated>'
-mimetype = 'application/atom+xml; charset={encoding}'
-header = header.tmpl
-changelog = changelog.tmpl
-changelogentry = changelogentry.tmpl
-filelog = filelog.tmpl
-filelogentry = filelogentry.tmpl
-tags = tags.tmpl
-tagentry = tagentry.tmpl
-error = error.tmpl
--- a/templates/atom/tagentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
- <entry>
- <title>{tag|escape}</title>
- <link rel="alternate" href="{urlbase}{url}rev/{node|short}"/>
- <id>{urlbase}{url}#tag-{node}</id>
- <updated>{date|rfc3339date}</updated>
- <published>{date|rfc3339date}</published>
- <content type="text">{tag|strip|escape}</content>
- </entry>
--- a/templates/atom/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-{header}
- <id>{urlbase}{url}</id>
- <link rel="self" href="{urlbase}{url}atom-tags"/>
- <link rel="alternate" href="{urlbase}{url}tags"/>
- <title>{repo|escape}: tags</title>
- <summary>{repo|escape} tag history</summary>
- <author><name>Mercurial SCM</name></author>
- {latestentry%feedupdated}
-
-{entriesnotip%tagentry}
-</feed>
--- a/templates/coal/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
-<head>
-<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
-<meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="{staticurl}style-coal.css" type="text/css" />
--- a/templates/coal/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-default = 'shortlog'
-
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = ../paper/footer.tmpl
-search = ../paper/search.tmpl
-
-changelog = ../paper/shortlog.tmpl
-shortlog = ../paper/shortlog.tmpl
-shortlogentry = ../paper/shortlogentry.tmpl
-graph = ../paper/graph.tmpl
-
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
-filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenolink = '{file|escape} '
-fileellipses = '...'
-changelogentry = ../paper/shortlogentry.tmpl
-searchentry = ../paper/shortlogentry.tmpl
-changeset = ../paper/changeset.tmpl
-manifest = ../paper/manifest.tmpl
-
-direntry = '
- <tr class="fileline parity{parity}">
- <td class="name">
- <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
- <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
- </a>
- <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
- {emptydirs|escape}
- </a>
- </td>
- <td class="size"></td>
- <td class="permissions">drwxr-xr-x</td>
- </tr>'
-
-fileentry = '
- <tr class="fileline parity{parity}">
- <td class="filename">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
- </a>
- </td>
- <td class="size">{size}</td>
- <td class="permissions">{permissions|permissions}</td>
- </tr>'
-
-filerevision = ../paper/filerevision.tmpl
-fileannotate = ../paper/fileannotate.tmpl
-filediff = ../paper/filediff.tmpl
-filelog = ../paper/filelog.tmpl
-fileline = '
- <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
-filelogentry = ../paper/filelogentry.tmpl
-
-annotateline = '
- <tr class="parity{parity}">
- <td class="annotate">
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
- </td>
- <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
- </tr>'
-
-diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
-difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
-difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
-difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
-diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
-
-changelogparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-
-changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
-
-filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
-filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
-
-filerename = '{file|escape}@'
-filelogrename = '
- <tr>
- <th>base:</th>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {file|escape}@{node|short}
- </a>
- </td>
- </tr>'
-fileannotateparent = '
- <tr>
- <td class="metatag">parent:</td>
- <td>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
-changelogchild = '
- <tr>
- <th class="child">child</th>
- <td class="child">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
- {node|short}
- </a>
- </td>
- </tr>'
-fileannotatechild = '
- <tr>
- <td class="metatag">child:</td>
- <td>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {node|short}
- </a>
- </td>
- </tr>'
-tags = ../paper/tags.tmpl
-tagentry = '
- <tr class="tagEntry parity{parity}">
- <td>
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
- {tag|escape}
- </a>
- </td>
- <td class="node">
- {node|short}
- </td>
- </tr>'
-branches = ../paper/branches.tmpl
-branchentry = '
- <tr class="tagEntry parity{parity}">
- <td>
- <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
- {branch|escape}
- </a>
- </td>
- <td class="node">
- {node|short}
- </td>
- </tr>'
-changelogtag = '<span class="tag">{name|escape}</span> '
-changesettag = '<span class="tag">{tag|escape}</span> '
-changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
-changelogbranchname = '<span class="branchname">{name|escape}</span> '
-
-filediffparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filelogparent = '
- <tr>
- <th>parent {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filediffchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-filelogchild = '
- <tr>
- <th>child {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-
-indexentry = '
- <tr class="parity{parity}">
- <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
- <td>{description}</td>
- <td>{contact|obfuscate}</td>
- <td class="age">{lastchange|age} ago</td>
- <td class="indexlinks">{archives%indexarchiveentry}</td>
- </tr>\n'
-indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>'
-index = ../paper/index.tmpl
-archiveentry = '
- <li>
- <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
- </li>'
-notfound = ../paper/notfound.tmpl
-error = ../paper/error.tmpl
-urlparameter = '{separator}{name}={value|urlescape}'
-hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- a/templates/gitweb/branches.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-{header}
-<title>{repo|escape}: Branches</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / branches
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-branches |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-<br/>
-</div>
-
-<div class="title"> </div>
-<table cellspacing="0">
-{entries%branchentry}
-</table>
-
-{footer}
--- a/templates/gitweb/changelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-{header}
-<title>{repo|escape}: Changelog</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog
-</div>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<div class="search">
-<input type="text" name="rev" />
-</div>
-</form>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
-changelog |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
-<br/>
-{changenav%naventry}<br/>
-</div>
-
-{entries%changelogentry}
-
-<div class="page_nav">
-{changenav%naventry}<br/>
-</div>
-
-{footer}
--- a/templates/gitweb/changelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<div>
-<a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}"><span class="age">{date|age}</span>{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
-</div>
-<div class="title_text">
-<div class="log_link">
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a><br/>
-</div>
-<i>{author|obfuscate} [{date|rfc822date}] rev {rev}</i><br/>
-</div>
-<div class="log_body">
-{desc|strip|escape|addbreaks|nonempty}
-<br/>
-<br/>
-</div>
--- a/templates/gitweb/changeset.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-{header}
-<title>{repo|escape}: changeset {rev}:{node|short}</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changeset
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a> |
-changeset |
-<a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}<br/>
-</div>
-
-<div>
-<a class="title" href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a>
-</div>
-<div class="title_text">
-<table cellspacing="0">
-<tr><td>author</td><td>{author|obfuscate}</td></tr>
-<tr><td></td><td>{date|date} ({date|age})</td></tr>
-{branch%changesetbranch}
-<tr><td>changeset {rev}</td><td style="font-family:monospace">{node|short}</td></tr>
-{parent%changesetparent}
-{child%changesetchild}
-</table></div>
-
-<div class="page_body">
-{desc|strip|escape|addbreaks|nonempty}
-</div>
-<div class="list_head"></div>
-<div class="title_text">
-<table cellspacing="0">
-{files}
-</table></div>
-
-<div class="page_body">{diff}</div>
-
-{footer}
--- a/templates/gitweb/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-{header}
-<title>{repo|escape}: Error</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / error
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> | <a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> | <a href="{url}log{sessionvars%urlparameter}">changelog</a> | <a href="{url}tags{sessionvars%urlparameter}">tags</a> | <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a><br/>
-</div>
-
-<div class="page_body">
-<br/>
-<i>An error occurred while processing your request</i><br/>
-<br/>
-{error|escape}
-</div>
-
-{footer}
--- a/templates/gitweb/fileannotate.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
-annotate |
-<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
-<a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a><br/>
-</div>
-
-<div class="title">{file|escape}</div>
-
-<div class="title_text">
-<table cellspacing="0">
-<tr>
- <td>author</td>
- <td>{author|obfuscate}</td></tr>
-<tr>
- <td></td>
- <td>{date|date} ({date|age})</td></tr>
-{branch%filerevbranch}
-<tr>
- <td>changeset {rev}</td>
- <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
-{parent%fileannotateparent}
-{child%fileannotatechild}
-<tr>
- <td>permissions</td>
- <td style="font-family:monospace">{permissions|permissions}</td></tr>
-</table>
-</div>
-
-<div class="page_path">
-{desc|strip|escape|addbreaks|nonempty}
-</div>
-<div class="page_body">
-<table>
-{annotate%annotateline}
-</table>
-</div>
-
-{footer}
--- a/templates/gitweb/filediff.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-{header}
-<title>{repo|escape}: diff {file|escape}</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / diff
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
-diff |
-<a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a><br/>
-</div>
-
-<div class="title">{file|escape}</div>
-
-<table>
-{branch%filerevbranch}
-<tr>
- <td>changeset {rev}</td>
- <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
-{parent%filediffparent}
-{child%filediffchild}
-</table>
-
-<div class="list_head"></div>
-
-<div class="page_body">
-{diff}
-</div>
-
-{footer}
--- a/templates/gitweb/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-{header}
-<title>{repo|escape}: File revisions</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
-revisions |
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
-<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
-<a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a>
-<br/>
-{nav%filenaventry}
-</div>
-
-<div class="title" >{file|urlescape}</div>
-
-<table>
-{entries%filelogentry}
-</table>
-
-<div class="page_nav">
-{nav%filenaventry}
-</div>
-
-{footer}
--- a/templates/gitweb/filerevision.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape}@{node|short}</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a> |
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
-file |
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
-<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
-<a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a><br/>
-</div>
-
-<div class="title">{file|escape}</div>
-
-<div class="title_text">
-<table cellspacing="0">
-<tr>
- <td>author</td>
- <td>{author|obfuscate}</td></tr>
-<tr>
- <td></td>
- <td>{date|date} ({date|age})</td></tr>
-{branch%filerevbranch}
-<tr>
- <td>changeset {rev}</td>
- <td style="font-family:monospace"><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
-{parent%filerevparent}
-{child%filerevchild}
-<tr>
- <td>permissions</td>
- <td style="font-family:monospace">{permissions|permissions}</td></tr>
-</table>
-</div>
-
-<div class="page_path">
-{desc|strip|escape|addbreaks|nonempty}
-</div>
-
-<div class="page_body">
-{text%fileline}
-</div>
-
-{footer}
--- a/templates/gitweb/footer.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<div class="page_footer">
-<div class="page_footer_text">{repo|escape}</div>
-<div class="rss_logo">
-<a href="{url}rss-log">RSS</a>
-<a href="{url}atom-log">Atom</a>
-</div>
-<br />
-{motd}
-</div>
-</body>
-</html>
--- a/templates/gitweb/graph.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-{header}
-<title>{repo|escape}: Graph</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph
-</div>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<div class="search">
-<input type="text" name="rev" />
-</div>
-</form>
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
-graph |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-<br/>
-<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
-<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
-| {changenav%navgraphentry}<br/>
-</div>
-
-<div class="title"> </div>
-
-<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
-
-<div id="wrapper">
-<ul id="nodebgs"></ul>
-<canvas id="graph" width="224" height="{canvasheight}"></canvas>
-<ul id="graphnodes"></ul>
-</div>
-
-<script type="text/javascript" src="{staticurl}graph.js"></script>
-<script>
-<!-- hide script content
-
-var data = {jsdata|json};
-var graph = new Graph();
-graph.scale({bg_height});
-
-graph.edge = function(x0, y0, x1, y1, color) {
-
- this.setColor(color, 0.0, 0.65);
- this.ctx.beginPath();
- this.ctx.moveTo(x0, y0);
- this.ctx.lineTo(x1, y1);
- this.ctx.stroke();
-
-}
-
-var revlink = '<li style="_STYLE"><span class="desc">';
-revlink += '<a class="list" href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID"><b>_DESC</b></a>';
-revlink += '</span> _TAGS';
-revlink += '<span class="info">_DATE ago, by _USER</span></li>';
-
-graph.vertex = function(x, y, color, parity, cur) {
-
- this.ctx.beginPath();
- color = this.setColor(color, 0.25, 0.75);
- this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
- this.ctx.fill();
-
- var bg = '<li class="bg parity' + parity + '"></li>';
- var left = (this.columns + 1) * this.bg_height;
- var nstyle = 'padding-left: ' + left + 'px;';
- var item = revlink.replace(/_STYLE/, nstyle);
- item = item.replace(/_PARITY/, 'parity' + parity);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_DESC/, cur[3]);
- item = item.replace(/_USER/, cur[4]);
- item = item.replace(/_DATE/, cur[5]);
-
- var tagspan = '';
- if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
- tagspan = '<span class="logtags">';
- if (cur[6][1]) {
- tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- } else if (!cur[6][1] && cur[6][0] != 'default') {
- tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- }
- if (cur[7].length) {
- for (var t in cur[7]) {
- var tag = cur[7][t];
- tagspan += '<span class="tagtag">' + tag + '</span> ';
- }
- }
- tagspan += '</span>';
- }
-
- item = item.replace(/_TAGS/, tagspan);
- return [bg, item];
-
-}
-
-graph.render(data);
-
-// stop hiding script -->
-</script>
-
-<div class="page_nav">
-<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
-<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
-| {changenav%navgraphentry}
-</div>
-
-{footer}
--- a/templates/gitweb/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="{encoding}"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
-<head>
-<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
-<meta name="robots" content="index, nofollow"/>
-<link rel="stylesheet" href="{staticurl}style-gitweb.css" type="text/css" />
-
--- a/templates/gitweb/index.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{header}
-<title>Mercurial repositories index</title>
-</head>
-<body>
-
-<div class="page_header">
- <a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a>
- Repositories list
-</div>
-
-<table cellspacing="0">
- <tr>
- <td><a href="?sort={sort_name}">Name</a></td>
- <td><a href="?sort={sort_description}">Description</a></td>
- <td><a href="?sort={sort_contact}">Contact</a></td>
- <td><a href="?sort={sort_lastchange}">Last change</a></td>
- <td> </td>
- <td> </td>
- </tr>
- {entries%indexentry}
-</table>
-<div class="page_footer">
-{motd}
-</div>
-</body>
-</html>
--- a/templates/gitweb/manifest.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-{header}
-<title>{repo|escape}: files</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-files |
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry}<br/>
-</div>
-
-<div class="title">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></div>
-<table cellspacing="0">
-<tr class="parity{upparity}">
-<td style="font-family:monospace">drwxr-xr-x</td>
-<td style="font-family:monospace"></td>
-<td style="font-family:monospace"></td>
-<td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
-<td class="link"> </td>
-</tr>
-{dentries%direntry}
-{fentries%fileentry}
-</table>
-
-{footer}
--- a/templates/gitweb/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-default = 'summary'
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = footer.tmpl
-search = search.tmpl
-changelog = changelog.tmpl
-summary = summary.tmpl
-error = error.tmpl
-notfound = notfound.tmpl
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
-filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenodelink = '
- <tr class="parity{parity}">
- <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
- <td></td>
- <td class="link">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
- </td>
- </tr>'
-filenolink = '
- <tr class="parity{parity}">
- <td><a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
- <td></td>
- <td class="link">
- file |
- annotate |
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
- </td>
- </tr>'
-fileellipses = '...'
-changelogentry = changelogentry.tmpl
-searchentry = changelogentry.tmpl
-changeset = changeset.tmpl
-manifest = manifest.tmpl
-direntry = '
- <tr class="parity{parity}">
- <td style="font-family:monospace">drwxr-xr-x</td>
- <td style="font-family:monospace"></td>
- <td style="font-family:monospace"></td>
- <td>
- <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
- <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">{emptydirs|escape}</a>
- </td>
- <td class="link">
- <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-fileentry = '
- <tr class="parity{parity}">
- <td style="font-family:monospace">{permissions|permissions}</td>
- <td style="font-family:monospace" align=right>{date|isodate}</td>
- <td style="font-family:monospace" align=right>{size}</td>
- <td class="list">
- <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>
- </td>
- <td class="link">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
- </td>
- </tr>'
-filerevision = filerevision.tmpl
-fileannotate = fileannotate.tmpl
-filediff = filediff.tmpl
-filelog = filelog.tmpl
-fileline = '
- <div style="font-family:monospace" class="parity{parity}">
- <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
- </div>'
-annotateline = '
- <tr style="font-family:monospace" class="parity{parity}">
- <td class="linenr" style="text-align: right;">
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
- </td>
- <td><pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a></pre></td>
- <td><pre>{line|escape}</pre></td>
- </tr>'
-difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-changelogparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-changesetbranch = '<tr><td>branch</td><td>{name}</td></tr>'
-changesetparent = '
- <tr>
- <td>parent {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-filerevbranch = '<tr><td>branch</td><td>{name}</td></tr>'
-filerevparent = '
- <tr>
- <td>parent {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-filerename = '{file|escape}@'
-filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
-fileannotateparent = '
- <tr>
- <td>parent {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-changelogchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-changesetchild = '
- <tr>
- <td>child {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-filerevchild = '
- <tr>
- <td>child {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-fileannotatechild = '
- <tr>
- <td>child {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-tags = tags.tmpl
-tagentry = '
- <tr class="parity{parity}">
- <td class="age"><i>{date|age}</i></td>
- <td><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}"><b>{tag|escape}</b></a></td>
- <td class="link">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-branches = branches.tmpl
-branchentry = '
- <tr class="parity{parity}">
- <td class="age"><i>{date|age}</i></td>
- <td><a class="list" href="{url}shortlog/{node|short}{sessionvars%urlparameter}"><b>{node|short}</b></a></td>
- <td class="{status}">{branch|escape}</td>
- <td class="link">
- <a href="{url}changeset/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-diffblock = '<pre>{lines}</pre>'
-filediffparent = '
- <tr>
- <td>parent {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {node|short}
- </a>
- </td>
- </tr>'
-filelogparent = '
- <tr>
- <td align="right">parent {rev}: </td>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filediffchild = '
- <tr>
- <td>child {rev}</td>
- <td style="font-family:monospace">
- <a class="list" href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-filelogchild = '
- <tr>
- <td align="right">child {rev}: </td>
- <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-shortlog = shortlog.tmpl
-graph = graph.tmpl
-tagtag = '<span class="tagtag" title="{name}">{name}</span> '
-branchtag = '<span class="branchtag" title="{name}">{name}</span> '
-inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
-shortlogentry = '
- <tr class="parity{parity}">
- <td class="age"><i>{date|age}</i></td>
- <td><i>{author|person}</i></td>
- <td>
- <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
- <b>{desc|strip|firstline|escape|nonempty}</b>
- <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span>
- </a>
- </td>
- <td class="link" nowrap>
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-filelogentry = '
- <tr class="parity{parity}">
- <td class="age"><i>{date|age}</i></td>
- <td>
- <a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">
- <b>{desc|strip|firstline|escape|nonempty}</b>
- </a>
- </td>
- <td class="link">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> | <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> | <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> {rename%filelogrename}</td>
- </tr>'
-archiveentry = ' | <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
-indexentry = '
- <tr class="parity{parity}">
- <td>
- <a class="list" href="{url}{sessionvars%urlparameter}">
- <b>{name|escape}</b>
- </a>
- </td>
- <td>{description}</td>
- <td>{contact|obfuscate}</td>
- <td class="age">{lastchange|age}</td>
- <td class="indexlinks">{archives%indexarchiveentry}</td>
- <td><div class="rss_logo"><a href="{url}rss-log">RSS</a> <a href="{url}atom-log">Atom</a></div></td>
- </tr>\n'
-indexarchiveentry = ' <a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
-index = index.tmpl
-urlparameter = '{separator}{name}={value|urlescape}'
-hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- a/templates/gitweb/notfound.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-{header}
-<title>Mercurial repository not found</title>
-</head>
-
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a> Not found: {repo|escape}
-</div>
-
-<div class="page_body">
-The specified repository "{repo|escape}" is unknown, sorry.
-<br/>
-<br/>
-Please go back to the <a href="{url}">main repository list page</a>.
-</div>
-
-{footer}
--- a/templates/gitweb/search.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-{header}
-<title>{repo|escape}: Search</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<div class="search">
-<input type="text" name="rev" value="{query|escape}" />
-</div>
-</form>
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
-<br/>
-</div>
-
-<div class="title">searching for {query|escape}</div>
-
-{entries}
-
-{footer}
--- a/templates/gitweb/shortlog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-{header}
-<title>{repo|escape}: Shortlog</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog
-</div>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<div class="search">
-<input type="text" name="rev" />
-</div>
-</form>
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-shortlog |
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
-<br/>
-{changenav%navshortentry}<br/>
-</div>
-
-<div class="title"> </div>
-<table cellspacing="0">
-{entries%shortlogentry}
-</table>
-
-<div class="page_nav">
-{changenav%navshortentry}
-</div>
-
-{footer}
--- a/templates/gitweb/summary.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-{header}
-<title>{repo|escape}: Summary</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<div class="search">
-<input type="text" name="rev" />
-</div>
-</form>
-</div>
-
-<div class="page_nav">
-summary |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-<a href="{url}tags{sessionvars%urlparameter}">tags</a> |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
-<br/>
-</div>
-
-<div class="title"> </div>
-<table cellspacing="0">
-<tr><td>description</td><td>{desc}</td></tr>
-<tr><td>owner</td><td>{owner|obfuscate}</td></tr>
-<tr><td>last change</td><td>{lastchange|rfc822date}</td></tr>
-</table>
-
-<div><a class="title" href="{url}shortlog{sessionvars%urlparameter}">changes</a></div>
-<table cellspacing="0">
-{shortlog}
-<tr class="light"><td colspan="4"><a class="list" href="{url}shortlog{sessionvars%urlparameter}">...</a></td></tr>
-</table>
-
-<div><a class="title" href="{url}tags{sessionvars%urlparameter}">tags</a></div>
-<table cellspacing="0">
-{tags}
-<tr class="light"><td colspan="3"><a class="list" href="{url}tags{sessionvars%urlparameter}">...</a></td></tr>
-</table>
-
-<div><a class="title" href="#">branches</a></div>
-<table cellspacing="0">
-{branches%branchentry}
-<tr class="light">
- <td colspan="4"><a class="list" href="#">...</a></td>
-</tr>
-</table>
-{footer}
--- a/templates/gitweb/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-{header}
-<title>{repo|escape}: Tags</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}"/>
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://mercurial.selenic.com/" title="Mercurial" style="float: right;">Mercurial</a><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / tags
-</div>
-
-<div class="page_nav">
-<a href="{url}summary{sessionvars%urlparameter}">summary</a> |
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a> |
-<a href="{url}log{sessionvars%urlparameter}">changelog</a> |
-<a href="{url}graph{sessionvars%urlparameter}">graph</a> |
-tags |
-<a href="{url}branches{sessionvars%urlparameter}">branches</a> |
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-<br/>
-</div>
-
-<div class="title"> </div>
-<table cellspacing="0">
-{entries%tagentry}
-</table>
-
-{footer}
--- a/templates/map-cmdline.changelog Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-header = '{date|shortdate} {author|person} <{author|email}>\n\n'
-header_verbose = ''
-changeset = '\t* {files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\t[{node|short}]{tags}\n\n'
-changeset_quiet = '\t* {desc|firstline|fill68|tabindent|strip}\n\n'
-changeset_verbose = '{date|isodate} {author|person} <{author|email}> ({node|short}{tags})\n\n\t* {file_adds|stringify|fill68|tabindent}{file_dels|stringify|fill68|tabindent}{files|stringify|fill68|tabindent}{desc|fill68|tabindent|strip}\n\n'
-start_tags = ' ['
-tag = '{tag}, '
-last_tag = '{tag}]'
-file = '{file}, '
-last_file = '{file}:\n\t'
-file_add = '{file_add}, '
-last_file_add = '{file_add}: new file.\n* '
-file_del = '{file_del}, '
-last_file_del = '{file_del}: deleted file.\n* '
--- a/templates/map-cmdline.compact Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-changeset = '{rev}{tags}{parents} {node|short} {date|isodate} {author|user}\n {desc|firstline|strip}\n\n'
-changeset_quiet = '{rev}:{node|short}\n'
-changeset_verbose = '{rev}{tags}{parents} {node|short} {date|isodate} {author}\n {desc|strip}\n\n'
-start_tags = '['
-tag = '{tag},'
-last_tag = '{tag}]'
-start_parents = ':'
-parent = '{rev},'
-last_parent = '{rev}'
--- a/templates/map-cmdline.default Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-changeset = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\nsummary: {desc|firstline}\n\n'
-changeset_quiet = '{rev}:{node|short}\n'
-changeset_verbose = 'changeset: {rev}:{node|short}\n{branches}{tags}{parents}user: {author}\ndate: {date|date}\n{files}{file_copies}description:\n{desc|strip}\n\n\n'
-changeset_debug = 'changeset: {rev}:{node}\n{branches}{tags}{parents}{manifest}user: {author}\ndate: {date|date}\n{file_mods}{file_adds}{file_dels}{file_copies}{extras}description:\n{desc|strip}\n\n\n'
-start_files = 'files: '
-file = ' {file}'
-end_files = '\n'
-start_file_mods = 'files: '
-file_mod = ' {file_mod}'
-end_file_mods = '\n'
-start_file_adds = 'files+: '
-file_add = ' {file_add}'
-end_file_adds = '\n'
-start_file_dels = 'files-: '
-file_del = ' {file_del}'
-end_file_dels = '\n'
-start_file_copies = 'copies: '
-file_copy = ' {name} ({source})'
-end_file_copies = '\n'
-parent = 'parent: {rev}:{node|formatnode}\n'
-manifest = 'manifest: {rev}:{node}\n'
-branch = 'branch: {branch}\n'
-tag = 'tag: {tag}\n'
-extra = 'extra: {key}={value|stringescape}\n'
--- a/templates/monoblue/branches.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-{header}
- <title>{repo|escape}: Branches</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Branches</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li class="current">branches</li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">tags</h2>
- <table cellspacing="0">
-{entries%branchentry}
- </table>
-
-{footer}
--- a/templates/monoblue/changelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-{header}
- <title>{repo|escape}: changelog</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / changelog</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li class="current">changelog</li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">changelog</h2>
- <div>
- {entries%changelogentry}
- </div>
-
- <div class="page-path">
-{changenav%naventry}
- </div>
-
-{footer}
--- a/templates/monoblue/changelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<h3 class="changelog"><a class="title" href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}<span class="logtags"> {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
-<ul class="changelog-entry">
- <li class="age">{date|age}</li>
- <li>by <span class="name">{author|obfuscate}</span> <span class="revdate">[{date|rfc822date}] rev {rev}</span></li>
- <li class="description">{desc|strip|escape|addbreaks|nonempty}</li>
-</ul>
--- a/templates/monoblue/changeset.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-{header}
-<title>{repo|escape}: changeset {rev}:{node|short}</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li class="current">changeset</li>
- <li><a href="{url}raw-rev/{node|short}">raw</a> {archives%archiveentry}</li>
- </ul>
-
- <h2 class="no-link no-border">changeset</h2>
-
- <h3 class="changeset"><a href="{url}raw-rev/{node|short}">{desc|strip|escape|firstline|nonempty} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></a></h3>
- <p class="changeset-age"><span>{date|age}</span></p>
-
- <dl class="overview">
- <dt>author</dt>
- <dd>{author|obfuscate}</dd>
- <dt>date</dt>
- <dd>{date|date}</dd>
- {branch%changesetbranch}
- <dt>changeset {rev}</dt>
- <dd>{node|short}</dd>
- {parent%changesetparent}
- {child%changesetchild}
- </dl>
-
- <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
-
- <table>
- {files}
- </table>
-
- <div class="diff">
- {diff}
- </div>
-
-{footer}
--- a/templates/monoblue/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-{header}
- <title>{repo|escape}: Error</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li class="current">summary</li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">An error occurred while processing your request</h2>
- <p class="normal">{error|escape}</p>
-
-{footer}
--- a/templates/monoblue/fileannotate.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape}@{node|short} (annotated)</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / annotate</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
- <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
- <li class="current">annotate</li>
- <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
- <li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
- </ul>
-
- <h2 class="no-link no-border">{file|escape}@{node|short} (annotated)</h2>
- <h3 class="changeset">{file|escape}</h3>
- <p class="changeset-age"><span>{date|age}</span></p>
-
- <dl class="overview">
- <dt>author</dt>
- <dd>{author|obfuscate}</dd>
- <dt>date</dt>
- <dd>{date|date}</dd>
- {branch%filerevbranch}
- <dt>changeset {rev}</dt>
- <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
- {parent%fileannotateparent}
- {child%fileannotatechild}
- <dt>permissions</dt>
- <dd>{permissions|permissions}</dd>
- </dl>
-
- <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
-
- <table class="annotated">
- {annotate%annotateline}
- </table>
-
-{footer}
--- a/templates/monoblue/filediff.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-{header}
-<title>{repo|escape}: diff {file|escape}</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file diff</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
- <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
- <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
- <li class="current">diff</li>
- <li><a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a></li>
- </ul>
-
- <h2 class="no-link no-border">diff: {file|escape}</h2>
- <h3 class="changeset">{file|escape}</h3>
-
- <dl class="overview">
- {branch%filerevbranch}
- <dt>changeset {rev}</dt>
- <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
- {parent%filediffparent}
- {child%filediffchild}
- </dl>
-
- <div class="diff">
- {diff}
- </div>
-
-{footer}
--- a/templates/monoblue/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-{header}
-<title>{repo|escape}: File revisions</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revisions</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
- <li class="current">revisions</li>
- <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
- <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
- <li><a href="{url}rss-log/{node|short}/{file|urlescape}">rss</a></li>
- </ul>
-
- <h2 class="no-link no-border">{file|urlescape}</h2>
-
- <table>
- {entries%filelogentry}
- </table>
-
- <div class="page-path">
- {nav%filenaventry}
- </div>
-
-{footer}
--- a/templates/monoblue/filerevision.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape}@{node|short}</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / file revision</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li class="current">file</li>
- <li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a></li>
- <li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
- <li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
- <li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
- </ul>
-
- <h2 class="no-link no-border">{file|escape}@{node|short}</h2>
- <h3 class="changeset">{file|escape}</h3>
- <p class="changeset-age"><span>{date|age}</span></p>
-
- <dl class="overview">
- <dt>author</dt>
- <dd>{author|obfuscate}</dd>
- <dt>date</dt>
- <dd>{date|date}</dd>
- {branch%filerevbranch}
- <dt>changeset {rev}</dt>
- <dd><a class="list" href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>
- {parent%filerevparent}
- {child%filerevchild}
- <dt>permissions</dt>
- <dd>{permissions|permissions}</dd>
- </dl>
-
- <p class="description">{desc|strip|escape|addbreaks|nonempty}</p>
-
- <div class="source">
- {text%fileline}
- </div>
-
-{footer}
--- a/templates/monoblue/footer.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
- <div class="page-footer">
- <p>Mercurial Repository: {repo|escape}</p>
- <ul class="rss-logo">
- <li><a href="{url}rss-log">RSS</a></li>
- <li><a href="{url}atom-log">Atom</a></li>
- </ul>
- {motd}
- </div>
-
- <div id="powered-by">
- <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
- </div>
-
- <div id="corner-top-left"></div>
- <div id="corner-top-right"></div>
- <div id="corner-bottom-left"></div>
- <div id="corner-bottom-right"></div>
-
-</div>
-
-</body>
-</html>
--- a/templates/monoblue/graph.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-{header}
- <title>{repo|escape}: graph</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
- <!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / graph</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li class="current">graph</li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">graph</h2>
-
- <div id="noscript">The revision graph only works with JavaScript-enabled browsers.</div>
- <div id="wrapper">
- <ul id="nodebgs"></ul>
- <canvas id="graph" width="224" height="{canvasheight}"></canvas>
- <ul id="graphnodes"></ul>
- </div>
-
- <script type="text/javascript" src="{staticurl}graph.js"></script>
- <script>
- <!-- hide script content
-
- document.getElementById('noscript').style.display = 'none';
-
- var data = {jsdata|json};
- var graph = new Graph();
- graph.scale({bg_height});
-
- graph.edge = function(x0, y0, x1, y1, color) {
-
- this.setColor(color, 0.0, 0.65);
- this.ctx.beginPath();
- this.ctx.moveTo(x0, y0);
- this.ctx.lineTo(x1, y1);
- this.ctx.stroke();
-
- }
-
- var revlink = '<li style="_STYLE"><span class="desc">';
- revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
- revlink += '</span>_TAGS<span class="info">_DATE ago, by _USER</span></li>';
-
- graph.vertex = function(x, y, color, parity, cur) {
-
- this.ctx.beginPath();
- color = this.setColor(color, 0.25, 0.75);
- this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
- this.ctx.fill();
-
- var bg = '<li class="bg parity' + parity + '"></li>';
- var left = (this.columns + 1) * this.bg_height;
- var nstyle = 'padding-left: ' + left + 'px;';
- var item = revlink.replace(/_STYLE/, nstyle);
- item = item.replace(/_PARITY/, 'parity' + parity);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_DESC/, cur[3]);
- item = item.replace(/_USER/, cur[4]);
- item = item.replace(/_DATE/, cur[5]);
-
- var tagspan = '';
- if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
- tagspan = '<span class="logtags">';
- if (cur[6][1]) {
- tagspan += '<span class="branchtag" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- } else if (!cur[6][1] && cur[6][0] != 'default') {
- tagspan += '<span class="inbranchtag" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- }
- if (cur[7].length) {
- for (var t in cur[7]) {
- var tag = cur[7][t];
- tagspan += '<span class="tagtag">' + tag + '</span> ';
- }
- }
- tagspan += '</span>';
- }
-
- item = item.replace(/_TAGS/, tagspan);
- return [bg, item];
-
- }
-
- graph.render(data);
-
- // stop hiding script -->
- </script>
-
- <div class="page-path">
- <a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
- <a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
- | {changenav%navgraphentry}
- </div>
-
-{footer}
--- a/templates/monoblue/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
- <link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
- <meta name="robots" content="index, nofollow"/>
- <link rel="stylesheet" href="{staticurl}style-monoblue.css" type="text/css" />
--- a/templates/monoblue/index.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-{header}
- <title>{repo|escape}: Mercurial repositories index</title>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1>Mercurial Repositories</h1>
- <ul class="page-nav">
- </ul>
- </div>
-
- <table cellspacing="0">
- <tr>
- <td><a href="?sort={sort_name}">Name</a></td>
- <td><a href="?sort={sort_description}">Description</a></td>
- <td><a href="?sort={sort_contact}">Contact</a></td>
- <td><a href="?sort={sort_lastchange}">Last change</a></td>
- <td> </td>
- <td> </td>
- </tr>
- {entries%indexentry}
- </table>
- <div class="page-footer">
- {motd}
- </div>
-
- <div id="powered-by">
- <p><a href="http://mercurial.selenic.com/" title="Mercurial"><img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a></p>
- </div>
-
- <div id="corner-top-left"></div>
- <div id="corner-top-right"></div>
- <div id="corner-bottom-left"></div>
- <div id="corner-bottom-right"></div>
-
-</div>
-</body>
-</html>
--- a/templates/monoblue/manifest.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-{header}
-<title>{repo|escape}: files</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / files</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li class="current">files</li>
- </ul>
- </div>
-
- <ul class="submenu">
- <li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> {archives%archiveentry}</li>
- {archives%archiveentry}
- </ul>
-
- <h2 class="no-link no-border">files</h2>
- <p class="files">{path|escape} <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span></p>
-
- <table>
- <tr class="parity{upparity}">
- <td>drwxr-xr-x</td>
- <td></td>
- <td></td>
- <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
- <td class="link"> </td>
- </tr>
- {dentries%direntry}
- {fentries%fileentry}
- </table>
-
-{footer}
--- a/templates/monoblue/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,214 +0,0 @@
-default = 'summary'
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = footer.tmpl
-search = search.tmpl
-changelog = changelog.tmpl
-summary = summary.tmpl
-error = error.tmpl
-notfound = notfound.tmpl
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
-filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenodelink = '
- <tr class="parity{parity}">
- <td><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
- <td></td>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
- </td>
- </tr>'
-filenolink = '
- <tr class="parity{parity}">
- <td>
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td><td></td><td>file |
- annotate |
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
- </td>
- </tr>'
-fileellipses = '...'
-changelogentry = changelogentry.tmpl
-searchentry = changelogentry.tmpl
-changeset = changeset.tmpl
-manifest = manifest.tmpl
-direntry = '
- <tr class="parity{parity}">
- <td>drwxr-xr-x</td>
- <td></td>
- <td></td>
- <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
- <td><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
- </tr>'
-fileentry = '
- <tr class="parity{parity}">
- <td>{permissions|permissions}</td>
- <td>{date|isodate}</td>
- <td>{size}</td>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
- <a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
- </td>
- </tr>'
-filerevision = filerevision.tmpl
-fileannotate = fileannotate.tmpl
-filediff = filediff.tmpl
-filelog = filelog.tmpl
-fileline = '
- <div style="font-family:monospace" class="parity{parity}">
- <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
- </div>'
-annotateline = '
- <tr class="parity{parity}">
- <td class="linenr">
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
- </td>
- <td class="lineno">
- <a href="#{lineid}" id="{lineid}">{linenumber}</a>
- </td>
- <td class="source">{line|escape}</td>
- </tr>'
-difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
-changelogparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-changesetbranch = '<dt>branch</dt><dd>{name}</dd>'
-changesetparent = '
- <dt>parent {rev}</dt>
- <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
-filerevbranch = '<dt>branch</dt><dd>{name}</dd>'
-filerevparent = '
- <dt>parent {rev}</dt>
- <dd>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </dd>'
-filerename = '{file|escape}@'
-filelogrename = '| <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
-fileannotateparent = '
- <dt>parent {rev}</dt>
- <dd>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </dd>'
-changelogchild = '
- <dt>child {rev}:</dt>
- <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
-changesetchild = '
- <dt>child {rev}</dt>
- <dd><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
-filerevchild = '
- <dt>child {rev}</dt>
- <dd>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
- </dd>'
-fileannotatechild = '
- <dt>child {rev}</dt>
- <dd>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
- </dd>'
-tags = tags.tmpl
-tagentry = '
- <tr class="parity{parity}">
- <td class="nowrap">{date|age}</td>
- <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
- <td class="nowrap">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-branches = branches.tmpl
-branchentry = '
- <tr class="parity{parity}">
- <td class="nowrap">{date|age}</td>
- <td><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- <td class="{status}">{branch|escape}</td>
- <td class="nowrap">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-diffblock = '<pre>{lines}</pre>'
-filediffparent = '
- <dt>parent {rev}</dt>
- <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
-filelogparent = '
- <tr>
- <td align="right">parent {rev}: </td>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filediffchild = '
- <dt>child {rev}</dt>
- <dd><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
-filelogchild = '
- <tr>
- <td align="right">child {rev}: </td>
- <td><a href="{url}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-shortlog = shortlog.tmpl
-tagtag = '<span class="tagtag" title="{name}">{name}</span> '
-branchtag = '<span class="branchtag" title="{name}">{name}</span> '
-inbranchtag = '<span class="inbranchtag" title="{name}">{name}</span> '
-shortlogentry = '
- <tr class="parity{parity}">
- <td class="nowrap">{date|age}</td>
- <td>{author|person}</td>
- <td>
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
- {desc|strip|firstline|escape|nonempty}
- <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}</span>
- </a>
- </td>
- <td class="nowrap">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
- <a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
- </td>
- </tr>'
-filelogentry = '
- <tr class="parity{parity}">
- <td class="nowrap">{date|age}</td>
- <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
- <td class="nowrap">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> | <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> | <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
- {rename%filelogrename}
- </td>
- </tr>'
-archiveentry = '<li><a href="{url}archive/{node|short}{extension}">{type|escape}</a></li>'
-indexentry = '
- <tr class="parity{parity}">
- <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
- <td>{description}</td>
- <td>{contact|obfuscate}</td>
- <td>{lastchange|age}</td>
- <td class="indexlinks">{archives%indexarchiveentry}</td>
- <td>
- <div class="rss_logo">
- <a href="{url}rss-log">RSS</a>
- <a href="{url}atom-log">Atom</a>
- </div>
- </td>
- </tr>\n'
-indexarchiveentry = '<a href="{url}archive/{node|short}{extension}">{type|escape}</a> '
-index = index.tmpl
-urlparameter = '{separator}{name}={value|urlescape}'
-hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
-graph = graph.tmpl
--- a/templates/monoblue/notfound.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-{header}
- <title>{repo|escape}: Mercurial repository not found</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Not found: {repo|escape}</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li class="current">summary</li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">Not Found</h2>
- <p class="normal">The specified repository "{repo|escape}" is unknown, sorry.</p>
- <p class="normal">Please go back to the <a href="{url}">main repository list page</a>.</p>
-
-{footer}
--- a/templates/monoblue/search.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-{header}
- <title>{repo|escape}: Search</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / search</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" value="{query|escape}" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}
- </ul>
- </div>
-
- <h2 class="no-link no-border">searching for {query|escape}</h2>
- {entries}
-
-{footer}
--- a/templates/monoblue/shortlog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-{header}
- <title>{repo|escape}: shortlog</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / shortlog</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li class="current">shortlog</li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>{archives%archiveentry}</li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">shortlog</h2>
-
- <table>
-{entries%shortlogentry}
- </table>
-
- <div class="page-path">
-{changenav%navshortentry}
- </div>
-
-{footer}
--- a/templates/monoblue/summary.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-{header}
- <title>{repo|escape}: Summary</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / summary</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li class="current">summary</li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}log{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">Mercurial Repository Overview</h2>
- <dl class="overview">
- <dt>name</dt>
- <dd>{repo|escape}</dd>
- <dt>description</dt>
- <dd>{desc}</dd>
- <dt>owner</dt>
- <dd>{owner|obfuscate}</dd>
- <dt>last change</dt>
- <dd>{lastchange|rfc822date}</dd>
- </dl>
-
- <h2><a href="{url}shortlog{sessionvars%urlparameter}">Changes</a></h2>
- <table>
-{shortlog}
- <tr class="light">
- <td colspan="4"><a class="list" href="{url}shortlog{sessionvars%urlparameter}">...</a></td>
- </tr>
- </table>
-
- <h2><a href="{url}tags{sessionvars%urlparameter}">Tags</a></h2>
- <table>
-{tags}
- <tr class="light">
- <td colspan="3"><a class="list" href="{url}tags{sessionvars%urlparameter}">...</a></td>
- </tr>
- </table>
-
- <h2 class="no-link">Branches</h2>
- <table>
- {branches%branchentry}
- <tr class="light">
- <td colspan="4"><a class="list" href="#">...</a></td>
- </tr>
- </table>
-{footer}
--- a/templates/monoblue/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-{header}
- <title>{repo|escape}: Tags</title>
- <link rel="alternate" type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}"/>
- <link rel="alternate" type="application/rss+xml" href="{url}rss-log" title="RSS feed for {repo|escape}"/>
-</head>
-
-<body>
-<div id="container">
- <div class="page-header">
- <h1><a href="{url}summary{sessionvars%urlparameter}">{repo|escape}</a> / Tags</h1>
-
- <form action="{url}log">
- {sessionvars%hiddenformentry}
- <dl class="search">
- <dt><label>Search: </label></dt>
- <dd><input type="text" name="rev" /></dd>
- </dl>
- </form>
-
- <ul class="page-nav">
- <li><a href="{url}summary{sessionvars%urlparameter}">summary</a></li>
- <li><a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a></li>
- <li><a href="{url}changelog{sessionvars%urlparameter}">changelog</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li class="current">tags</li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a></li>
- </ul>
- </div>
-
- <h2 class="no-link no-border">tags</h2>
- <table cellspacing="0">
-{entries%tagentry}
- </table>
-
-{footer}
--- a/templates/paper/branches.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-{header}
-<title>{repo|escape}: branches</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}: branches" />
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}: branches" />
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li class="active">branches</li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>branches</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<table class="bigtable">
-<tr>
- <th>branch</th>
- <th>node</th>
-</tr>
-{entries%branchentry}
-</table>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/changeset.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-{header}
-<title>{repo|escape}: {node|short}</title>
-</head>
-<body>
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
- <li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
- <li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
- <li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
- <li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
- <li class="active">changeset</li>
- <li><a href="{url}raw-rev/{node|short}{sessionvars%urlparameter}">raw</a></li>
- <li><a href="{url}file/{node|short}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
- {archives%archiveentry}
-</ul>
-</div>
-
-<div class="main">
-
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag}</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
-
-<table id="changesetEntry">
-<tr>
- <th class="author">author</th>
- <td class="author">{author|obfuscate}</td>
-</tr>
-<tr>
- <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td></tr>
-<tr>
- <th class="author">parents</th>
- <td class="author">{parent%changesetparent}</td>
-</tr>
-<tr>
- <th class="author">children</th>
- <td class="author">{child%changesetchild}</td>
-</tr>
-<tr>
- <th class="files">files</th>
- <td class="files">{files}</td>
-</tr>
-</table>
-
-<div class="overflow">
-<div class="sourcefirst"> line diff</div>
-
-{diff}
-</div>
-
-</div>
-</div>
-{footer}
--- a/templates/paper/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-{header}
-<title>{repo|escape}: error</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-</div>
-
-<div class="main">
-
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>error</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30"></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="description">
-<p>
-An error occurred while processing your request:
-</p>
-<p>
-{error|escape}
-</p>
-</div>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/fileannotate.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} annotate</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
-<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
-<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-<li class="active">annotate</li>
-<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
-<li><a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>annotate {file|escape} @ {rev}:{node|short}</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
-
-<table id="changesetEntry">
-<tr>
- <th class="author">author</th>
- <td class="author">{author|obfuscate}</td>
-</tr>
-<tr>
- <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
-</tr>
-<tr>
- <th class="author">parents</th>
- <td class="author">{parent%filerevparent}</td>
-</tr>
-<tr>
- <th class="author">children</th>
- <td class="author">{child%filerevchild}</td>
-</tr>
-{changesettag}
-</table>
-
-<div class="overflow">
-<table class="bigtable">
-<tr>
- <th class="annotate">rev</th>
- <th class="line"> line source</th>
-</tr>
-{annotate%annotateline}
-</table>
-</div>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/filediff.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} diff</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
-<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
-<li class="active">diff</li>
-<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
-<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>diff {file|escape} @ {rev}:{node|short}</h3>
-
-<form class="search" action="{url}log">
-<p>{sessionvars%hiddenformentry}</p>
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
-
-<table id="changesetEntry">
-<tr>
- <th>author</th>
- <td>{author|obfuscate}</td>
-</tr>
-<tr>
- <th>date</th>
- <td>{date|date} ({date|age})</td>
-</tr>
-<tr>
- <th>parents</th>
- <td>{parent%filerevparent}</td>
-</tr>
-<tr>
- <th>children</th>
- <td>{child%filerevchild}</td>
-</tr>
-{changesettag}
-</table>
-
-<div class="overflow">
-<div class="sourcefirst"> line diff</div>
-
-{diff}
-</div>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} history</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}" />
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}" />
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
-<li><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a></li>
-<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-<li class="active">file log</li>
-<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>log {file|escape}</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="navigate">{nav%filenaventry}</div>
-
-<table class="bigtable">
- <tr>
- <th class="age">age</th>
- <th class="author">author</th>
- <th class="description">description</th>
- </tr>
-{entries%filelogentry}
-</table>
-
-</div>
-</div>
-
-{footer}
--- a/templates/paper/filelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
- <tr class="parity{parity}">
- <td class="age">{date|age}</td>
- <td class="author">{author|person}</td>
- <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}</td>
- </tr>
--- a/templates/paper/filerevision.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-{header}
-<title>{repo|escape}: {node|short} {file|escape}</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
-<li class="active">file</li>
-<li><a href="{url}file/tip/{file|urlescape}{sessionvars%urlparameter}">latest</a></li>
-<li><a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a></li>
-<li><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a></li>
-<li><a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file log</a></li>
-<li><a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>view {file|escape} @ {rev}:{node|short}</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="description">{desc|strip|escape|addbreaks|nonempty}</div>
-
-<table id="changesetEntry">
-<tr>
- <th class="author">author</th>
- <td class="author">{author|obfuscate}</td>
-</tr>
-<tr>
- <th class="date">date</th>
- <td class="date">{date|date} ({date|age})</td>
-</tr>
-<tr>
- <th class="author">parents</th>
- <td class="author">{parent%filerevparent}</td>
-</tr>
-<tr>
- <th class="author">children</th>
- <td class="author">{child%filerevchild}</td>
-</tr>
-{changesettag}
-</table>
-
-<div class="overflow">
-<div class="sourcefirst"> line source</div>
-{text%fileline}
-<div class="sourcelast"></div>
-</div>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/footer.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +0,0 @@
-{motd}
-
-</body>
-</html>
--- a/templates/paper/graph.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-{header}
-<title>{repo|escape}: revision graph</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}: log" />
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}: log" />
-<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li class="active">graph</li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>graph</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="navigate">
-<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
-<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
-| rev {rev}: {changenav%navgraphentry}
-</div>
-
-<noscript><p>The revision graph only works with JavaScript-enabled browsers.</p></noscript>
-
-<div id="wrapper">
-<ul id="nodebgs"></ul>
-<canvas id="graph" width="224" height="{canvasheight}"></canvas>
-<ul id="graphnodes"></ul>
-</div>
-
-<script type="text/javascript" src="{staticurl}graph.js"></script>
-<script type="text/javascript">
-<!-- hide script content
-
-var data = {jsdata|json};
-var graph = new Graph();
-graph.scale({bg_height});
-
-graph.edge = function(x0, y0, x1, y1, color) {
-
- this.setColor(color, 0.0, 0.65);
- this.ctx.beginPath();
- this.ctx.moveTo(x0, y0);
- this.ctx.lineTo(x1, y1);
- this.ctx.stroke();
-
-}
-
-var revlink = '<li style="_STYLE"><span class="desc">';
-revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
-revlink += '</span>_TAGS<span class="info">_DATE ago, by _USER</span></li>';
-
-graph.vertex = function(x, y, color, parity, cur) {
-
- this.ctx.beginPath();
- color = this.setColor(color, 0.25, 0.75);
- this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
- this.ctx.fill();
-
- var bg = '<li class="bg parity' + parity + '"></li>';
- var left = (this.columns + 1) * this.bg_height;
- var nstyle = 'padding-left: ' + left + 'px;';
- var item = revlink.replace(/_STYLE/, nstyle);
- item = item.replace(/_PARITY/, 'parity' + parity);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_DESC/, cur[3]);
- item = item.replace(/_USER/, cur[4]);
- item = item.replace(/_DATE/, cur[5]);
-
- var tagspan = '';
- if (cur[7].length || (cur[6][0] != 'default' || cur[6][1])) {
- tagspan = '<span class="logtags">';
- if (cur[6][1]) {
- tagspan += '<span class="branchhead" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- } else if (!cur[6][1] && cur[6][0] != 'default') {
- tagspan += '<span class="branchname" title="' + cur[6][0] + '">';
- tagspan += cur[6][0] + '</span> ';
- }
- if (cur[7].length) {
- for (var t in cur[7]) {
- var tag = cur[7][t];
- tagspan += '<span class="tag">' + tag + '</span> ';
- }
- }
- tagspan += '</span>';
- }
-
- item = item.replace(/_TAGS/, tagspan);
- return [bg, item];
-
-}
-
-graph.render(data);
-
-// stop hiding script -->
-</script>
-
-<div class="navigate">
-<a href="{url}graph/{rev}{lessvars%urlparameter}">less</a>
-<a href="{url}graph/{rev}{morevars%urlparameter}">more</a>
-| rev {rev}: {changenav%navgraphentry}
-</div>
-
-</div>
-</div>
-
-{footer}
--- a/templates/paper/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
-<head>
-<link rel="icon" href="{staticurl}hgicon.png" type="image/png" />
-<meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="{staticurl}style-paper.css" type="text/css" />
--- a/templates/paper/index.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{header}
-<title>Mercurial repositories index</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
-</div>
-<div class="main">
-<h2>Mercurial Repositories</h2>
-
-<table class="bigtable">
- <tr>
- <th><a href="?sort={sort_name}">Name</a></th>
- <th><a href="?sort={sort_description}">Description</a></th>
- <th><a href="?sort={sort_contact}">Contact</a></th>
- <th><a href="?sort={sort_lastchange}">Last change</a></th>
- <th> </th>
- </tr>
- {entries%indexentry}
-</table>
-</div>
-</div>
-{footer}
--- a/templates/paper/manifest.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-{header}
-<title>{repo|escape}: {node|short} {path|escape}</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li class="active">browse</li>
-</ul>
-<ul>
-{archives%archiveentry}
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<table class="bigtable">
-<tr>
- <th class="name">name</th>
- <th class="size">size</th>
- <th class="permissions">permissions</th>
-</tr>
-<tr class="fileline parity{upparity}">
- <td class="name"><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a></td>
- <td class="size"></td>
- <td class="permissions">drwxr-xr-x</td>
-</tr>
-{dentries%direntry}
-{fentries%fileentry}
-</table>
-</div>
-</div>
-{footer}
--- a/templates/paper/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-default = 'shortlog'
-
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = footer.tmpl
-search = search.tmpl
-
-changelog = shortlog.tmpl
-shortlog = shortlog.tmpl
-shortlogentry = shortlogentry.tmpl
-graph = graph.tmpl
-
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
-filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenolink = '{file|escape} '
-fileellipses = '...'
-changelogentry = shortlogentry.tmpl
-searchentry = shortlogentry.tmpl
-changeset = changeset.tmpl
-manifest = manifest.tmpl
-
-direntry = '
- <tr class="fileline parity{parity}">
- <td class="name">
- <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">
- <img src="{staticurl}coal-folder.png" alt="dir."/> {basename|escape}/
- </a>
- <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
- {emptydirs|escape}
- </a>
- </td>
- <td class="size"></td>
- <td class="permissions">drwxr-xr-x</td>
- </tr>'
-
-fileentry = '
- <tr class="fileline parity{parity}">
- <td class="filename">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- <img src="{staticurl}coal-file.png" alt="file"/> {basename|escape}
- </a>
- </td>
- <td class="size">{size}</td>
- <td class="permissions">{permissions|permissions}</td>
- </tr>'
-
-filerevision = filerevision.tmpl
-fileannotate = fileannotate.tmpl
-filediff = filediff.tmpl
-filelog = filelog.tmpl
-fileline = '
- <div class="parity{parity} source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
-filelogentry = filelogentry.tmpl
-
-annotateline = '
- <tr class="parity{parity}">
- <td class="annotate">
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
- </td>
- <td class="source"><a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</td>
- </tr>'
-
-diffblock = '<div class="source bottomline parity{parity}"><pre>{lines}</pre></div>'
-difflineplus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="plusline">{line|escape}</span>'
-difflineminus = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="minusline">{line|escape}</span>'
-difflineat = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> <span class="atline">{line|escape}</span>'
-diffline = '<a href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}'
-
-changelogparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-
-changesetparent = '<a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a> '
-
-filerevparent = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{rename%filerename}{node|short}</a> '
-filerevchild = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a> '
-
-filerename = '{file|escape}@'
-filelogrename = '
- <tr>
- <th>base:</th>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {file|escape}@{node|short}
- </a>
- </td>
- </tr>'
-fileannotateparent = '
- <tr>
- <td class="metatag">parent:</td>
- <td>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-changesetchild = ' <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>'
-changelogchild = '
- <tr>
- <th class="child">child</th>
- <td class="child">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
- {node|short}
- </a>
- </td>
- </tr>'
-fileannotatechild = '
- <tr>
- <td class="metatag">child:</td>
- <td>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {node|short}
- </a>
- </td>
- </tr>'
-tags = tags.tmpl
-tagentry = '
- <tr class="tagEntry parity{parity}">
- <td>
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">
- {tag|escape}
- </a>
- </td>
- <td class="node">
- {node|short}
- </td>
- </tr>'
-branches = branches.tmpl
-branchentry = '
- <tr class="tagEntry parity{parity}">
- <td>
- <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">
- {branch|escape}
- </a>
- </td>
- <td class="node">
- {node|short}
- </td>
- </tr>'
-changelogtag = '<span class="tag">{name|escape}</span> '
-changesettag = '<span class="tag">{tag|escape}</span> '
-changelogbranchhead = '<span class="branchhead">{name|escape}</span> '
-changelogbranchname = '<span class="branchname">{name|escape}</span> '
-
-filediffparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filelogparent = '
- <tr>
- <th>parent {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filediffchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-filelogchild = '
- <tr>
- <th>child {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-
-indexentry = '
- <tr class="parity{parity}">
- <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
- <td>{description}</td>
- <td>{contact|obfuscate}</td>
- <td class="age">{lastchange|age}</td>
- <td class="indexlinks">{archives%indexarchiveentry}</td>
- </tr>\n'
-indexarchiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}"> ↓{type|escape}</a>'
-index = index.tmpl
-archiveentry = '
- <li>
- <a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a>
- </li>'
-notfound = notfound.tmpl
-error = error.tmpl
-urlparameter = '{separator}{name}={value|urlescape}'
-hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- a/templates/paper/notfound.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-{header}
-<title>Mercurial repository not found</title>
-</head>
-<body>
-
-<h2>Mercurial repository not found</h2>
-
-The specified repository "{repo|escape}" is unknown, sorry.
-
-Please go back to the <a href="{url}">main repository list page</a>.
-
-{footer}
--- a/templates/paper/search.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-{header}
-<title>{repo|escape}: searching for {query|escape}</title>
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
-<ul>
-<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>searching for '{query|escape}'</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30"></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<table class="bigtable">
- <tr>
- <th class="age">age</th>
- <th class="author">author</th>
- <th class="description">description</th>
- </tr>
-{entries}
-</table>
-
-</div>
-</div>
-
-{footer}
--- a/templates/paper/shortlog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-{header}
-<title>{repo|escape}: log</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}" />
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}" />
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li class="active">log</li>
-<li><a href="{url}graph/{node|short}{sessionvars%urlparameter}">graph</a></li>
-<li><a href="{url}tags{sessionvars%urlparameter}">tags</a></li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-<ul>
-<li><a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a></li>
-<li><a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">browse</a></li>
-</ul>
-<ul>
-{archives%archiveentry}
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>log</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<div class="navigate">rev {rev}: {changenav%navshortentry}</div>
-
-<table class="bigtable">
- <tr>
- <th class="age">age</th>
- <th class="author">author</th>
- <th class="description">description</th>
- </tr>
-{entries%shortlogentry}
-</table>
-
-<div class="navigate">rev {rev}: {changenav%navshortentry}</div>
-</div>
-</div>
-
-{footer}
--- a/templates/paper/shortlogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
- <tr class="parity{parity}">
- <td class="age">{date|age}</td>
- <td class="author">{author|person}</td>
- <td class="description"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a>{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag}</td>
- </tr>
--- a/templates/paper/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-{header}
-<title>{repo|escape}: tags</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}: tags" />
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}: tags" />
-</head>
-<body>
-
-<div class="container">
-<div class="menu">
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" alt="mercurial" /></a>
-</div>
-<ul>
-<li><a href="{url}shortlog{sessionvars%urlparameter}">log</a></li>
-<li><a href="{url}graph{sessionvars%urlparameter}">graph</a></li>
-<li class="active">tags</li>
-<li><a href="{url}branches{sessionvars%urlparameter}">branches</a></li>
-</ul>
-</div>
-
-<div class="main">
-<h2><a href="{url}{sessionvars%urlparameter}">{repo|escape}</a></h2>
-<h3>tags</h3>
-
-<form class="search" action="{url}log">
-{sessionvars%hiddenformentry}
-<p><input name="rev" id="search1" type="text" size="30" /></p>
-<div id="hint">find changesets by author, revision,
-files, or words in the commit message</div>
-</form>
-
-<table class="bigtable">
-<tr>
- <th>tag</th>
- <th>node</th>
-</tr>
-{entries%tagentry}
-</table>
-</div>
-</div>
-
-{footer}
--- a/templates/raw/changeset.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-{header}
-# HG changeset patch
-# User {author}
-# Date {date|hgdate}
-# Node ID {node}
-{parent%changesetparent}
-{desc}
-
-{diff}
--- a/templates/raw/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-{header}
-error: {error}
--- a/templates/raw/fileannotate.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-{header}
-{annotate%annotateline}
-{footer}
-
-
--- a/templates/raw/filediff.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-{header}
-{diff}
-{footer}
-
-
--- a/templates/raw/index.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-{header}
-{entries%indexentry}
--- a/templates/raw/manifest.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-{header}
-{dentries%direntry}{fentries%fileentry}
-{footer}
--- a/templates/raw/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-mimetype = 'text/plain; charset={encoding}'
-header = ''
-footer = ''
-changeset = changeset.tmpl
-difflineplus = '{line}'
-difflineminus = '{line}'
-difflineat = '{line}'
-diffline = '{line}'
-changesetparent = '# Parent {node}'
-changesetchild = '# Child {node}'
-filenodelink = ''
-fileline = '{line}'
-diffblock = '{lines}'
-filediff = filediff.tmpl
-fileannotate = fileannotate.tmpl
-annotateline = '{author|user}@{rev}: {line}'
-manifest = manifest.tmpl
-direntry = 'drwxr-xr-x {basename}\n'
-fileentry = '{permissions|permissions} {size} {basename}\n'
-index = index.tmpl
-notfound = notfound.tmpl
-error = error.tmpl
-indexentry = '{url}\n'
--- a/templates/raw/notfound.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-{header}
-error: repository {repo} not found
--- a/templates/rss/changelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-{header}
- <title>{repo|escape} Changelog</title>
- <description>{repo|escape} Changelog</description>
- {entries%changelogentry}
- </channel>
-</rss>
\ No newline at end of file
--- a/templates/rss/changelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<item>
- <title>{desc|strip|firstline|strip|escape}</title>
- <guid isPermaLink="true">{urlbase}{url}rev/{node|short}</guid>
- <description><![CDATA[{desc|strip|escape|addbreaks|nonempty}]]></description>
- <author>{author|obfuscate}</author>
- <pubDate>{date|rfc822date}</pubDate>
-</item>
--- a/templates/rss/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-{header}
- <title>Error</title>
- <description>Error</description>
- <item>
- <title>Error</title>
- <description>{error|escape}</description>
- <guid>http://mercurial.selenic.com/#error</guid>
- </item>
- </channel>
-</rss>
--- a/templates/rss/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-{header}
- <title>{repo|escape}: {file|escape} history</title>
- <description>{file|escape} revision history</description>
- {entries%filelogentry}
- </channel>
-</rss>
--- a/templates/rss/filelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<item>
- <title>{desc|strip|firstline|strip|escape}</title>
- <link>{urlbase}{url}log{{node|short}}/{file|urlescape}</link>
- <description><![CDATA[{desc|strip|escape|addbreaks|nonempty}]]></description>
- <author>{author|obfuscate}</author>
- <pubDate>{date|rfc822date}</pubDate>
-</item>
--- a/templates/rss/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="{encoding}"?>
-<rss version="2.0">
- <channel>
- <link>{urlbase}{url}</link>
- <language>en-us</language>
--- a/templates/rss/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-default = 'changelog'
-mimetype = 'text/xml; charset={encoding}'
-header = header.tmpl
-changelog = changelog.tmpl
-changelogentry = changelogentry.tmpl
-filelog = filelog.tmpl
-filelogentry = filelogentry.tmpl
-tags = tags.tmpl
-tagentry = tagentry.tmpl
-error = error.tmpl
--- a/templates/rss/tagentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<item>
- <title>{tag|escape}</title>
- <link>{urlbase}{url}rev/{node|short}</link>
- <description><![CDATA[{tag|strip|escape|addbreaks}]]></description>
- <pubDate>{date|rfc822date}</pubDate>
-</item>
--- a/templates/rss/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-{header}
- <title>{repo|escape}: tags </title>
- <description>{repo|escape} tag history</description>
- {entriesnotip%tagentry}
- </channel>
-</rss>
--- a/templates/spartan/branches.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{header}
-<title>{repo|escape}: branches</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-branches" title="Atom feed for {repo|escape}: branches">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-branches" title="RSS feed for {repo|escape}: branches">
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
-<a type="application/rss+xml" href="{url}rss-branches">rss</a>
-<a type="application/atom+xml" href="{url}atom-branches">atom</a>
-</div>
-
-<h2>branches:</h2>
-
-<ul id="tagEntries">
-{entries%branchentry}
-</ul>
-
-{footer}
--- a/templates/spartan/changelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-{header}
-<title>{repo|escape}: changelog</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}">
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-{archives%archiveentry}
-<a type="application/rss+xml" href="{url}rss-log">rss</a>
-<a type="application/atom+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
-</div>
-
-<h2>changelog for {repo|escape}</h2>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">{changenav%naventry}</small>
-</p>
-</form>
-
-{entries%changelogentry}
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search2">search:</label>
-<input name="rev" id="search2" type="text" size="30">
-navigate: <small class="navigate">{changenav%naventry}</small>
-</p>
-</form>
-
-{footer}
--- a/templates/spartan/changelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<table class="logEntry parity{parity}">
- <tr>
- <th class="age">{date|age}:</th>
- <th class="firstline">{desc|strip|firstline|escape|nonempty}</th>
- </tr>
- <tr>
- <th class="revision">changeset {rev}:</th>
- <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>
- {parent%changelogparent}
- {child%changelogchild}
- {changelogtag}
- <tr>
- <th class="author">author:</th>
- <td class="author">{author|obfuscate}</td>
- </tr>
- <tr>
- <th class="date">date:</th>
- <td class="date">{date|date}</td>
- </tr>
- <tr>
- <th class="files"><a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>:</th>
- <td class="files">{files}</td>
- </tr>
-</table>
--- a/templates/spartan/changeset.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-{header}
-<title>{repo|escape}: changeset {node|short}</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-<a href="{url}raw-rev/{node|short}">raw</a>
-{archives%archiveentry}
-</div>
-
-<h2>changeset: {desc|strip|escape|firstline|nonempty}</h2>
-
-<table id="changesetEntry">
-<tr>
- <th class="changeset">changeset {rev}:</th>
- <td class="changeset"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
-</tr>
-{parent%changesetparent}
-{child%changesetchild}
-{changesettag}
-<tr>
- <th class="author">author:</th>
- <td class="author">{author|obfuscate}</td>
-</tr>
-<tr>
- <th class="date">date:</th>
- <td class="date">{date|date} ({date|age})</td>
-</tr>
-<tr>
- <th class="files">files:</th>
- <td class="files">{files}</td>
-</tr>
-<tr>
- <th class="description">description:</th>
- <td class="description">{desc|strip|escape|addbreaks|nonempty}</td>
-</tr>
-</table>
-
-<div id="changesetDiff">
-{diff}
-</div>
-
-{footer}
-
-
--- a/templates/spartan/error.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-{header}
-<title>Mercurial Error</title>
-</head>
-<body>
-
-<h2>Mercurial Error</h2>
-
-<p>
-An error occurred while processing your request:
-</p>
-<p>
-{error|escape}
-</p>
-
-{footer}
--- a/templates/spartan/fileannotate.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} annotate</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
-<a href="{url}raw-annotate/{node|short}/{file|urlescape}">raw</a>
-</div>
-
-<h2>Annotate {file|escape}</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset {rev}:</td>
- <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
-{parent%fileannotateparent}
-{child%fileannotatechild}
-<tr>
- <td class="metatag">author:</td>
- <td>{author|obfuscate}</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td>
-</tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>{permissions|permissions}</td>
-</tr>
-<tr>
- <td class="metatag">description:</td>
- <td>{desc|strip|escape|addbreaks|nonempty}</td>
-</tr>
-</table>
-
-<table cellspacing="0" cellpadding="0">
-{annotate%annotateline}
-</table>
-
-{footer}
--- a/templates/spartan/filediff.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} diff</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
-<a href="{url}raw-diff/{node|short}/{file|urlescape}">raw</a>
-</div>
-
-<h2>{file|escape}</h2>
-
-<table id="filediffEntry">
-<tr>
- <th class="revision">revision {rev}:</th>
- <td class="revision"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
-</tr>
-{parent%filediffparent}
-{child%filediffchild}
-</table>
-
-<div id="fileDiff">
-{diff}
-</div>
-
-{footer}
-
-
--- a/templates/spartan/filelog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-{header}
-<title>{repo|escape}: {file|escape} history</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log/tip/{file|urlescape}" title="RSS feed for {repo|escape}:{file}">
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
-<a type="application/rss+xml" href="{url}rss-log/tip/{file|urlescape}">rss</a>
-<a type="application/atom+xml" href="{url}atom-log/tip/{file|urlescape}" title="Atom feed for {repo|escape}:{file}">atom</a>
-</div>
-
-<h2>{file|escape} revision history</h2>
-
-<p>navigate: <small class="navigate">{nav%filenaventry}</small></p>
-
-{entries%filelogentry}
-
-{footer}
--- a/templates/spartan/filelogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-<table class="logEntry parity{parity}">
- <tr>
- <th class="age">{date|age}:</th>
- <th class="firstline"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></th>
- </tr>
- <tr>
- <th class="revision">revision {filerev}:</td>
- <td class="node">
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
- <a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(diff)</a>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">(annotate)</a>
- </td>
- </tr>
- {rename%filelogrename}
- <tr>
- <th class="author">author:</th>
- <td class="author">{author|obfuscate}</td>
- </tr>
- <tr>
- <th class="date">date:</th>
- <td class="date">{date|date}</td>
- </tr>
-</table>
-
-
--- a/templates/spartan/filerevision.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-{header}
-<title>{repo|escape}:{file|escape}</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-<a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a>
-<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
-<a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
-<a href="{url}raw-file/{node|short}/{file|urlescape}">raw</a>
-</div>
-
-<h2>{file|escape}</h2>
-
-<table>
-<tr>
- <td class="metatag">changeset {rev}:</td>
- <td><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td></tr>
-{parent%filerevparent}
-{child%filerevchild}
-<tr>
- <td class="metatag">author:</td>
- <td>{author|obfuscate}</td></tr>
-<tr>
- <td class="metatag">date:</td>
- <td>{date|date} ({date|age})</td></tr>
-<tr>
- <td class="metatag">permissions:</td>
- <td>{permissions|permissions}</td></tr>
-<tr>
- <td class="metatag">description:</td>
- <td>{desc|strip|escape|addbreaks|nonempty}</td>
-</tr>
-</table>
-
-<pre>
-{text%fileline}
-</pre>
-
-{footer}
--- a/templates/spartan/footer.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-{motd}
-<div class="logo">
-<a href="http://mercurial.selenic.com/">
-<img src="{staticurl}hglogo.png" width=75 height=90 border=0 alt="mercurial"></a>
-</div>
-
-</body>
-</html>
--- a/templates/spartan/graph.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-{header}
-<title>{repo|escape}: graph</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
-<!--[if IE]><script type="text/javascript" src="{staticurl}excanvas.js"></script><![endif]-->
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
-</div>
-
-<h2>graph</h2>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">{changenav%navgraphentry}</small>
-</p>
-</form>
-
-<noscript>The revision graph only works with JavaScript-enabled browsers.</noscript>
-
-<div id="wrapper">
-<ul id="nodebgs"></ul>
-<canvas id="graph" width="224" height="{canvasheight}"></canvas>
-<ul id="graphnodes"></ul>
-</div>
-
-<script type="text/javascript" src="{staticurl}graph.js"></script>
-<script type="text/javascript">
-<!-- hide script content
-
-var data = {jsdata|json};
-var graph = new Graph();
-graph.scale({bg_height});
-
-graph.edge = function(x0, y0, x1, y1, color) {
-
- this.setColor(color, 0.0, 0.65);
- this.ctx.beginPath();
- this.ctx.moveTo(x0, y0);
- this.ctx.lineTo(x1, y1);
- this.ctx.stroke();
-
-}
-
-var revlink = '<li style="_STYLE"><span class="desc">';
-revlink += '<a href="{url}rev/_NODEID{sessionvars%urlparameter}" title="_NODEID">_DESC</a>';
-revlink += '</span><span class="info">_DATE ago, by _USER</span></li>';
-
-graph.vertex = function(x, y, color, parity, cur) {
-
- this.ctx.beginPath();
- color = this.setColor(color, 0.25, 0.75);
- this.ctx.arc(x, y, radius, 0, Math.PI * 2, true);
- this.ctx.fill();
-
- var bg = '<li class="bg parity' + parity + '"></li>';
- var left = (this.columns + 1) * this.bg_height;
- var nstyle = 'padding-left: ' + left + 'px;';
- var item = revlink.replace(/_STYLE/, nstyle);
- item = item.replace(/_PARITY/, 'parity' + parity);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_NODEID/, cur[0]);
- item = item.replace(/_DESC/, cur[3]);
- item = item.replace(/_USER/, cur[4]);
- item = item.replace(/_DATE/, cur[5]);
-
- return [bg, item];
-
-}
-
-graph.render(data);
-
-// stop hiding script -->
-</script>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">{changenav%navgraphentry}</small>
-</p>
-</form>
-
-{footer}
--- a/templates/spartan/header.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<link rel="icon" href="{staticurl}hgicon.png" type="image/png">
-<meta name="robots" content="index, nofollow" />
-<link rel="stylesheet" href="{staticurl}style.css" type="text/css" />
--- a/templates/spartan/index.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-{header}
-<title>Mercurial repositories index</title>
-</head>
-<body>
-
-<h2>Mercurial Repositories</h2>
-
-<table>
- <tr>
- <td><a href="?sort={sort_name}">Name</a></td>
- <td><a href="?sort={sort_description}">Description</a></td>
- <td><a href="?sort={sort_contact}">Contact</a></td>
- <td><a href="?sort={sort_lastchange}">Last change</a></td>
- <td> </td>
- </tr>
- {entries%indexentry}
-</table>
-
-{footer}
--- a/templates/spartan/manifest.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-{header}
-<title>{repo|escape}: files for changeset {node|short}</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog/{rev}{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}rev/{node|short}{sessionvars%urlparameter}">changeset</a>
-{archives%archiveentry}
-</div>
-
-<h2>files for changeset {node|short}: {path|escape}</h2>
-
-<table cellpadding="0" cellspacing="0">
-<tr class="parity{upparity}">
- <td><tt>drwxr-xr-x</tt>
- <td>
- <td>
- <td><a href="{url}file/{node|short}{up|urlescape}{sessionvars%urlparameter}">[up]</a>
-</tr>
-{dentries%direntry}
-{fentries%fileentry}
-</table>
-{footer}
--- a/templates/spartan/map Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-default = 'shortlog'
-mimetype = 'text/html; charset={encoding}'
-header = header.tmpl
-footer = footer.tmpl
-search = search.tmpl
-changelog = changelog.tmpl
-shortlog = shortlog.tmpl
-shortlogentry = shortlogentry.tmpl
-graph = graph.tmpl
-naventry = '<a href="{url}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navshortentry = '<a href="{url}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-navgraphentry = '<a href="{url}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
-filenaventry = '<a href="{url}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a> '
-filedifflink = '<a href="{url}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenodelink = '<a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
-filenolink = '{file|escape} '
-fileellipses = '...'
-changelogentry = changelogentry.tmpl
-searchentry = changelogentry.tmpl
-changeset = changeset.tmpl
-manifest = manifest.tmpl
-
-direntry = '
- <tr class="parity{parity}">
- <td><tt>drwxr-xr-x</tt>
- <td>
- <td>
- <td>
- <a href="{url}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}/</a>
- <a href="{url}file/{node|short}{path|urlescape}/{emptydirs|urlescape}{sessionvars%urlparameter}">
- {emptydirs|urlescape}
- </a>'
-
-fileentry = '
- <tr class="parity{parity}">
- <td><tt>{permissions|permissions}</tt>
- <td align=right><tt class="date">{date|isodate}</tt>
- <td align=right><tt>{size}</tt>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a>'
-
-filerevision = filerevision.tmpl
-fileannotate = fileannotate.tmpl
-filediff = filediff.tmpl
-filelog = filelog.tmpl
-fileline = '<div class="parity{parity}"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</div>'
-filelogentry = filelogentry.tmpl
-
-# The ensures that all table cells have content (even if there
-# is an empty line in the annotated file), which in turn ensures that
-# all table rows have equal height.
-annotateline = '
- <tr class="parity{parity}">
- <td class="annotate">
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
- title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
- </td>
- <td>
- <a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>
- </td>
- <td><pre> {line|escape}</pre></td>
- </tr>'
-difflineplus = '<span class="plusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
-difflineminus = '<span class="minusline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
-difflineat = '<span class="atline"><a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}</span>'
-diffline = '<a class="lineno" href="#{lineid}" id="{lineid}">{linenumber}</a>{line|escape}'
-changelogparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent">
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
- </td>
- </tr>'
-changesetparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filerevparent = '
- <tr>
- <td class="metatag">parent:</td>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-filerename = '{file|escape}@'
-filelogrename = '
- <tr>
- <th>base:</th>
- <td>
- <a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {file|escape}@{node|short}
- </a>
- </td>
- </tr>'
-fileannotateparent = '
- <tr>
- <td class="metatag">parent:</td>
- <td>
- <a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
- {rename%filerename}{node|short}
- </a>
- </td>
- </tr>'
-changesetchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-changelogchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filerevchild = '
- <tr>
- <td class="metatag">child:</td>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-fileannotatechild = '
- <tr>
- <td class="metatag">child:</td>
- <td><a href="{url}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-tags = tags.tmpl
-tagentry = '
- <li class="tagEntry parity{parity}">
- <tt class="node">{node}</tt>
- <a href="{url}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a>
- </li>'
-branches = branches.tmpl
-branchentry = '
- <li class="tagEntry parity{parity}">
- <tt class="node">{node}</tt>
- <a href="{url}shortlog/{node|short}{sessionvars%urlparameter}" class="{status}">{branch|escape}</a>
- </li>'
-diffblock = '<pre class="parity{parity}">{lines}</pre>'
-changelogtag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
-changesettag = '<tr><th class="tag">tag:</th><td class="tag">{tag|escape}</td></tr>'
-filediffparent = '
- <tr>
- <th class="parent">parent {rev}:</th>
- <td class="parent"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filelogparent = '
- <tr>
- <th>parent {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filediffchild = '
- <tr>
- <th class="child">child {rev}:</th>
- <td class="child"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-filelogchild = '
- <tr>
- <th>child {rev}:</th>
- <td><a href="{url}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
- </tr>'
-indexentry = '
- <tr class="parity{parity}">
- <td><a href="{url}{sessionvars%urlparameter}">{name|escape}</a></td>
- <td>{description}</td>
- <td>{contact|obfuscate}</td>
- <td class="age">{lastchange|age} ago</td>
- <td class="indexlinks">
- <a href="{url}rss-log">RSS</a>
- <a href="{url}atom-log">Atom</a>
- {archives%archiveentry}
- </td>
- </tr>'
-index = index.tmpl
-archiveentry = '<a href="{url}archive/{node|short}{extension|urlescape}">{type|escape}</a> '
-notfound = notfound.tmpl
-error = error.tmpl
-urlparameter = '{separator}{name}={value|urlescape}'
-hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
--- a/templates/spartan/notfound.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-{header}
-<title>Mercurial repository not found</title>
-</head>
-<body>
-
-<h2>Mercurial repository not found</h2>
-
-The specified repository "{repo|escape}" is unknown, sorry.
-
-Please go back to the <a href="{url}">main repository list page</a>.
-
-{footer}
--- a/templates/spartan/search.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-{header}
-<title>{repo|escape}: searching for {query|escape}</title>
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}{sessionvars%urlparameter}">files</a>
-{archives%archiveentry}
-</div>
-
-<h2>searching for {query|escape}</h2>
-
-<form>
-{sessionvars%hiddenformentry}
-<p>
-search:
-<input name="rev" type="text" width="30" value="{query|escape}">
-</p>
-</form>
-
-{entries}
-
-<form>
-{sessionvars%hiddenformentry}
-<p>
-search:
-<input name="rev" type="text" width="30" value="{query|escape}">
-</p>
-</form>
-
-{footer}
--- a/templates/spartan/shortlog.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-{header}
-<title>{repo|escape}: shortlog</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-log" title="Atom feed for {repo|escape}">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-log" title="RSS feed for {repo|escape}">
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log/{rev}{sessionvars%urlparameter}">changelog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}tags{sessionvars%urlparameter}">tags</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
-{archives%archiveentry}
-<a type="application/rss+xml" href="{url}rss-log">rss</a>
-<a type="application/rss+xml" href="{url}atom-log" title="Atom feed for {repo|escape}">atom</a>
-</div>
-
-<h2>shortlog for {repo|escape}</h2>
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search1">search:</label>
-<input name="rev" id="search1" type="text" size="30">
-navigate: <small class="navigate">{changenav%navshortentry}</small>
-</p>
-</form>
-
-{entries%shortlogentry}
-
-<form action="{url}log">
-{sessionvars%hiddenformentry}
-<p>
-<label for="search2">search:</label>
-<input name="rev" id="search2" type="text" size="30">
-navigate: <small class="navigate">{changenav%navshortentry}</small>
-</p>
-</form>
-
-{footer}
--- a/templates/spartan/shortlogentry.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<table class="slogEntry parity{parity}">
- <tr>
- <td class="age">{date|age}</td>
- <td class="author">{author|person}</td>
- <td class="node"><a href="{url}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
- </tr>
-</table>
--- a/templates/spartan/tags.tmpl Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-{header}
-<title>{repo|escape}: tags</title>
-<link rel="alternate" type="application/atom+xml"
- href="{url}atom-tags" title="Atom feed for {repo|escape}: tags">
-<link rel="alternate" type="application/rss+xml"
- href="{url}rss-tags" title="RSS feed for {repo|escape}: tags">
-</head>
-<body>
-
-<div class="buttons">
-<a href="{url}log{sessionvars%urlparameter}">changelog</a>
-<a href="{url}shortlog{sessionvars%urlparameter}">shortlog</a>
-<a href="{url}graph{sessionvars%urlparameter}">graph</a>
-<a href="{url}branches{sessionvars%urlparameter}">branches</a>
-<a href="{url}file/{node|short}/{sessionvars%urlparameter}">files</a>
-<a type="application/rss+xml" href="{url}rss-tags">rss</a>
-<a type="application/atom+xml" href="{url}atom-tags">atom</a>
-</div>
-
-<h2>tags:</h2>
-
-<ul id="tagEntries">
-{entries%tagentry}
-</ul>
-
-{footer}
Binary file templates/static/background.png has changed
Binary file templates/static/coal-file.png has changed
Binary file templates/static/coal-folder.png has changed
--- a/templates/static/excanvas.js Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-if(!window.CanvasRenderingContext2D){(function(){var I=Math,i=I.round,L=I.sin,M=I.cos,m=10,A=m/2,Q={init:function(a){var b=a||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var c=this;b.attachEvent("onreadystatechange",function(){c.r(b)})}},r:function(a){if(a.readyState=="complete"){if(!a.namespaces["s"]){a.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml")}var b=a.createStyleSheet();b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}";
-var c=a.getElementsByTagName("canvas");for(var d=0;d<c.length;d++){if(!c[d].getContext){this.initElement(c[d])}}}},q:function(a){var b=a.outerHTML,c=a.ownerDocument.createElement(b);if(b.slice(-2)!="/>"){var d="/"+a.tagName,e;while((e=a.nextSibling)&&e.tagName!=d){e.removeNode()}if(e){e.removeNode()}}a.parentNode.replaceChild(c,a);return c},initElement:function(a){a=this.q(a);a.getContext=function(){if(this.l){return this.l}return this.l=new K(this)};a.attachEvent("onpropertychange",V);a.attachEvent("onresize",
-W);var b=a.attributes;if(b.width&&b.width.specified){a.style.width=b.width.nodeValue+"px"}else{a.width=a.clientWidth}if(b.height&&b.height.specified){a.style.height=b.height.nodeValue+"px"}else{a.height=a.clientHeight}return a}};function V(a){var b=a.srcElement;switch(a.propertyName){case "width":b.style.width=b.attributes.width.nodeValue+"px";b.getContext().clearRect();break;case "height":b.style.height=b.attributes.height.nodeValue+"px";b.getContext().clearRect();break}}function W(a){var b=a.srcElement;
-if(b.firstChild){b.firstChild.style.width=b.clientWidth+"px";b.firstChild.style.height=b.clientHeight+"px"}}Q.init();var R=[];for(var E=0;E<16;E++){for(var F=0;F<16;F++){R[E*16+F]=E.toString(16)+F.toString(16)}}function J(){return[[1,0,0],[0,1,0],[0,0,1]]}function G(a,b){var c=J();for(var d=0;d<3;d++){for(var e=0;e<3;e++){var g=0;for(var h=0;h<3;h++){g+=a[d][h]*b[h][e]}c[d][e]=g}}return c}function N(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit=
-a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=a.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.d=a.d;b.e=a.e}function O(a){var b,c=1;a=String(a);if(a.substring(0,3)=="rgb"){var d=a.indexOf("(",3),e=a.indexOf(")",d+1),g=a.substring(d+1,e).split(",");b="#";for(var h=0;h<3;h++){b+=R[Number(g[h])]}if(g.length==4&&a.substr(3,1)=="a"){c=g[3]}}else{b=a}return[b,c]}function S(a){switch(a){case "butt":return"flat";case "round":return"round";
-case "square":default:return"square"}}function K(a){this.a=J();this.m=[];this.k=[];this.c=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=m*1;this.globalAlpha=1;this.canvas=a;var b=a.ownerDocument.createElement("div");b.style.width=a.clientWidth+"px";b.style.height=a.clientHeight+"px";b.style.overflow="hidden";b.style.position="absolute";a.appendChild(b);this.j=b;this.d=1;this.e=1}var j=K.prototype;j.clearRect=function(){this.j.innerHTML=
-"";this.c=[]};j.beginPath=function(){this.c=[]};j.moveTo=function(a,b){this.c.push({type:"moveTo",x:a,y:b});this.f=a;this.g=b};j.lineTo=function(a,b){this.c.push({type:"lineTo",x:a,y:b});this.f=a;this.g=b};j.bezierCurveTo=function(a,b,c,d,e,g){this.c.push({type:"bezierCurveTo",cp1x:a,cp1y:b,cp2x:c,cp2y:d,x:e,y:g});this.f=e;this.g=g};j.quadraticCurveTo=function(a,b,c,d){var e=this.f+0.6666666666666666*(a-this.f),g=this.g+0.6666666666666666*(b-this.g),h=e+(c-this.f)/3,l=g+(d-this.g)/3;this.bezierCurveTo(e,
-g,h,l,c,d)};j.arc=function(a,b,c,d,e,g){c*=m;var h=g?"at":"wa",l=a+M(d)*c-A,n=b+L(d)*c-A,o=a+M(e)*c-A,f=b+L(e)*c-A;if(l==o&&!g){l+=0.125}this.c.push({type:h,x:a,y:b,radius:c,xStart:l,yStart:n,xEnd:o,yEnd:f})};j.rect=function(a,b,c,d){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath()};j.strokeRect=function(a,b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.stroke()};j.fillRect=function(a,
-b,c,d){this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+d);this.lineTo(a,b+d);this.closePath();this.fill()};j.createLinearGradient=function(a,b,c,d){var e=new H("gradient");return e};j.createRadialGradient=function(a,b,c,d,e,g){var h=new H("gradientradial");h.n=c;h.o=g;h.i.x=a;h.i.y=b;return h};j.drawImage=function(a,b){var c,d,e,g,h,l,n,o,f=a.runtimeStyle.width,k=a.runtimeStyle.height;a.runtimeStyle.width="auto";a.runtimeStyle.height="auto";var q=a.width,r=a.height;a.runtimeStyle.width=
-f;a.runtimeStyle.height=k;if(arguments.length==3){c=arguments[1];d=arguments[2];h=(l=0);n=(e=q);o=(g=r)}else if(arguments.length==5){c=arguments[1];d=arguments[2];e=arguments[3];g=arguments[4];h=(l=0);n=q;o=r}else if(arguments.length==9){h=arguments[1];l=arguments[2];n=arguments[3];o=arguments[4];c=arguments[5];d=arguments[6];e=arguments[7];g=arguments[8]}else{throw"Invalid number of arguments";}var s=this.b(c,d),t=[],v=10,w=10;t.push(" <g_vml_:group",' coordsize="',m*v,",",m*w,'"',' coordorigin="0,0"',
-' style="width:',v,";height:",w,";position:absolute;");if(this.a[0][0]!=1||this.a[0][1]){var x=[];x.push("M11='",this.a[0][0],"',","M12='",this.a[1][0],"',","M21='",this.a[0][1],"',","M22='",this.a[1][1],"',","Dx='",i(s.x/m),"',","Dy='",i(s.y/m),"'");var p=s,y=this.b(c+e,d),z=this.b(c,d+g),B=this.b(c+e,d+g);p.x=Math.max(p.x,y.x,z.x,B.x);p.y=Math.max(p.y,y.y,z.y,B.y);t.push("padding:0 ",i(p.x/m),"px ",i(p.y/m),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",x.join(""),", sizingmethod='clip');")}else{t.push("top:",
-i(s.y/m),"px;left:",i(s.x/m),"px;")}t.push(' ">','<g_vml_:image src="',a.src,'"',' style="width:',m*e,";"," height:",m*g,';"',' cropleft="',h/q,'"',' croptop="',l/r,'"',' cropright="',(q-h-n)/q,'"',' cropbottom="',(r-l-o)/r,'"'," />","</g_vml_:group>");this.j.insertAdjacentHTML("BeforeEnd",t.join(""))};j.stroke=function(a){var b=[],c=O(a?this.fillStyle:this.strokeStyle),d=c[0],e=c[1]*this.globalAlpha,g=10,h=10;b.push("<g_vml_:shape",' fillcolor="',d,'"',' filled="',Boolean(a),'"',' style="position:absolute;width:',
-g,";height:",h,';"',' coordorigin="0 0" coordsize="',m*g," ",m*h,'"',' stroked="',!a,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',d,'"',' path="');var l={x:null,y:null},n={x:null,y:null};for(var o=0;o<this.c.length;o++){var f=this.c[o];if(f.type=="moveTo"){b.push(" m ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="lineTo"){b.push(" l ");var k=this.b(f.x,f.y);b.push(i(k.x),",",i(k.y))}else if(f.type=="close"){b.push(" x ")}else if(f.type=="bezierCurveTo"){b.push(" c ");
-var k=this.b(f.x,f.y),q=this.b(f.cp1x,f.cp1y),r=this.b(f.cp2x,f.cp2y);b.push(i(q.x),",",i(q.y),",",i(r.x),",",i(r.y),",",i(k.x),",",i(k.y))}else if(f.type=="at"||f.type=="wa"){b.push(" ",f.type," ");var k=this.b(f.x,f.y),s=this.b(f.xStart,f.yStart),t=this.b(f.xEnd,f.yEnd);b.push(i(k.x-this.d*f.radius),",",i(k.y-this.e*f.radius)," ",i(k.x+this.d*f.radius),",",i(k.y+this.e*f.radius)," ",i(s.x),",",i(s.y)," ",i(t.x),",",i(t.y))}if(k){if(l.x==null||k.x<l.x){l.x=k.x}if(n.x==null||k.x>n.x){n.x=k.x}if(l.y==
-null||k.y<l.y){l.y=k.y}if(n.y==null||k.y>n.y){n.y=k.y}}}b.push(' ">');if(typeof this.fillStyle=="object"){var v={x:"50%",y:"50%"},w=n.x-l.x,x=n.y-l.y,p=w>x?w:x;v.x=i(this.fillStyle.i.x/w*100+50)+"%";v.y=i(this.fillStyle.i.y/x*100+50)+"%";var y=[];if(this.fillStyle.p=="gradientradial"){var z=this.fillStyle.n/p*100,B=this.fillStyle.o/p*100-z}else{var z=0,B=100}var C={offset:null,color:null},D={offset:null,color:null};this.fillStyle.h.sort(function(T,U){return T.offset-U.offset});for(var o=0;o<this.fillStyle.h.length;o++){var u=
-this.fillStyle.h[o];y.push(u.offset*B+z,"% ",u.color,",");if(u.offset>C.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset<D.offset||D.offset==null){D.offset=u.offset;D.color=u.color}}y.pop();b.push("<g_vml_:fill",' color="',D.color,'"',' color2="',C.color,'"',' type="',this.fillStyle.p,'"',' focusposition="',v.x,", ",v.y,'"',' colors="',y.join(""),'"',' opacity="',e,'" />')}else if(a){b.push('<g_vml_:fill color="',d,'" opacity="',e,'" />')}else{b.push("<g_vml_:stroke",' opacity="',
-e,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',S(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',d,'" />')}b.push("</g_vml_:shape>");this.j.insertAdjacentHTML("beforeEnd",b.join(""));this.c=[]};j.fill=function(){this.stroke(true)};j.closePath=function(){this.c.push({type:"close"})};j.b=function(a,b){return{x:m*(a*this.a[0][0]+b*this.a[1][0]+this.a[2][0])-A,y:m*(a*this.a[0][1]+b*this.a[1][1]+this.a[2][1])-A}};j.save=function(){var a={};N(this,a);
-this.k.push(a);this.m.push(this.a);this.a=G(J(),this.a)};j.restore=function(){N(this.k.pop(),this);this.a=this.m.pop()};j.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];this.a=G(c,this.a)};j.rotate=function(a){var b=M(a),c=L(a),d=[[b,c,0],[-c,b,0],[0,0,1]];this.a=G(d,this.a)};j.scale=function(a,b){this.d*=a;this.e*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];this.a=G(c,this.a)};j.clip=function(){};j.arcTo=function(){};j.createPattern=function(){return new P};function H(a){this.p=a;this.n=0;this.o=
-0;this.h=[];this.i={x:0,y:0}}H.prototype.addColorStop=function(a,b){b=O(b);this.h.push({offset:1-a,color:b})};function P(){}G_vmlCanvasManager=Q;CanvasRenderingContext2D=K;CanvasGradient=H;CanvasPattern=P})()};
--- a/templates/static/graph.js Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-// branch_renderer.js - Rendering of branch DAGs on the client side
-//
-// Copyright 2008 Dirkjan Ochtman <dirkjan AT ochtman DOT nl>
-// Copyright 2006 Alexander Schremmer <alex AT alexanderweb DOT de>
-//
-// derived from code written by Scott James Remnant <scott@ubuntu.com>
-// Copyright 2005 Canonical Ltd.
-//
-// This software may be used and distributed according to the terms
-// of the GNU General Public License, incorporated herein by reference.
-
-var colors = [
- [ 1.0, 0.0, 0.0 ],
- [ 1.0, 1.0, 0.0 ],
- [ 0.0, 1.0, 0.0 ],
- [ 0.0, 1.0, 1.0 ],
- [ 0.0, 0.0, 1.0 ],
- [ 1.0, 0.0, 1.0 ]
-];
-
-function Graph() {
-
- this.canvas = document.getElementById('graph');
- if (navigator.userAgent.indexOf('MSIE') >= 0) this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
- this.ctx = this.canvas.getContext('2d');
- this.ctx.strokeStyle = 'rgb(0, 0, 0)';
- this.ctx.fillStyle = 'rgb(0, 0, 0)';
- this.cur = [0, 0];
- this.line_width = 3;
- this.bg = [0, 4];
- this.cell = [2, 0];
- this.columns = 0;
- this.revlink = '';
-
- this.scale = function(height) {
- this.bg_height = height;
- this.box_size = Math.floor(this.bg_height / 1.2);
- this.cell_height = this.box_size;
- }
-
- function colorPart(num) {
- num *= 255
- num = num < 0 ? 0 : num;
- num = num > 255 ? 255 : num;
- var digits = Math.round(num).toString(16);
- if (num < 16) {
- return '0' + digits;
- } else {
- return digits;
- }
- }
-
- this.setColor = function(color, bg, fg) {
-
- // Set the colour.
- //
- // Picks a distinct colour based on an internal wheel; the bg
- // parameter provides the value that should be assigned to the 'zero'
- // colours and the fg parameter provides the multiplier that should be
- // applied to the foreground colours.
-
- color %= colors.length;
- var red = (colors[color][0] * fg) || bg;
- var green = (colors[color][1] * fg) || bg;
- var blue = (colors[color][2] * fg) || bg;
- red = Math.round(red * 255);
- green = Math.round(green * 255);
- blue = Math.round(blue * 255);
- var s = 'rgb(' + red + ', ' + green + ', ' + blue + ')';
- this.ctx.strokeStyle = s;
- this.ctx.fillStyle = s;
- return s;
-
- }
-
- this.render = function(data) {
-
- var backgrounds = '';
- var nodedata = '';
-
- for (var i in data) {
-
- var parity = i % 2;
- this.cell[1] += this.bg_height;
- this.bg[1] += this.bg_height;
-
- var cur = data[i];
- var node = cur[1];
- var edges = cur[2];
- var fold = false;
-
- for (var j in edges) {
-
- line = edges[j];
- start = line[0];
- end = line[1];
- color = line[2];
-
- if (end > this.columns || start > this.columns) {
- this.columns += 1;
- }
-
- if (start == this.columns && start > end) {
- var fold = true;
- }
-
- x0 = this.cell[0] + this.box_size * start + this.box_size / 2;
- y0 = this.bg[1] - this.bg_height / 2;
- x1 = this.cell[0] + this.box_size * end + this.box_size / 2;
- y1 = this.bg[1] + this.bg_height / 2;
-
- this.edge(x0, y0, x1, y1, color);
-
- }
-
- // Draw the revision node in the right column
-
- column = node[0]
- color = node[1]
-
- radius = this.box_size / 8;
- x = this.cell[0] + this.box_size * column + this.box_size / 2;
- y = this.bg[1] - this.bg_height / 2;
- var add = this.vertex(x, y, color, parity, cur);
- backgrounds += add[0];
- nodedata += add[1];
-
- if (fold) this.columns -= 1;
-
- }
-
- document.getElementById('nodebgs').innerHTML += backgrounds;
- document.getElementById('graphnodes').innerHTML += nodedata;
-
- }
-
-}
Binary file templates/static/hgicon.png has changed
Binary file templates/static/hglogo.png has changed
--- a/templates/static/style-coal.css Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,265 +0,0 @@
-body {
- margin: 0;
- padding: 0;
- background: black url(background.png) repeat-x;
- font-family: sans-serif;
-}
-
-.container {
- padding-right: 150px;
-}
-
-.main {
- position: relative;
- background: white;
- padding: 2em;
- border-right: 15px solid black;
- border-bottom: 15px solid black;
-}
-
-#.main {
- width: 98%;
-}
-
-.overflow {
- width: 100%;
- overflow: auto;
-}
-
-.menu {
- background: #999;
- padding: 10px;
- width: 75px;
- margin: 0;
- font-size: 80%;
- text-align: left;
- position: fixed;
- top: 27px;
- left: auto;
- right: 27px;
-}
-
-#.menu {
- position: absolute !important;
- top:expression(eval(document.body.scrollTop + 27));
-}
-
-.menu ul {
- list-style: none;
- padding: 0;
- margin: 10px 0 0 0;
-}
-
-.menu li {
- margin-bottom: 3px;
- padding: 2px 4px;
- background: white;
- color: black;
- font-weight: normal;
-}
-
-.menu li.active {
- background: black;
- color: white;
-}
-
-.menu img {
- width: 75px;
- height: 90px;
- border: 0;
-}
-
-.menu a { color: black; display: block; }
-
-.search {
- position: absolute;
- top: .7em;
- right: 2em;
-}
-
-form.search div#hint {
- display: none;
- position: absolute;
- top: 40px;
- right: 0px;
- width: 190px;
- padding: 5px;
- background: #ffc;
- font-size: 70%;
- border: 1px solid yellow;
- -moz-border-radius: 5px; /* this works only in camino/firefox */
- -webkit-border-radius: 5px; /* this is just for Safari */
-}
-
-form.search:hover div#hint { display: block; }
-
-a { text-decoration:none; }
-.age { white-space:nowrap; }
-.date { white-space:nowrap; }
-.indexlinks { white-space:nowrap; }
-.parity0 { background-color: #f0f0f0; }
-.parity1 { background-color: white; }
-.plusline { color: green; }
-.minusline { color: #dc143c; } /* crimson */
-.atline { color: purple; }
-
-.navigate {
- text-align: right;
- font-size: 60%;
- margin: 1em 0;
-}
-
-.tag {
- color: #999;
- font-size: 70%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-.branchhead {
- color: #000;
- font-size: 80%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-ul#graphnodes .branchhead {
- font-size: 75%;
-}
-
-.branchname {
- color: #000;
- font-size: 60%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-h3 .branchname {
- font-size: 80%;
-}
-
-/* Common */
-pre { margin: 0; }
-
-h2 { font-size: 120%; border-bottom: 1px solid #999; }
-h2 a { color: #000; }
-h3 {
- margin-top: -.7em;
- font-size: 100%;
-}
-
-/* log and tags tables */
-.bigtable {
- border-bottom: 1px solid #999;
- border-collapse: collapse;
- font-size: 90%;
- width: 100%;
- font-weight: normal;
- text-align: left;
-}
-
-.bigtable td {
- vertical-align: top;
-}
-
-.bigtable th {
- padding: 1px 4px;
- border-bottom: 1px solid #999;
-}
-.bigtable tr { border: none; }
-.bigtable .age { width: 6em; }
-.bigtable .author { width: 12em; }
-.bigtable .description { }
-.bigtable .node { width: 5em; font-family: monospace;}
-.bigtable .lineno { width: 2em; text-align: right;}
-.bigtable .lineno a { color: #999; font-size: smaller; font-family: monospace;}
-.bigtable .permissions { width: 8em; text-align: left;}
-.bigtable .size { width: 5em; text-align: right; }
-.bigtable .annotate { text-align: right; }
-.bigtable td.annotate { font-size: smaller; }
-.bigtable td.source { font-size: inherit; }
-
-.source, .sourcefirst, .sourcelast {
- font-family: monospace;
- white-space: pre;
- padding: 1px 4px;
- font-size: 90%;
-}
-.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; }
-.sourcelast { border-top: 1px solid #999; }
-.source a { color: #999; font-size: smaller; font-family: monospace;}
-.bottomline { border-bottom: 1px solid #999; }
-
-.fileline { font-family: monospace; }
-.fileline img { border: 0; }
-
-.tagEntry .closed { color: #99f; }
-
-/* Changeset entry */
-#changesetEntry {
- border-collapse: collapse;
- font-size: 90%;
- width: 100%;
- margin-bottom: 1em;
-}
-
-#changesetEntry th {
- padding: 1px 4px;
- width: 4em;
- text-align: right;
- font-weight: normal;
- color: #999;
- margin-right: .5em;
- vertical-align: top;
-}
-
-div.description {
- border-left: 3px solid #999;
- margin: 1em 0 1em 0;
- padding: .3em;
-}
-
-/* Graph */
-div#wrapper {
- position: relative;
- border-top: 1px solid black;
- border-bottom: 1px solid black;
- margin: 0;
- padding: 0;
-}
-
-canvas {
- position: absolute;
- z-index: 5;
- top: -0.7em;
- margin: 0;
-}
-
-ul#graphnodes {
- position: absolute;
- z-index: 10;
- top: -1.0em;
- list-style: none inside none;
- padding: 0;
-}
-
-ul#nodebgs {
- list-style: none inside none;
- padding: 0;
- margin: 0;
- top: -0.7em;
-}
-
-ul#graphnodes li, ul#nodebgs li {
- height: 39px;
-}
-
-ul#graphnodes li .info {
- display: block;
- font-size: 70%;
- position: relative;
- top: -3px;
-}
--- a/templates/static/style-gitweb.css Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-body { font-family: sans-serif; font-size: 12px; margin:0px; border:solid #d9d8d1; border-width:1px; margin:10px; }
-a { color:#0000cc; }
-a:hover, a:visited, a:active { color:#880000; }
-div.page_header { height:25px; padding:8px; font-size:18px; font-weight:bold; background-color:#d9d8d1; }
-div.page_header a:visited { color:#0000cc; }
-div.page_header a:hover { color:#880000; }
-div.page_nav { padding:8px; }
-div.page_nav a:visited { color:#0000cc; }
-div.page_path { padding:8px; border:solid #d9d8d1; border-width:0px 0px 1px}
-div.page_footer { padding:4px 8px; background-color: #d9d8d1; }
-div.page_footer_text { float:left; color:#555555; font-style:italic; }
-div.page_body { padding:8px; }
-div.title, a.title {
- display:block; padding:6px 8px;
- font-weight:bold; background-color:#edece6; text-decoration:none; color:#000000;
-}
-a.title:hover { background-color: #d9d8d1; }
-div.title_text { padding:6px 0px; border: solid #d9d8d1; border-width:0px 0px 1px; }
-div.log_body { padding:8px 8px 8px 150px; }
-.age { white-space:nowrap; }
-span.age { position:relative; float:left; width:142px; font-style:italic; }
-div.log_link {
- padding:0px 8px;
- font-size:10px; font-family:sans-serif; font-style:normal;
- position:relative; float:left; width:136px;
-}
-div.list_head { padding:6px 8px 4px; border:solid #d9d8d1; border-width:1px 0px 0px; font-style:italic; }
-a.list { text-decoration:none; color:#000000; }
-a.list:hover { text-decoration:underline; color:#880000; }
-table { padding:8px 4px; }
-th { padding:2px 5px; font-size:12px; text-align:left; }
-tr.light:hover, .parity0:hover { background-color:#edece6; }
-tr.dark, .parity1 { background-color:#f6f6f0; }
-tr.dark:hover, .parity1:hover { background-color:#edece6; }
-td { padding:2px 5px; font-size:12px; vertical-align:top; }
-td.link { padding:2px 5px; font-family:sans-serif; font-size:10px; }
-td.indexlinks { white-space: nowrap; }
-td.indexlinks a {
- padding: 2px 5px; line-height: 10px;
- border: 1px solid;
- color: #ffffff; background-color: #7777bb;
- border-color: #aaaadd #333366 #333366 #aaaadd;
- font-weight: bold; text-align: center; text-decoration: none;
- font-size: 10px;
-}
-td.indexlinks a:hover { background-color: #6666aa; }
-div.pre { font-family:monospace; font-size:12px; white-space:pre; }
-div.diff_info { font-family:monospace; color:#000099; background-color:#edece6; font-style:italic; }
-div.index_include { border:solid #d9d8d1; border-width:0px 0px 1px; padding:12px 8px; }
-div.search { margin:4px 8px; position:absolute; top:56px; right:12px }
-.linenr { color:#999999; text-decoration:none }
-div.rss_logo { float: right; white-space: nowrap; }
-div.rss_logo a {
- padding:3px 6px; line-height:10px;
- border:1px solid; border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
- color:#ffffff; background-color:#ff6600;
- font-weight:bold; font-family:sans-serif; font-size:10px;
- text-align:center; text-decoration:none;
-}
-div.rss_logo a:hover { background-color:#ee5500; }
-pre { margin: 0; }
-span.logtags span {
- padding: 0px 4px;
- font-size: 10px;
- font-weight: normal;
- border: 1px solid;
- background-color: #ffaaff;
- border-color: #ffccff #ff00ee #ff00ee #ffccff;
-}
-span.logtags span.tagtag {
- background-color: #ffffaa;
- border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
-}
-span.logtags span.branchtag {
- background-color: #aaffaa;
- border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
-}
-span.logtags span.inbranchtag {
- background-color: #d5dde6;
- border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
-}
-
-/* Graph */
-div#wrapper {
- position: relative;
- margin: 0;
- padding: 0;
- margin-top: 3px;
-}
-
-canvas {
- position: absolute;
- z-index: 5;
- top: -0.9em;
- margin: 0;
-}
-
-ul#nodebgs {
- list-style: none inside none;
- padding: 0;
- margin: 0;
- top: -0.7em;
-}
-
-ul#graphnodes li, ul#nodebgs li {
- height: 39px;
-}
-
-ul#graphnodes {
- position: absolute;
- z-index: 10;
- top: -0.8em;
- list-style: none inside none;
- padding: 0;
-}
-
-ul#graphnodes li .info {
- display: block;
- font-size: 100%;
- position: relative;
- top: -3px;
- font-style: italic;
-}
--- a/templates/static/style-monoblue.css Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +0,0 @@
-/*** Initial Settings ***/
-* {
- margin: 0;
- padding: 0;
- font-weight: normal;
- font-style: normal;
-}
-
-html {
- font-size: 100%;
- font-family: sans-serif;
-}
-
-body {
- font-size: 77%;
- margin: 15px 50px;
- background: #4B4B4C;
-}
-
-a {
- color:#0000cc;
- text-decoration: none;
-}
-/*** end of Initial Settings ***/
-
-
-/** common settings **/
-div#container {
- background: #FFFFFF;
- position: relative;
- color: #666;
-}
-
-div.page-header {
- padding: 50px 20px 0;
- background: #006699 top left repeat-x;
- position: relative;
-}
- div.page-header h1 {
- margin: 10px 0 30px;
- font-size: 1.8em;
- font-weight: bold;
- font-family: osaka,'MS P Gothic', Georgia, serif;
- letter-spacing: 1px;
- color: #DDD;
- }
- div.page-header h1 a {
- font-weight: bold;
- color: #FFF;
- }
- div.page-header a {
- text-decoration: none;
- }
-
- div.page-header form {
- position: absolute;
- margin-bottom: 2px;
- bottom: 0;
- right: 20px;
- }
- div.page-header form label {
- color: #DDD;
- }
- div.page-header form input {
- padding: 2px;
- border: solid 1px #DDD;
- }
- div.page-header form dl {
- overflow: hidden;
- }
- div.page-header form dl dt {
- font-size: 1.2em;
- }
- div.page-header form dl dt,
- div.page-header form dl dd {
- margin: 0 0 0 5px;
- float: left;
- height: 24px;
- line-height: 20px;
- }
-
- ul.page-nav {
- margin: 10px 0 0 0;
- list-style-type: none;
- overflow: hidden;
- width: 800px;
- }
- ul.page-nav li {
- margin: 0 2px 0 0;
- float: left;
- width: 80px;
- height: 24px;
- font-size: 1.1em;
- line-height: 24px;
- text-align: center;
- }
- ul.page-nav li.current {
- background: #FFF;
- }
- ul.page-nav li a {
- height: 24px;
- color: #666;
- background: #DDD;
- display: block;
- text-decoration: none;
- }
- ul.page-nav li a:hover {
- color:#333;
- background: #FFF;
- }
-
-ul.submenu {
- margin: 10px 0 -10px 20px;
- list-style-type: none;
-}
-ul.submenu li {
- margin: 0 10px 0 0;
- font-size: 1.2em;
- display: inline;
-}
-
-h2 {
- margin: 20px 0 10px;
- height: 30px;
- line-height: 30px;
- text-indent: 20px;
- background: #FFF;
- font-size: 1.2em;
- border-top: dotted 1px #D5E1E6;
- font-weight: bold;
-}
-h2.no-link {
- color:#006699;
-}
-h2.no-border {
- color: #FFF;
- background: #006699;
- border: 0;
-}
-h2 a {
- font-weight:bold;
- color:#006699;
-}
-
-div.page-path {
- text-align: right;
- padding: 20px 30px 10px 0;
- border:solid #d9d8d1;
- border-width:0px 0px 1px;
- font-size: 1.2em;
-}
-
-div.page-footer {
- margin: 50px 0 0;
- position: relative;
-}
- div.page-footer p {
- position: relative;
- left: 20px;
- bottom: 5px;
- font-size: 1.2em;
- }
-
- ul.rss-logo {
- position: absolute;
- top: -10px;
- right: 20px;
- height: 20px;
- list-style-type: none;
- }
- ul.rss-logo li {
- display: inline;
- }
- ul.rss-logo li a {
- padding: 3px 6px;
- line-height: 10px;
- border:1px solid;
- border-color:#fcc7a5 #7d3302 #3e1a01 #ff954e;
- color:#ffffff;
- background-color:#ff6600;
- font-weight:bold;
- font-family:sans-serif;
- font-size:10px;
- text-align:center;
- text-decoration:none;
- }
- div.rss-logo li a:hover {
- background-color:#ee5500;
- }
-
-p.normal {
- margin: 20px 0 20px 30px;
- font-size: 1.2em;
-}
-
-table {
- margin: 10px 0 0 20px;
- width: 95%;
- border-collapse: collapse;
-}
-table tr td {
- font-size: 1.1em;
-}
-table tr td.nowrap {
- white-space: nowrap;
-}
-/*
-table tr.parity0:hover,
-table tr.parity1:hover {
- background: #D5E1E6;
-}
-*/
-table tr.parity0 {
- background: #F1F6F7;
-}
-table tr.parity1 {
- background: #FFFFFF;
-}
-table tr td {
- padding: 5px 5px;
-}
-table.annotated tr td {
- padding: 0px 5px;
-}
-
-span.logtags span {
- padding: 2px 6px;
- font-weight: normal;
- font-size: 11px;
- border: 1px solid;
- background-color: #ffaaff;
- border-color: #ffccff #ff00ee #ff00ee #ffccff;
-}
-span.logtags span.tagtag {
- background-color: #ffffaa;
- border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
-}
-span.logtags span.branchtag {
- background-color: #aaffaa;
- border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
-}
-span.logtags span.inbranchtag {
- background-color: #d5dde6;
- border-color: #e3ecf4 #9398f4 #9398f4 #e3ecf4;
-}
-
-div.diff pre {
- margin: 10px 0 0 0;
-}
-div.diff pre span {
- font-family: monospace;
- white-space: pre;
- font-size: 1.2em;
- padding: 3px 0;
-}
-td.source {
- white-space: pre;
- font-family: monospace;
- margin: 10px 30px 0;
- font-size: 1.2em;
- font-family: monospace;
-}
- div.source div.parity0,
- div.source div.parity1 {
- padding: 1px;
- font-size: 1.2em;
- }
- div.source div.parity0 {
- background: #F1F6F7;
- }
- div.source div.parity1 {
- background: #FFFFFF;
- }
-div.parity0:hover,
-div.parity1:hover {
- background: #D5E1E6;
-}
-.linenr {
- color: #999;
- text-align: right;
-}
-.lineno {
- text-align: right;
-}
-.lineno a {
- color: #999;
-}
-td.linenr {
- width: 60px;
-}
-
-div#powered-by {
- position: absolute;
- width: 75px;
- top: 15px;
- right: 20px;
- font-size: 1.2em;
-}
-div#powered-by a {
- color: #EEE;
- text-decoration: none;
-}
-div#powered-by a:hover {
- text-decoration: underline;
-}
-/*
-div#monoblue-corner-top-left {
- position: absolute;
- top: 0;
- left: 0;
- width: 10px;
- height: 10px;
- background: url(./monoblue-corner.png) top left no-repeat !important;
- background: none;
-}
-div#monoblue-corner-top-right {
- position: absolute;
- top: 0;
- right: 0;
- width: 10px;
- height: 10px;
- background: url(./monoblue-corner.png) top right no-repeat !important;
- background: none;
-}
-div#monoblue-corner-bottom-left {
- position: absolute;
- bottom: 0;
- left: 0;
- width: 10px;
- height: 10px;
- background: url(./monoblue-corner.png) bottom left no-repeat !important;
- background: none;
-}
-div#monoblue-corner-bottom-right {
- position: absolute;
- bottom: 0;
- right: 0;
- width: 10px;
- height: 10px;
- background: url(./monoblue-corner.png) bottom right no-repeat !important;
- background: none;
-}
-*/
-/** end of common settings **/
-
-/** summary **/
-dl.overview {
- margin: 0 0 0 30px;
- font-size: 1.1em;
- overflow: hidden;
-}
- dl.overview dt,
- dl.overview dd {
- margin: 5px 0;
- float: left;
- }
- dl.overview dt {
- clear: left;
- font-weight: bold;
- width: 150px;
- }
-/** end of summary **/
-
-/** chagelog **/
-h3.changelog {
- margin: 20px 0 5px 30px;
- padding: 0 0 2px;
- font-size: 1.4em;
- border-bottom: dotted 1px #D5E1E6;
-}
-ul.changelog-entry {
- margin: 0 0 10px 30px;
- list-style-type: none;
- position: relative;
-}
-ul.changelog-entry li span.revdate {
- font-size: 1.1em;
-}
-ul.changelog-entry li.age {
- position: absolute;
- top: -25px;
- right: 10px;
- font-size: 1.4em;
- color: #CCC;
- font-weight: bold;
- font-style: italic;
-}
-ul.changelog-entry li span.name {
- font-size: 1.2em;
- font-weight: bold;
-}
-ul.changelog-entry li.description {
- margin: 10px 0 0;
- font-size: 1.1em;
-}
-/** end of changelog **/
-
-/** file **/
-p.files {
- margin: 0 0 0 20px;
- font-size: 2.0em;
- font-weight: bold;
-}
-/** end of file **/
-
-/** changeset **/
-h3.changeset {
- margin: 20px 0 5px 20px;
- padding: 0 0 2px;
- font-size: 1.6em;
- border-bottom: dotted 1px #D5E1E6;
-}
-p.changeset-age {
- position: relative;
-}
-p.changeset-age span {
- position: absolute;
- top: -25px;
- right: 10px;
- font-size: 1.4em;
- color: #CCC;
- font-weight: bold;
- font-style: italic;
-}
-p.description {
- margin: 10px 30px 0 30px;
- padding: 10px;
- border: solid 1px #CCC;
- font-size: 1.2em;
-}
-/** end of changeset **/
-
-/** canvas **/
-div#wrapper {
- position: relative;
- font-size: 1.2em;
-}
-
-canvas {
- position: absolute;
- z-index: 5;
- top: -0.7em;
-}
-
-ul#nodebgs li.parity0 {
- background: #F1F6F7;
-}
-
-ul#nodebgs li.parity1 {
- background: #FFFFFF;
-}
-
-ul#graphnodes {
- position: absolute;
- z-index: 10;
- top: 7px;
- list-style: none inside none;
-}
-
-ul#nodebgs {
- list-style: none inside none;
-}
-
-ul#graphnodes li, ul#nodebgs li {
- height: 39px;
-}
-
-ul#graphnodes li .info {
- display: block;
- position: relative;
-}
-/** end of canvas **/
--- a/templates/static/style-paper.css Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-body {
- margin: 0;
- padding: 0;
- background: white;
- font-family: sans-serif;
-}
-
-.container {
- padding-left: 115px;
-}
-
-.main {
- position: relative;
- background: white;
- padding: 2em 2em 2em 0;
-}
-
-#.main {
- width: 98%;
-}
-
-.overflow {
- width: 100%;
- overflow: auto;
-}
-
-.menu {
- width: 90px;
- margin: 0;
- font-size: 80%;
- text-align: left;
- position: absolute;
- top: 20px;
- left: 20px;
- right: auto;
-}
-
-.menu ul {
- list-style: none;
- padding: 0;
- margin: 10px 0 0 0;
- border-left: 2px solid #999;
-}
-
-.menu li {
- margin-bottom: 3px;
- padding: 2px 4px;
- background: white;
- color: black;
- font-weight: normal;
-}
-
-.menu li.active {
- font-weight: bold;
-}
-
-.menu img {
- width: 75px;
- height: 90px;
- border: 0;
-}
-
-.menu a { color: black; display: block; }
-
-.search {
- position: absolute;
- top: .7em;
- right: 2em;
-}
-
-form.search div#hint {
- display: none;
- position: absolute;
- top: 40px;
- right: 0px;
- width: 190px;
- padding: 5px;
- background: #ffc;
- font-size: 70%;
- border: 1px solid yellow;
- -moz-border-radius: 5px; /* this works only in camino/firefox */
- -webkit-border-radius: 5px; /* this is just for Safari */
-}
-
-form.search:hover div#hint { display: block; }
-
-a { text-decoration:none; }
-.age { white-space:nowrap; }
-.date { white-space:nowrap; }
-.indexlinks { white-space:nowrap; }
-.parity0 { background-color: #f0f0f0; }
-.parity1 { background-color: white; }
-.plusline { color: green; }
-.minusline { color: #dc143c; } /* crimson */
-.atline { color: purple; }
-
-.navigate {
- text-align: right;
- font-size: 60%;
- margin: 1em 0;
-}
-
-.tag {
- color: #999;
- font-size: 70%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-.branchhead {
- color: #000;
- font-size: 80%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-ul#graphnodes .branchhead {
- font-size: 75%;
-}
-
-.branchname {
- color: #000;
- font-size: 60%;
- font-weight: normal;
- margin-left: .5em;
- vertical-align: baseline;
-}
-
-h3 .branchname {
- font-size: 80%;
-}
-
-/* Common */
-pre { margin: 0; }
-
-h2 { font-size: 120%; border-bottom: 1px solid #999; }
-h2 a { color: #000; }
-h3 {
- margin-top: -.7em;
- font-size: 100%;
-}
-
-/* log and tags tables */
-.bigtable {
- border-bottom: 1px solid #999;
- border-collapse: collapse;
- font-size: 90%;
- width: 100%;
- font-weight: normal;
- text-align: left;
-}
-
-.bigtable td {
- vertical-align: top;
-}
-
-.bigtable th {
- padding: 1px 4px;
- border-bottom: 1px solid #999;
-}
-.bigtable tr { border: none; }
-.bigtable .age { width: 7em; }
-.bigtable .author { width: 12em; }
-.bigtable .description { }
-.bigtable .node { width: 5em; font-family: monospace;}
-.bigtable .permissions { width: 8em; text-align: left;}
-.bigtable .size { width: 5em; text-align: right; }
-.bigtable .annotate { text-align: right; }
-.bigtable td.annotate { font-size: smaller; }
-.bigtable td.source { font-size: inherit; }
-
-.source, .sourcefirst, .sourcelast {
- font-family: monospace;
- white-space: pre;
- padding: 1px 4px;
- font-size: 90%;
-}
-.sourcefirst { border-bottom: 1px solid #999; font-weight: bold; }
-.sourcelast { border-top: 1px solid #999; }
-.source a { color: #999; font-size: smaller; font-family: monospace;}
-.bottomline { border-bottom: 1px solid #999; }
-
-.fileline { font-family: monospace; }
-.fileline img { border: 0; }
-
-.tagEntry .closed { color: #99f; }
-
-/* Changeset entry */
-#changesetEntry {
- border-collapse: collapse;
- font-size: 90%;
- width: 100%;
- margin-bottom: 1em;
-}
-
-#changesetEntry th {
- padding: 1px 4px;
- width: 4em;
- text-align: right;
- font-weight: normal;
- color: #999;
- margin-right: .5em;
- vertical-align: top;
-}
-
-div.description {
- border-left: 2px solid #999;
- margin: 1em 0 1em 0;
- padding: .3em;
-}
-
-/* Graph */
-div#wrapper {
- position: relative;
- border-top: 1px solid black;
- border-bottom: 1px solid black;
- margin: 0;
- padding: 0;
-}
-
-canvas {
- position: absolute;
- z-index: 5;
- top: -0.7em;
- margin: 0;
-}
-
-ul#graphnodes {
- position: absolute;
- z-index: 10;
- top: -1.0em;
- list-style: none inside none;
- padding: 0;
-}
-
-ul#nodebgs {
- list-style: none inside none;
- padding: 0;
- margin: 0;
- top: -0.7em;
-}
-
-ul#graphnodes li, ul#nodebgs li {
- height: 39px;
-}
-
-ul#graphnodes li .info {
- display: block;
- font-size: 70%;
- position: relative;
- top: -3px;
-}
--- a/templates/static/style.css Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-a { text-decoration:none; }
-.age { white-space:nowrap; }
-.date { white-space:nowrap; }
-.indexlinks { white-space:nowrap; }
-.parity0 { background-color: #ddd; }
-.parity1 { background-color: #eee; }
-.lineno { width: 60px; color: #aaa; font-size: smaller;
- text-align: right; }
-.plusline { color: green; }
-.minusline { color: red; }
-.atline { color: purple; }
-.annotate { font-size: smaller; text-align: right; padding-right: 1em; }
-.buttons a {
- background-color: #666;
- padding: 2pt;
- color: white;
- font-family: sans;
- font-weight: bold;
-}
-.navigate a {
- background-color: #ccc;
- padding: 2pt;
- font-family: sans;
- color: black;
-}
-
-.metatag {
- background-color: #888;
- color: white;
- text-align: right;
-}
-
-/* Common */
-pre { margin: 0; }
-
-.logo {
- float: right;
- clear: right;
-}
-
-/* Changelog/Filelog entries */
-.logEntry { width: 100%; }
-.logEntry .age { width: 15%; }
-.logEntry th { font-weight: normal; text-align: right; vertical-align: top; }
-.logEntry th.age, .logEntry th.firstline { font-weight: bold; }
-.logEntry th.firstline { text-align: left; width: inherit; }
-
-/* Shortlog entries */
-.slogEntry { width: 100%; }
-.slogEntry .age { width: 8em; }
-.slogEntry td { font-weight: normal; text-align: left; vertical-align: top; }
-.slogEntry td.author { width: 15em; }
-
-/* Tag entries */
-#tagEntries { list-style: none; margin: 0; padding: 0; }
-#tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; }
-
-/* Changeset entry */
-#changesetEntry { }
-#changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
-#changesetEntry th.files, #changesetEntry th.description { vertical-align: top; }
-
-/* File diff view */
-#filediffEntry { }
-#filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; }
-
-/* Graph */
-div#wrapper {
- position: relative;
- margin: 0;
- padding: 0;
-}
-
-canvas {
- position: absolute;
- z-index: 5;
- top: -0.6em;
- margin: 0;
-}
-
-ul#nodebgs {
- list-style: none inside none;
- padding: 0;
- margin: 0;
- top: -0.7em;
-}
-
-ul#graphnodes li, ul#nodebgs li {
- height: 39px;
-}
-
-ul#graphnodes {
- position: absolute;
- z-index: 10;
- top: -0.85em;
- list-style: none inside none;
- padding: 0;
-}
-
-ul#graphnodes li .info {
- display: block;
- font-size: 70%;
- position: relative;
- top: -1px;
-}
--- a/templates/template-vars.txt Thu Dec 10 12:31:21 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-repo the name of the repo
-rev a changeset.manifest revision
-node a changeset node
-changesets total number of changesets
-file a filename
-filerev a file revision
-filerevs total number of file revisions
-up the directory of the relevant file
-path a path in the manifest, starting with "/"
-basename a short pathname
-date a date string
-age age in hours, days, etc
-line a line of text (escaped)
-desc a description (escaped, with breaks)
-shortdesc a short description (escaped)
-author a name or email addressv(obfuscated)
-parent a list of the parent
-child a list of the children
-tags a list of tag
-
-header the global page header
-footer the global page footer
-
-files a list of file links
-file_copies a list of pairs of name, source filenames
-dirs a set of directory links
-diff a diff of one or more files
-annotate an annotated file
-entries the entries relevant to the page
-
-Templates and commands:
- changelog(rev) - a page for browsing changesets
- naventry - a link for jumping to a changeset number
- filenodelink - jump to file diff
- fileellipses - printed after maxfiles
- changelogentry - an entry in the log
- manifest - browse a manifest as a directory tree
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/blacklist Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,37 @@
+# ConfigParser format
+# Definitions of blacklists for run-tests.py
+#
+# Identify in config sections a list of tests you want to be skipped.
+# Section names are meant to be used as targets for run-tests.py --blacklist
+# option.
+# "test-" prefixes should be omitted from test names. Values are not used.
+#
+# e.g. if your file looks like:
+## [example]
+## hgrc =
+## help = "this string is not used"
+# then calling "run-tests.py --blacklist example" will exclude test-hgrc and
+# test-help from the list of tests to run.
+
+[inotify-failures]
+# When --inotify is activated, help output and config changes:
+debugcomplete =
+empty =
+fncache =
+globalopts =
+help =
+hgrc =
+inherit-mode =
+qrecord =
+strict =
+
+# --inotify activates de facto the inotify extension. It does not play well
+# with inotify-specific tests, which activate/desactivate inotify at will:
+inotify =
+inotify-debuginotify =
+inotify-dirty-dirstate =
+inotify-issue1208 =
+inotify-issue1371 =
+inotify-issue1542 =
+inotify-issue1556 =
+inotify-lookup =
--- a/tests/run-tests.py Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/run-tests.py Thu Dec 10 12:31:57 2009 +0100
@@ -41,6 +41,7 @@
# completes fairly quickly, includes both shell and Python scripts, and
# includes some scripts that run daemon processes.)
+from ConfigParser import ConfigParser
import difflib
import errno
import optparse
@@ -130,6 +131,11 @@
help="use pure Python code instead of C extensions")
parser.add_option("-3", "--py3k-warnings", action="store_true",
help="enable Py3k warnings on Python 2.6+")
+ parser.add_option("--inotify", action="store_true",
+ help="enable inotify extension when running tests")
+ parser.add_option("--blacklist", action="append",
+ help="skip tests listed in the specified section of "
+ "the blacklist file")
for option, default in defaults.items():
defaults[option] = int(os.environ.get(*default))
@@ -195,6 +201,14 @@
if options.py3k_warnings:
if sys.version_info[:2] < (2, 6) or sys.version_info[:2] >= (3, 0):
parser.error('--py3k-warnings can only be used on Python 2.6+')
+ if options.blacklist:
+ configparser = ConfigParser()
+ configparser.read("blacklist")
+ blacklist = dict()
+ for section in options.blacklist:
+ for (item, value) in configparser.items(section):
+ blacklist["test-" + item] = section
+ options.blacklist = blacklist
return (options, args)
@@ -293,10 +307,18 @@
script = os.path.realpath(sys.argv[0])
hgroot = os.path.dirname(os.path.dirname(script))
os.chdir(hgroot)
+ nohome = '--home=""'
+ if os.name == 'nt':
+ # The --home="" trick works only on OS where os.sep == '/'
+ # because of a distutils convert_path() fast-path. Avoid it at
+ # least on Windows for now, deal with .pydistutils.cfg bugs
+ # when they happen.
+ nohome = ''
cmd = ('%s setup.py %s clean --all'
' install --force --prefix="%s" --install-lib="%s"'
- ' --install-scripts="%s" >%s 2>&1'
- % (sys.executable, pure, INST, PYTHONDIR, BINDIR, installerrs))
+ ' --install-scripts="%s" --install-data="%s" %s >%s 2>&1'
+ % (sys.executable, pure, INST, PYTHONDIR, BINDIR, INST, nohome,
+ installerrs))
vlog("# Running", cmd)
if os.system(cmd) == 0:
if not options.verbose:
@@ -449,6 +471,12 @@
hgrc.write('backout = -d "0 0"\n')
hgrc.write('commit = -d "0 0"\n')
hgrc.write('tag = -d "0 0"\n')
+ if options.inotify:
+ hgrc.write('[extensions]\n')
+ hgrc.write('inotify=\n')
+ hgrc.write('[inotify]\n')
+ hgrc.write('pidfile=%s\n' % DAEMON_PIDS)
+ hgrc.write('appendpid=True\n')
hgrc.close()
err = os.path.join(TESTDIR, test+".err")
@@ -715,6 +743,13 @@
fails = []
for test in tests:
+ if options.blacklist:
+ section = options.blacklist.get(test)
+ if section is not None:
+ skips.append((test, "blacklisted (%s section)" % section))
+ skipped += 1
+ continue
+
if options.retest and not os.path.exists(test + ".err"):
skipped += 1
continue
--- a/tests/test-alias Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-alias Thu Dec 10 12:31:57 2009 +0100
@@ -25,15 +25,19 @@
echo '% unknown'
hg unknown
+hg help unknown
echo '% ambiguous'
hg ambiguous
+hg help ambiguous
echo '% recursive'
hg recursive
+hg help recursive
echo '% no definition'
hg nodef
+hg help nodef
cd alias
--- a/tests/test-alias.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-alias.out Thu Dec 10 12:31:57 2009 +0100
@@ -1,12 +1,16 @@
% basic
% unknown
alias 'unknown' resolves to unknown command 'bargle'
+alias 'unknown' resolves to unknown command 'bargle'
% ambiguous
alias 'ambiguous' resolves to ambiguous command 's'
+alias 'ambiguous' resolves to ambiguous command 's'
% recursive
alias 'recursive' resolves to unknown command 'recursive'
+alias 'recursive' resolves to unknown command 'recursive'
% no definition
no definition for alias 'nodefinition'
+no definition for alias 'nodefinition'
% no usage
no rollback information available
adding foo
--- a/tests/test-command-template Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-command-template Thu Dec 10 12:31:57 2009 +0100
@@ -93,7 +93,7 @@
echo "# keys work"
for key in author branches date desc file_adds file_dels file_mods \
- files manifest node parents rev tags diffstat; do
+ files manifest node parents rev tags diffstat extras; do
for mode in '' --verbose --debug; do
hg log $mode --template "$key$mode: {$key}\n"
done
--- a/tests/test-command-template.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-command-template.out Thu Dec 10 12:31:57 2009 +0100
@@ -150,7 +150,7 @@
1970-01-17 person <person>
* new branch
- [32a18f097fcc]
+ [32a18f097fcc] <foo>
1970-01-16 person <person>
@@ -569,6 +569,33 @@
diffstat--debug: 1: +4/-0
diffstat--debug: 1: +2/-0
diffstat--debug: 1: +1/-0
+extras: branch=default
+extras: branch=default
+extras: branch=default
+extras: branch=default
+extras: branch=foo
+extras: branch=default
+extras: branch=default
+extras: branch=default
+extras: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=foo
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--verbose: branch=default
+extras--debug: branch=default
+extras--debug: branch=default
+extras--debug: branch=default
+extras--debug: branch=default
+extras--debug: branch=foo
+extras--debug: branch=default
+extras--debug: branch=default
+extras--debug: branch=default
+extras--debug: branch=default
# filters work
hostname
--- a/tests/test-convert Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-convert Thu Dec 10 12:31:57 2009 +0100
@@ -50,3 +50,10 @@
# override $PATH to ensure p4 not visible; use $PYTHON in case we're
# running from a devel copy, not a temp installation
PATH=$BINDIR $PYTHON $BINDIR/hg convert emptydir 2>&1 | sed 's,file://.*/emptydir,.../emptydir,g'
+
+echo % convert with imaginary source type
+hg convert --source-type foo a a-foo
+echo % convert with imaginary sink type
+hg convert --dest-type foo a a-foo
+
+true
--- a/tests/test-convert-filemap Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-convert-filemap Thu Dec 10 12:31:57 2009 +0100
@@ -16,9 +16,11 @@
echo foo > foo
echo baz > baz
-mkdir dir
+mkdir -p dir/subdir
echo dir/file >> dir/file
echo dir/file2 >> dir/file2
+echo dir/subdir/file3 >> dir/subdir/file3
+echo dir/subdir/file4 >> dir/subdir/file4
hg ci -d '0 0' -qAm '0: add foo baz dir/'
echo bar > bar
@@ -114,6 +116,8 @@
include copied
rename foo foo2
rename copied copied2
+exclude dir/subdir
+include dir/subdir/file3
EOF
hg -q convert --filemap renames.fmap --datesort source renames.repo
hg up -q -R renames.repo
--- a/tests/test-convert-filemap.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-convert-filemap.out Thu Dec 10 12:31:57 2009 +0100
@@ -16,7 +16,7 @@
|/
o 1 "1: add bar quux; copy foo to copied" files: bar copied quux
|
-o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 foo
+o 0 "0: add foo baz dir/" files: baz dir/file dir/file2 dir/subdir/file3 dir/subdir/file4 foo
% final file versions in this repo:
9463f52fe115e377cf2878d4fc548117211063f2 644 bar
@@ -24,6 +24,8 @@
6ca237634e1f6bee1b6db94292fb44f092a25842 644 copied
3e20847584beff41d7cd16136b7331ab3d754be0 644 dir/file
75e6d3f8328f5f6ace6bf10b98df793416a09dca 644 dir/file2
+5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir/subdir/file3
+57a1c1511590f3de52874adfa04effe8a77d64af 644 dir/subdir/file4
9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
bc3eca3f47023a3e70ca0d8cc95a22a6827db19d 644 quux
copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
@@ -144,10 +146,11 @@
|
o 1 "1: add bar quux; copy foo to copied" files: copied2
|
-o 0 "0: add foo baz dir/" files: dir2/file foo2
+o 0 "0: add foo baz dir/" files: dir2/file dir2/subdir/file3 foo2
e5e3d520be9be45937d0b06b004fadcd6c221fa2 644 copied2
3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file
+5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/subdir/file3
9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2
copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd
copied:
--- a/tests/test-convert.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-convert.out Thu Dec 10 12:31:57 2009 +0100
@@ -259,3 +259,8 @@
emptydir does not look like a Bazaar repo
cannot find required "p4" tool
abort: emptydir: missing or unsupported repository
+% convert with imaginary source type
+initializing destination a-foo repository
+abort: foo: invalid source repository type
+% convert with imaginary sink type
+abort: foo: invalid destination repository type
--- a/tests/test-debugcomplete.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-debugcomplete.out Thu Dec 10 12:31:57 2009 +0100
@@ -168,7 +168,7 @@
clone: noupdate, updaterev, rev, pull, uncompressed, ssh, remotecmd
commit: addremove, close-branch, include, exclude, message, logfile, date, user
diff: rev, change, text, git, nodates, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, include, exclude
-export: output, switch-parent, text, git, nodates
+export: output, switch-parent, rev, text, git, nodates
forget: include, exclude
init: ssh, remotecmd
log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, prune, patch, git, limit, no-merges, style, template, include, exclude
@@ -177,7 +177,7 @@
push: force, rev, ssh, remotecmd
remove: after, force, include, exclude
serve: accesslog, daemon, daemon-pipefds, errorlog, port, address, prefix, name, webdir-conf, pid-file, stdio, templates, style, ipv6, certificate
-status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, include, exclude
+status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, change, include, exclude
summary: remote
update: clean, check, date, rev
addremove: similarity, include, exclude, dry-run
--- a/tests/test-fncache.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-fncache.out Thu Dec 10 12:31:57 2009 +0100
@@ -50,6 +50,7 @@
.hg/data/tst.d.hg
.hg/data/tst.d.hg/foo.i
.hg/dirstate
+.hg/last-message.txt
.hg/requires
.hg/undo
.hg/undo.branch
@@ -59,6 +60,7 @@
.hg
.hg/00changelog.i
.hg/dirstate
+.hg/last-message.txt
.hg/requires
.hg/store
.hg/store/00changelog.i
--- a/tests/test-help.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-help.out Thu Dec 10 12:31:57 2009 +0100
@@ -270,7 +270,9 @@
parent.
If one revision is given, it is used as the base revision. If two
- revisions are given, the differences between them are shown.
+ revisions are given, the differences between them are shown. The --change
+ option can also be used as a shortcut to list the changed files of a
+ revision from its first parent.
The codes used to show the status of files are:
@@ -297,6 +299,7 @@
-C --copies show source of copied files
-0 --print0 end filenames with NUL, for use with xargs
--rev show difference from revision
+ --change list the changed files of a revision
-I --include include names matching the given patterns
-X --exclude exclude names matching the given patterns
--- a/tests/test-hgweb-commands Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-hgweb-commands Thu Dec 10 12:31:57 2009 +0100
@@ -35,8 +35,8 @@
"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/filediff/1/foo/?style=raw'
echo % Overviews
-"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/tags/?style=atom' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
-"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/branches/?style=gitweb' | sed "s/http:\/\/[^/]*\//http:\/\/127.0.0.1\//"
+"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-tags'
+"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/raw-branches'
"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/summary/?style=gitweb'
"$TESTDIR/get-with-headers.py" 127.0.0.1:$HGPORT '/graph/?style=gitweb'
--- a/tests/test-hgweb-commands.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-hgweb-commands.out Thu Dec 10 12:31:57 2009 +0100
@@ -465,97 +465,12 @@
% Overviews
200 Script output follows
-<?xml version="1.0" encoding="ascii"?>
-<feed xmlns="http://127.0.0.1/2005/Atom">
- <id>http://127.0.0.1/</id>
- <link rel="self" href="http://127.0.0.1/atom-tags"/>
- <link rel="alternate" href="http://127.0.0.1/tags"/>
- <title>test: tags</title>
- <summary>test tag history</summary>
- <author><name>Mercurial SCM</name></author>
- <updated>1970-01-01T00:00:00+00:00</updated>
-
- <entry>
- <title>1.0</title>
- <link rel="alternate" href="http://127.0.0.1/rev/2ef0ac749a14"/>
- <id>http://127.0.0.1/#tag-2ef0ac749a14e4f57a5a822464a0902c6f7f448f</id>
- <updated>1970-01-01T00:00:00+00:00</updated>
- <published>1970-01-01T00:00:00+00:00</published>
- <content type="text">1.0</content>
- </entry>
-
-</feed>
+tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe
+1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f
200 Script output follows
-<?xml version="1.0" encoding="ascii"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://127.0.0.1/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://127.0.0.1/1999/xhtml" xml:lang="en-US" lang="en-US">
-<head>
-<link rel="icon" href="/static/hgicon.png" type="image/png" />
-<meta name="robots" content="index, nofollow"/>
-<link rel="stylesheet" href="/static/style-gitweb.css" type="text/css" />
-
-
-<title>test: Branches</title>
-<link rel="alternate" type="application/atom+xml"
- href="/atom-tags" title="Atom feed for test"/>
-<link rel="alternate" type="application/rss+xml"
- href="/rss-tags" title="RSS feed for test"/>
-</head>
-<body>
-
-<div class="page_header">
-<a href="http://127.0.0.1/" title="Mercurial" style="float: right;">Mercurial</a><a href="/summary?style=gitweb">test</a> / branches
-</div>
-
-<div class="page_nav">
-<a href="/summary?style=gitweb">summary</a> |
-<a href="/shortlog?style=gitweb">shortlog</a> |
-<a href="/log?style=gitweb">changelog</a> |
-<a href="/graph?style=gitweb">graph</a> |
-<a href="/tags?style=gitweb">tags</a> |
-branches |
-<a href="/file/1d22e65f027e?style=gitweb">files</a>
-<br/>
-</div>
-
-<div class="title"> </div>
-<table cellspacing="0">
-
-<tr class="parity0">
-<td class="age"><i>1970-01-01</i></td>
-<td><a class="list" href="/shortlog/1d22e65f027e?style=gitweb"><b>1d22e65f027e</b></a></td>
-<td class="open">stable</td>
-<td class="link">
-<a href="/changeset/1d22e65f027e?style=gitweb">changeset</a> |
-<a href="/log/1d22e65f027e?style=gitweb">changelog</a> |
-<a href="/file/1d22e65f027e?style=gitweb">files</a>
-</td>
-</tr>
-<tr class="parity1">
-<td class="age"><i>1970-01-01</i></td>
-<td><a class="list" href="/shortlog/a4f92ed23982?style=gitweb"><b>a4f92ed23982</b></a></td>
-<td class="inactive">default</td>
-<td class="link">
-<a href="/changeset/a4f92ed23982?style=gitweb">changeset</a> |
-<a href="/log/a4f92ed23982?style=gitweb">changelog</a> |
-<a href="/file/a4f92ed23982?style=gitweb">files</a>
-</td>
-</tr>
-</table>
-
-<div class="page_footer">
-<div class="page_footer_text">test</div>
-<div class="rss_logo">
-<a href="/rss-log">RSS</a>
-<a href="/atom-log">Atom</a>
-</div>
-<br />
-
-</div>
-</body>
-</html>
-
+stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open
+default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive
200 Script output follows
<?xml version="1.0" encoding="ascii"?>
--- a/tests/test-inherit-mode.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-inherit-mode.out Thu Dec 10 12:31:57 2009 +0100
@@ -14,6 +14,7 @@
00700 ./.hg/
00600 ./.hg/00changelog.i
00660 ./.hg/dirstate
+00660 ./.hg/last-message.txt
00600 ./.hg/requires
00770 ./.hg/store/
00660 ./.hg/store/00changelog.i
--- a/tests/test-non-interactive-wsgi Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-non-interactive-wsgi Thu Dec 10 12:31:57 2009 +0100
@@ -60,9 +60,14 @@
'SERVER_PROTOCOL': 'HTTP/1.0'
}
-hgweb('.')(env, startrsp)
+i = hgweb('.')
+i(env, startrsp)
print '---- ERRORS'
print errors.getvalue()
+print '---- OS.ENVIRON wsgi variables'
+print sorted([x for x in os.environ if x.startswith('wsgi')])
+print '---- request.ENVIRON wsgi variables'
+print sorted([x for x in i.repo.ui.environ if x.startswith('wsgi')])
EOF
python request.py
--- a/tests/test-non-interactive-wsgi.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-non-interactive-wsgi.out Thu Dec 10 12:31:57 2009 +0100
@@ -10,3 +10,7 @@
[('Content-Type', 'text/html; charset=ascii')]
---- ERRORS
+---- OS.ENVIRON wsgi variables
+[]
+---- request.ENVIRON wsgi variables
+['wsgi.errors', 'wsgi.input', 'wsgi.multiprocess', 'wsgi.multithread', 'wsgi.run_once', 'wsgi.url_scheme', 'wsgi.version']
--- a/tests/test-patchbomb Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-patchbomb Thu Dec 10 12:31:57 2009 +0100
@@ -169,6 +169,12 @@
hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
-c bar -s test -r 0:1 | fixheaders
+echo "% test multi-address parsing"
+hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
+ -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
+ --config email.bcc='"Quux, A." <quux>'
+cat tmp.mbox | fixheaders
+
echo "% test multi-byte domain parsing"
UUML=`printf '\374'`
HGENCODING=iso-8859-1
--- a/tests/test-patchbomb.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-patchbomb.out Thu Dec 10 12:31:57 2009 +0100
@@ -1469,6 +1469,39 @@
@@ -0,0 +1,1 @@
+b
+% test multi-address parsing
+This patch series consists of 1 patches.
+
+
+Writing [PATCH] test ...
+From quux Tue Jan 01 00:01:01 1980
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [PATCH] test
+X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
+Message-Id: <8580ff50825a50c8f716.315532860@
+User-Agent: Mercurial-patchbomb
+Date: Tue, 01 Jan 1980 00:01:00 +0000
+From: quux
+To: spam <spam>, eggs, toast
+Cc: foo, bar@example.com, "A, B <>" <a@example.com>
+Bcc: "Quux, A." <quux>
+
+# HG changeset patch
+# User test
+# Date 1 0
+# Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
+# Parent 0000000000000000000000000000000000000000
+a
+
+diff -r 000000000000 -r 8580ff50825a a
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/a Thu Jan 01 00:00:01 1970 +0000
+@@ -0,0 +1,1 @@
++a
+
+
% test multi-byte domain parsing
This patch series consists of 1 patches.
--- a/tests/test-rollback Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-rollback Thu Dec 10 12:31:57 2009 +0100
@@ -15,14 +15,34 @@
hg status
echo % Test issue 902
-hg commit -m "test"
+hg commit -m "test2"
hg branch test
hg rollback
hg branch
+echo '% Test issue 1635 (commit message saved)'
+echo '.hg/last-message.txt:'
+cat .hg/last-message.txt ; echo
+
echo % Test rollback of hg before issue 902 was fixed
-hg commit -m "test"
+hg commit -m "test3"
hg branch test
rm .hg/undo.branch
hg rollback
hg branch
+
+echo '% rollback by pretxncommit saves commit message (issue 1635)'
+echo a >> a
+hg --config hooks.pretxncommit=false commit -m"precious commit message"
+echo '.hg/last-message.txt:'
+cat .hg/last-message.txt ; echo
+
+echo '% same thing, but run $EDITOR'
+cat > $HGTMP/editor <<'__EOF__'
+#!/bin/sh
+echo "another precious commit message" > "$1"
+__EOF__
+chmod +x $HGTMP/editor
+HGEDITOR=$HGTMP/editor hg --config hooks.pretxncommit=false commit
+echo '.hg/last-message.txt:'
+cat .hg/last-message.txt
--- a/tests/test-rollback.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-rollback.out Thu Dec 10 12:31:57 2009 +0100
@@ -20,8 +20,24 @@
marked working directory as branch test
rolling back last transaction
default
+% Test issue 1635 (commit message saved)
+.hg/last-message.txt:
+test2
% Test rollback of hg before issue 902 was fixed
marked working directory as branch test
rolling back last transaction
Named branch could not be reset, current branch still is: test
test
+% rollback by pretxncommit saves commit message (issue 1635)
+transaction abort!
+rollback completed
+abort: pretxncommit hook exited with status 1
+.hg/last-message.txt:
+precious commit message
+% same thing, but run $EDITOR
+transaction abort!
+rollback completed
+note: commit message saved in .hg/last-message.txt
+abort: pretxncommit hook exited with status 1
+.hg/last-message.txt:
+another precious commit message
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-share Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+echo "[extensions]" >> $HGRCPATH
+echo "share = " >> $HGRCPATH
+
+echo % prepare repo1
+hg init repo1
+cd repo1
+echo a > a
+hg commit -A -m'init'
+
+echo % share it
+cd ..
+hg share repo1 repo2
+
+echo % contents of repo2/.hg
+cd repo2
+[ -d .hg/store ] \
+ && echo "fail: .hg/store should not exist" \
+ || echo "pass: .hg/store does not exist"
+cat .hg/sharedpath | sed "s:$HGTMP:*HGTMP*:"; echo
+
+echo % commit in shared clone
+echo a >> a
+hg commit -m'change in shared clone'
+
+echo % check original
+cd ../repo1
+hg log
+hg update
+cat a # should be two lines of "a"
+
+echo % commit in original
+echo b > b
+hg commit -A -m'another file'
+
+echo % check in shared clone
+cd ../repo2
+hg log
+hg update
+cat b # should exist with one "b"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-share.out Thu Dec 10 12:31:57 2009 +0100
@@ -0,0 +1,45 @@
+% prepare repo1
+adding a
+% share it
+updating working directory
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+% contents of repo2/.hg
+pass: .hg/store does not exist
+*HGTMP*/test-share/repo1/.hg
+% commit in shared clone
+% check original
+changeset: 1:8af4dc49db9e
+tag: tip
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: change in shared clone
+
+changeset: 0:d3873e73d99e
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: init
+
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+a
+a
+% commit in original
+adding b
+% check in shared clone
+changeset: 2:c2e0ac586386
+tag: tip
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: another file
+
+changeset: 1:8af4dc49db9e
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: change in shared clone
+
+changeset: 0:d3873e73d99e
+user: test
+date: Thu Jan 01 00:00:00 1970 +0000
+summary: init
+
+1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+b
--- a/tests/test-status Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-status Thu Dec 10 12:31:57 2009 +0100
@@ -91,4 +91,27 @@
assert "-q" "-u" 1
assert "-m" "-a" 1
assert "-r" "-d" 1
+cd ..
+hg init repo4
+cd repo4
+touch modified removed deleted
+hg ci -q -A -m 'initial checkin' -d "1000000 0"
+touch added unknown
+hg add added
+hg remove removed
+rm deleted
+echo x > modified
+hg copy modified copied
+hg ci -m 'test checkin' -d "1000001 0"
+rm *
+touch unrelated
+hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
+echo "hg status --change 1:"
+hg status --change 1
+echo "hg status --change 1 unrelated:"
+hg status --change 1 unrelated
+echo "hg status -C --change 1 added modified copied removed deleted:"
+hg status -C --change 1 added modified copied removed deleted
+echo "hg status -A --change 1"
+hg status -A --change 1
--- a/tests/test-status.out Thu Dec 10 12:31:21 2009 +0100
+++ b/tests/test-status.out Thu Dec 10 12:31:57 2009 +0100
@@ -124,3 +124,22 @@
adding deleted
adding modified
adding removed
+hg status --change 1:
+M modified
+A added
+A copied
+R removed
+hg status --change 1 unrelated:
+hg status -C --change 1 added modified copied removed deleted:
+M modified
+A added
+A copied
+ modified
+R removed
+hg status -A --change 1
+M modified
+A added
+A copied
+ modified
+R removed
+C deleted