# HG changeset patch # User Sune Foldager # Date 1260311766 -3600 # Node ID 15fbbc939373b7aded977a8b6fa757f8bbfe3dd8 # Parent 0022f5c5459e2f9d3505a84c43b37fbef2b379bc# Parent 585f51f8b5f02e3dccdfe293ba67c6bc7f6dba82 Merge with stable diff -r 585f51f8b5f0 -r 15fbbc939373 Makefile --- a/Makefile Tue Dec 08 23:23:59 2009 +0100 +++ b/Makefile Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/bash/hg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/bash/hg Tue Dec 08 23:36:06 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 +} diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/bash_completion --- a/contrib/bash_completion Tue Dec 08 23:23:59 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 -} diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/memory.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/memory.py Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +# memory.py - track memory usage +# +# Copyright 2009 Matt Mackall 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) diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/perf.py --- a/contrib/perf.py Tue Dec 08 23:23:59 2009 +0100 +++ b/contrib/perf.py Tue Dec 08 23:36:06 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, []), } diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/shrink-revlog.py --- a/contrib/shrink-revlog.py Tue Dec 08 23:23:59 2009 +0100 +++ b/contrib/shrink-revlog.py Tue Dec 08 23:36:06 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') diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/win32/mercurial.iss --- a/contrib/win32/mercurial.iss Tue Dec 08 23:23:59 2009 +0100 +++ b/contrib/win32/mercurial.iss Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/zsh/_hg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/zsh/_hg Tue Dec 08 23:36:06 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 +# Copyright (C) 2006-9 Brendan Cully +# +# 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 as commit message]:message:' + '(-e --edit -m --message --logfile -l)'{-l+,--logfile}'[read the commit message from ]: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 as commit message]:text:' \ + '(--logfile -l)'{-l+,--logfile}'[read commit message from ]: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 as commit message]:text:' \ + '(--logfile -l)'{-l+,--logfile}'[read commit message from ]: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 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 "$@" diff -r 585f51f8b5f0 -r 15fbbc939373 contrib/zsh_completion --- a/contrib/zsh_completion Tue Dec 08 23:23:59 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 -# Copyright (C) 2006-9 Brendan Cully -# -# 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 as commit message]:message:' - '(-e --edit -m --message --logfile -l)'{-l+,--logfile}'[read the commit message from ]: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 as commit message]:text:' \ - '(--logfile -l)'{-l+,--logfile}'[read commit message from ]: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 as commit message]:text:' \ - '(--logfile -l)'{-l+,--logfile}'[read commit message from ]: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 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 "$@" diff -r 585f51f8b5f0 -r 15fbbc939373 doc/Makefile --- a/doc/Makefile Tue Dec 08 23:23:59 2009 +0100 +++ b/doc/Makefile Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 doc/rst2man.py --- a/doc/rst2man.py Tue Dec 08 23:23:59 2009 +0100 +++ b/doc/rst2man.py Tue Dec 08 23:36:06 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') diff -r 585f51f8b5f0 -r 15fbbc939373 help/config.txt --- a/help/config.txt Tue Dec 08 23:23:59 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: - -- ``\.hg\hgrc`` -- ``%USERPROFILE%\.hgrc`` -- ``%USERPROFILE%\Mercurial.ini`` -- ``%HOME%\.hgrc`` -- ``%HOME%\Mercurial.ini`` -- ``C:\Mercurial\Mercurial.ini`` -- ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` -- ``\Mercurial.ini`` - -On Unix, these files are read: - -- ``/.hg/hgrc`` -- ``$HOME/.hgrc`` -- ``/etc/mercurial/hgrc`` -- ``/etc/mercurial/hgrc.d/*.rc`` -- ``/etc/mercurial/hgrc`` -- ``/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 - 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 diff -r 585f51f8b5f0 -r 15fbbc939373 help/dates.txt --- a/help/dates.txt Tue Dec 08 23:23:59 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 diff -r 585f51f8b5f0 -r 15fbbc939373 help/diffs.txt --- a/help/diffs.txt Tue Dec 08 23:23:59 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. diff -r 585f51f8b5f0 -r 15fbbc939373 help/environment.txt --- a/help/environment.txt Tue Dec 08 23:23:59 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. diff -r 585f51f8b5f0 -r 15fbbc939373 help/extensions.txt --- a/help/extensions.txt Tue Dec 08 23:23:59 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 = ! diff -r 585f51f8b5f0 -r 15fbbc939373 help/multirevs.txt --- a/help/multirevs.txt Tue Dec 08 23:23:59 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. diff -r 585f51f8b5f0 -r 15fbbc939373 help/patterns.txt --- a/help/patterns.txt Tue Dec 08 23:23:59 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 diff -r 585f51f8b5f0 -r 15fbbc939373 help/revisions.txt --- a/help/revisions.txt Tue Dec 08 23:23:59 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. diff -r 585f51f8b5f0 -r 15fbbc939373 help/templates.txt --- a/help/templates.txt Tue Dec 08 23:23:59 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 "
" 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 `` becomes - ``example.com``. -:email: Any text. Extracts the first string that looks like - an email address. Example: ``User `` - 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. diff -r 585f51f8b5f0 -r 15fbbc939373 help/urls.txt --- a/help/urls.txt Tue Dec 08 23:23:59 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. diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/color.py --- a/hgext/color.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/color.py Tue Dec 08 23:36:06 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''' diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/convert/convcmd.py Tue Dec 08 23:36:06 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: diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/convert/filemap.py --- a/hgext/convert/filemap.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/convert/filemap.py Tue Dec 08 23:36:06 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: diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/extdiff.py --- a/hgext/extdiff.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/extdiff.py Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/inotify/linuxserver.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hgext/inotify/linuxserver.py Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,429 @@ +# linuxserver.py - inotify status server for linux +# +# Copyright 2006, 2007, 2008 Bryan O'Sullivan +# Copyright 2007, 2008 Brendan Cully +# +# 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() diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/inotify/server.py --- a/hgext/inotify/server.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/inotify/server.py Tue Dec 08 23:36:06 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 -# Copyright 2007, 2008 Brendan Cully +# Copyright 2009 Nicolas Dumazet # # 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) diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/keyword.py --- a/hgext/keyword.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/keyword.py Tue Dec 08 23:36:06 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}', diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/patchbomb.py --- a/hgext/patchbomb.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/patchbomb.py Tue Dec 08 23:36:06 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') diff -r 585f51f8b5f0 -r 15fbbc939373 hgext/relink.py --- a/hgext/relink.py Tue Dec 08 23:23:59 2009 +0100 +++ b/hgext/relink.py Tue Dec 08 23:36:06 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), diff -r 585f51f8b5f0 -r 15fbbc939373 i18n/da.po --- a/i18n/da.po Tue Dec 08 23:23:59 2009 +0100 +++ b/i18n/da.po Tue Dec 08 23:36:06 2009 +0100 @@ -17,8 +17,8 @@ msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \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: \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" diff -r 585f51f8b5f0 -r 15fbbc939373 i18n/sv.po --- a/i18n/sv.po Tue Dec 08 23:23:59 2009 +0100 +++ b/i18n/sv.po Tue Dec 08 23:36:06 2009 +0100 @@ -13,8 +13,8 @@ msgstr "" "Project-Id-Version: Mercurial\n" "Report-Msgid-Bugs-To: \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 \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" +"- ``\\.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" +"- ``\\Mercurial.ini``\n" +"\n" +"Under Unix läses dessa filer:\n" +"\n" +"- ``/.hg/hgrc``\n" +"- ``$HOME/.hgrc``\n" +"- ``/etc/mercurial/hgrc``\n" +"- ``/etc/mercurial/hgrc.d/*.rc``\n" +"- ``/etc/mercurial/hgrc``\n" +"- ``/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 \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 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" diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/ancestor.py --- a/mercurial/ancestor.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/ancestor.py Tue Dec 08 23:36:06 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: diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/cmdutil.py Tue Dec 08 23:36:06 2009 +0100 @@ -270,31 +270,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: @@ -547,7 +558,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']: @@ -577,7 +588,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() @@ -744,7 +756,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')} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/commands.py --- a/mercurial/commands.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/commands.py Tue Dec 08 23:36:06 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": diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/context.py --- a/mercurial/context.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/context.py Tue Dec 08 23:36:06 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)) diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/dispatch.py --- a/mercurial/dispatch.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/dispatch.py Tue Dec 08 23:36:06 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""" diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/config.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/config.txt Tue Dec 08 23:36:06 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: + +- ``\.hg\hgrc`` +- ``%USERPROFILE%\.hgrc`` +- ``%USERPROFILE%\Mercurial.ini`` +- ``%HOME%\.hgrc`` +- ``%HOME%\Mercurial.ini`` +- ``C:\Mercurial\Mercurial.ini`` +- ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` +- ``\Mercurial.ini`` + +On Unix, these files are read: + +- ``/.hg/hgrc`` +- ``$HOME/.hgrc`` +- ``/etc/mercurial/hgrc`` +- ``/etc/mercurial/hgrc.d/*.rc`` +- ``/etc/mercurial/hgrc`` +- ``/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 + 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/dates.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/dates.txt Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/diffs.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/diffs.txt Tue Dec 08 23:36:06 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/environment.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/environment.txt Tue Dec 08 23:36:06 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/extensions.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/extensions.txt Tue Dec 08 23:36:06 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 = ! diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/multirevs.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/multirevs.txt Tue Dec 08 23:36:06 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/patterns.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/patterns.txt Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/revisions.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/revisions.txt Tue Dec 08 23:36:06 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/templates.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/templates.txt Tue Dec 08 23:36:06 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 "
" 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 `` becomes + ``example.com``. +:email: Any text. Extracts the first string that looks like + an email address. Example: ``User `` + 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/help/urls.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/help/urls.txt Tue Dec 08 23:36:06 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. diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/hgweb/common.py --- a/mercurial/hgweb/common.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/hgweb/common.py Tue Dec 08 23:36:06 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) diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/hgweb/hgweb_mod.py Tue Dec 08 23:36:06 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) diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/httprepo.py --- a/mercurial/httprepo.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/httprepo.py Tue Dec 08 23:36:06 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: diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/localrepo.py --- a/mercurial/localrepo.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/localrepo.py Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/mail.py --- a/mercurial/mail.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/mail.py Tue Dec 08 23:36:06 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.''' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/revlog.py --- a/mercurial/revlog.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/revlog.py Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/changelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/changelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,10 @@ +{header} + + {urlbase}{url} + + + {repo|escape} Changelog + {latestentry%feedupdated} + +{entries%changelogentry} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/changelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/changelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,16 @@ + + {desc|strip|firstline|strip|escape|nonempty} + {urlbase}{url}#changeset-{node} + + + {author|person|escape} + {author|email|obfuscate} + + {date|rfc3339date} + {date|rfc3339date} + +
+
{desc|escape|nonempty}
+
+
+
diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,17 @@ +{header} + + {urlbase}{url} + + + Error + 1970-01-01T00:00:00+00:00 + + Error + http://mercurial.selenic.com/#error + + mercurial + + 1970-01-01T00:00:00+00:00 + {error|escape} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,8 @@ +{header} + {urlbase}{url}atom-log/tip/{file|escape} + + {repo|escape}: {file|escape} history + {latestentry%feedupdated} + +{entries%changelogentry} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,2 @@ + + \ No newline at end of file diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/map Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,11 @@ +default = 'changelog' +feedupdated = '{date|rfc3339date}' +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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/tagentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/tagentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,8 @@ + + {tag|escape} + + {urlbase}{url}#tag-{node} + {date|rfc3339date} + {date|rfc3339date} + {tag|strip|escape} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/atom/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/atom/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,11 @@ +{header} + {urlbase}{url} + + + {repo|escape}: tags + {repo|escape} tag history + Mercurial SCM + {latestentry%feedupdated} + +{entriesnotip%tagentry} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/coal/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/coal/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ + + + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/coal/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/coal/map Tue Dec 08 23:36:06 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 = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape} ' +filedifflink = '{file|escape} ' +filenodelink = '{file|escape} ' +filenolink = '{file|escape} ' +fileellipses = '...' +changelogentry = ../paper/shortlogentry.tmpl +searchentry = ../paper/shortlogentry.tmpl +changeset = ../paper/changeset.tmpl +manifest = ../paper/manifest.tmpl + +direntry = ' + + + + dir. {basename|escape}/ + + + {emptydirs|escape} + + + + drwxr-xr-x + ' + +fileentry = ' + + + + file {basename|escape} + + + {size} + {permissions|permissions} + ' + +filerevision = ../paper/filerevision.tmpl +fileannotate = ../paper/fileannotate.tmpl +filediff = ../paper/filediff.tmpl +filelog = ../paper/filelog.tmpl +fileline = ' +
{linenumber} {line|escape}
' +filelogentry = ../paper/filelogentry.tmpl + +annotateline = ' + + + {author|user}@{rev} + + {linenumber} {line|escape} + ' + +diffblock = '
{lines}
' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' + +changelogparent = ' + + parent {rev}: + {node|short} + ' + +changesetparent = '{node|short} ' + +filerevparent = '{rename%filerename}{node|short} ' +filerevchild = '{node|short} ' + +filerename = '{file|escape}@' +filelogrename = ' + + base: + + + {file|escape}@{node|short} + + + ' +fileannotateparent = ' + + parent: + + + {rename%filerename}{node|short} + + + ' +changesetchild = ' {node|short}' +changelogchild = ' + + child + + + {node|short} + + + ' +fileannotatechild = ' + + child: + + + {node|short} + + + ' +tags = ../paper/tags.tmpl +tagentry = ' + + + + {tag|escape} + + + + {node|short} + + ' +branches = ../paper/branches.tmpl +branchentry = ' + + + + {branch|escape} + + + + {node|short} + + ' +changelogtag = '{name|escape} ' +changesettag = '{tag|escape} ' +changelogbranchhead = '{name|escape} ' +changelogbranchname = '{name|escape} ' + +filediffparent = ' + + parent {rev}: + {node|short} + ' +filelogparent = ' + + parent {rev}: + {node|short} + ' +filediffchild = ' + + child {rev}: + {node|short} + + ' +filelogchild = ' + + child {rev}: + {node|short} + ' + +indexentry = ' + + {name|escape} + {description} + {contact|obfuscate} + {lastchange|age} ago + {archives%indexarchiveentry} + \n' +indexarchiveentry = ' ↓{type|escape}' +index = ../paper/index.tmpl +archiveentry = ' +
  • + {type|escape} +
  • ' +notfound = ../paper/notfound.tmpl +error = ../paper/error.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/branches.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/branches.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,30 @@ +{header} +{repo|escape}: Branches + + + + + + + + + +
     
    + +{entries%branchentry} +
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/changelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/changelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,39 @@ +{header} +{repo|escape}: Changelog + + + + + + + +
    +{sessionvars%hiddenformentry} + +
    + + + +{entries%changelogentry} + + + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/changelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/changelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,14 @@ + +
    + +{author|obfuscate} [{date|rfc822date}] rev {rev}
    +
    +
    +{desc|strip|escape|addbreaks|nonempty} +
    +
    +
    diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/changeset.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/changeset.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,50 @@ +{header} +{repo|escape}: changeset {rev}:{node|short} + + + + + + + + + + +
    + + + +{branch%changesetbranch} + +{parent%changesetparent} +{child%changesetchild} +
    author{author|obfuscate}
    {date|date} ({date|age})
    changeset {rev}{node|short}
    + +
    +{desc|strip|escape|addbreaks|nonempty} +
    +
    +
    + +{files} +
    + +
    {diff}
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,25 @@ +{header} +{repo|escape}: Error + + + + + + + + + +
    +
    +An error occurred while processing your request
    +
    +{error|escape} +
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/fileannotate.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/fileannotate.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,62 @@ +{header} +{repo|escape}: {file|escape}@{node|short} (annotated) + + + + + + + + + +
    {file|escape}
    + +
    + + + + + + + +{branch%filerevbranch} + + + +{parent%fileannotateparent} +{child%fileannotatechild} + + + +
    author{author|obfuscate}
    {date|date} ({date|age})
    changeset {rev}{node|short}
    permissions{permissions|permissions}
    +
    + +
    +{desc|strip|escape|addbreaks|nonempty} +
    +
    + +{annotate%annotateline} +
    +
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/filediff.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/filediff.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,48 @@ +{header} +{repo|escape}: diff {file|escape} + + + + + + + + + +
    {file|escape}
    + + +{branch%filerevbranch} + + + +{parent%filediffparent} +{child%filediffchild} +
    changeset {rev}{node|short}
    + +
    + +
    +{diff} +
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,40 @@ +{header} +{repo|escape}: File revisions + + + + + + + + + +
    {file|urlescape}
    + + +{entries%filelogentry} +
    + + + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/filerevision.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/filerevision.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,61 @@ +{header} +{repo|escape}: {file|escape}@{node|short} + + + + + + + + + +
    {file|escape}
    + +
    + + + + + + + +{branch%filerevbranch} + + + +{parent%filerevparent} +{child%filerevchild} + + + +
    author{author|obfuscate}
    {date|date} ({date|age})
    changeset {rev}{node|short}
    permissions{permissions|permissions}
    +
    + +
    +{desc|strip|escape|addbreaks|nonempty} +
    + +
    +{text%fileline} +
    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/footer.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/footer.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,11 @@ + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/graph.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/graph.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,121 @@ +{header} +{repo|escape}: Graph + + + + + + + + +
    +{sessionvars%hiddenformentry} + +
    + + +
     
    + + + +
    +
      + +
        +
        + + + + + + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,8 @@ + + + + + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/index.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/index.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,26 @@ +{header} +Mercurial repositories index + + + + + + + + + + + + + + + {entries%indexentry} +
        NameDescriptionContactLast change  
        + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/manifest.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/manifest.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,38 @@ +{header} +{repo|escape}: files + + + + + + + + + +
        {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}
        + + + + + + + + +{dentries%direntry} +{fentries%fileentry} +
        drwxr-xr-x[up]
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/map Tue Dec 08 23:36:06 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 = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape} ' +filedifflink = '{file|escape} ' +filenodelink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +filenolink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +fileellipses = '...' +changelogentry = changelogentry.tmpl +searchentry = changelogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl +direntry = ' + + drwxr-xr-x + + + + {basename|escape} + {emptydirs|escape} + + + files + + ' +fileentry = ' + + {permissions|permissions} + {date|isodate} + {size} + + {basename|escape} + + + file | + revisions | + annotate + + ' +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = ' +
        +
        {linenumber} {line|escape}
        +
        ' +annotateline = ' + + + {author|user}@{rev} + +
        {linenumber}
        +
        {line|escape}
        + ' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' +changelogparent = ' + + parent {rev}: + + {node|short} + + ' +changesetbranch = 'branch{name}' +changesetparent = ' + + parent {rev} + + {node|short} + + ' +filerevbranch = 'branch{name}' +filerevparent = ' + + parent {rev} + + + {rename%filerename}{node|short} + + + ' +filerename = '{file|escape}@' +filelogrename = '| base' +fileannotateparent = ' + + parent {rev} + + + {rename%filerename}{node|short} + + + ' +changelogchild = ' + + child {rev}: + {node|short} + ' +changesetchild = ' + + child {rev} + + {node|short} + + ' +filerevchild = ' + + child {rev} + + {node|short} + ' +fileannotatechild = ' + + child {rev} + + {node|short} + ' +tags = tags.tmpl +tagentry = ' + + {date|age} + {tag|escape} + + changeset | + changelog | + files + + ' +branches = branches.tmpl +branchentry = ' + + {date|age} + {node|short} + {branch|escape} + + changeset | + changelog | + files + + ' +diffblock = '
        {lines}
        ' +filediffparent = ' + + parent {rev} + + + {node|short} + + + ' +filelogparent = ' + + parent {rev}:  + {node|short} + ' +filediffchild = ' + + child {rev} + + {node|short} + + ' +filelogchild = ' + + child {rev}:  + {node|short} + ' +shortlog = shortlog.tmpl +graph = graph.tmpl +tagtag = '{name} ' +branchtag = '{name} ' +inbranchtag = '{name} ' +shortlogentry = ' + + {date|age} + {author|person} + + + {desc|strip|firstline|escape|nonempty} + {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} + + + + changeset | + files + + ' +filelogentry = ' + + {date|age} + + + {desc|strip|firstline|escape|nonempty} + + + + file | diff | annotate {rename%filelogrename} + ' +archiveentry = ' | {type|escape} ' +indexentry = ' + + + + {name|escape} + + + {description} + {contact|obfuscate} + {lastchange|age} + {archives%indexarchiveentry} + + \n' +indexarchiveentry = ' {type|escape} ' +index = index.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/notfound.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/notfound.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,18 @@ +{header} +Mercurial repository not found + + + + + + +
        +The specified repository "{repo|escape}" is unknown, sorry. +
        +
        +Please go back to the main repository list page. +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/search.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/search.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +{header} +{repo|escape}: Search + + + + + + + + + +
        searching for {query|escape}
        + +{entries} + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/shortlog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/shortlog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,41 @@ +{header} +{repo|escape}: Shortlog + + + + + + + +
        +{sessionvars%hiddenformentry} + +
        + + +
         
        + +{entries%shortlogentry} +
        + + + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/summary.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/summary.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,58 @@ +{header} +{repo|escape}: Summary + + + + + + + + + +
         
        + + + + +
        description{desc}
        owner{owner|obfuscate}
        last change{lastchange|rfc822date}
        + + + +{shortlog} + +
        ...
        + + + +{tags} + +
        ...
        + + + +{branches%branchentry} + + + +
        ...
        +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/gitweb/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/gitweb/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,30 @@ +{header} +{repo|escape}: Tags + + + + + + + + + +
         
        + +{entries%tagentry} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/map-cmdline.changelog --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/map-cmdline.changelog Tue Dec 08 23:36:06 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* ' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/map-cmdline.compact --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/map-cmdline.compact Tue Dec 08 23:36:06 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}' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/map-cmdline.default --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/map-cmdline.default Tue Dec 08 23:36:06 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' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/branches.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/branches.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +{header} + {repo|escape}: Branches + + + + + +
        + + + + +{entries%branchentry} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/changelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/changelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,40 @@ +{header} + {repo|escape}: changelog + + + + + +
        + + + +
        + {entries%changelogentry} +
        + +
        +{changenav%naventry} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/changelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/changelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ +

        {desc|strip|firstline|escape|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

        +
          +
        • {date|age}
        • +
        • by {author|obfuscate} [{date|rfc822date}] rev {rev}
        • +
        • {desc|strip|escape|addbreaks|nonempty}
        • +
        diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/changeset.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/changeset.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,63 @@ +{header} +{repo|escape}: changeset {rev}:{node|short} + + + + + +
        + + + + + + +

        {desc|strip|escape|firstline|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

        +

        {date|age}

        + +
        +
        author
        +
        {author|obfuscate}
        +
        date
        +
        {date|date}
        + {branch%changesetbranch} +
        changeset {rev}
        +
        {node|short}
        + {parent%changesetparent} + {child%changesetchild} +
        + +

        {desc|strip|escape|addbreaks|nonempty}

        + + + {files} +
        + +
        + {diff} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,34 @@ +{header} + {repo|escape}: Error + + + + + +
        + + + +

        {error|escape}

        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/fileannotate.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/fileannotate.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,63 @@ +{header} +{repo|escape}: {file|escape}@{node|short} (annotated) + + + + + +
        + + + + + +

        {file|escape}

        +

        {date|age}

        + +
        +
        author
        +
        {author|obfuscate}
        +
        date
        +
        {date|date}
        + {branch%filerevbranch} +
        changeset {rev}
        +
        {node|short}
        + {parent%fileannotateparent} + {child%fileannotatechild} +
        permissions
        +
        {permissions|permissions}
        +
        + +

        {desc|strip|escape|addbreaks|nonempty}

        + + + {annotate%annotateline} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/filediff.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/filediff.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,54 @@ +{header} +{repo|escape}: diff {file|escape} + + + + + +
        + + + + + +

        {file|escape}

        + +
        + {branch%filerevbranch} +
        changeset {rev}
        +
        {node|short}
        + {parent%filediffparent} + {child%filediffchild} +
        + +
        + {diff} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,49 @@ +{header} +{repo|escape}: File revisions + + + + + +
        + + + + + + + + {entries%filelogentry} +
        + +
        + {nav%filenaventry} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/filerevision.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/filerevision.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,63 @@ +{header} +{repo|escape}: {file|escape}@{node|short} + + + + + +
        + + + + + +

        {file|escape}

        +

        {date|age}

        + +
        +
        author
        +
        {author|obfuscate}
        +
        date
        +
        {date|date}
        + {branch%filerevbranch} +
        changeset {rev}
        +
        {node|short}
        + {parent%filerevparent} + {child%filerevchild} +
        permissions
        +
        {permissions|permissions}
        +
        + +

        {desc|strip|escape|addbreaks|nonempty}

        + +
        + {text%fileline} +
        + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/footer.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/footer.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,22 @@ + + +
        +

        mercurial

        +
        + +
        +
        +
        +
        + +
        + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/graph.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/graph.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,118 @@ +{header} + {repo|escape}: graph + + + + + + +
        + + + + +
        The revision graph only works with JavaScript-enabled browsers.
        +
        +
          + +
            +
            + + + + +
            + less + more + | {changenav%navgraphentry} +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ + + + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/index.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/index.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,39 @@ +{header} + {repo|escape}: Mercurial repositories index + + + +
            + + + + + + + + + + + + {entries%indexentry} +
            NameDescriptionContactLast change  
            + + +
            +

            mercurial

            +
            + +
            +
            +
            +
            + +
            + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/manifest.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/manifest.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,51 @@ +{header} +{repo|escape}: files + + + + + +
            + + + + + +

            {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

            + + + + + + + + + + {dentries%direntry} + {fentries%fileentry} +
            drwxr-xr-x[up]
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/map Tue Dec 08 23:36:06 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 = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape}' +filedifflink = '{file|escape} ' +filenodelink = ' + + {file|escape} + + + file | + annotate | + diff | + revisions + + ' +filenolink = ' + + + {file|escape}file | + annotate | + diff | + revisions + + ' +fileellipses = '...' +changelogentry = changelogentry.tmpl +searchentry = changelogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl +direntry = ' + + drwxr-xr-x + + + {basename|escape} + files + ' +fileentry = ' + + {permissions|permissions} + {date|isodate} + {size} + {basename|escape} + + file | + revisions | + annotate + + ' +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = ' +
            +
            {linenumber} {line|escape}
            +
            ' +annotateline = ' + + + {author|user}@{rev} + + + {linenumber} + + {line|escape} + ' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' +changelogparent = ' + + parent {rev}: + + {node|short} + + ' +changesetbranch = '
            branch
            {name}
            ' +changesetparent = ' +
            parent {rev}
            +
            {node|short}
            ' +filerevbranch = '
            branch
            {name}
            ' +filerevparent = ' +
            parent {rev}
            +
            + + {rename%filerename}{node|short} + +
            ' +filerename = '{file|escape}@' +filelogrename = '| base' +fileannotateparent = ' +
            parent {rev}
            +
            + + {rename%filerename}{node|short} + +
            ' +changelogchild = ' +
            child {rev}:
            +
            {node|short}
            ' +changesetchild = ' +
            child {rev}
            +
            {node|short}
            ' +filerevchild = ' +
            child {rev}
            +
            + {node|short} +
            ' +fileannotatechild = ' +
            child {rev}
            +
            + {node|short} +
            ' +tags = tags.tmpl +tagentry = ' + + {date|age} + {tag|escape} + + changeset | + changelog | + files + + ' +branches = branches.tmpl +branchentry = ' + + {date|age} + {node|short} + {branch|escape} + + changeset | + changelog | + files + + ' +diffblock = '
            {lines}
            ' +filediffparent = ' +
            parent {rev}
            +
            {node|short}
            ' +filelogparent = ' + + parent {rev}:  + {node|short} + ' +filediffchild = ' +
            child {rev}
            +
            {node|short}
            ' +filelogchild = ' + + child {rev}:  + {node|short} + ' +shortlog = shortlog.tmpl +tagtag = '{name} ' +branchtag = '{name} ' +inbranchtag = '{name} ' +shortlogentry = ' + + {date|age} + {author|person} + + + {desc|strip|firstline|escape|nonempty} + {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} + + + + changeset | + files + + ' +filelogentry = ' + + {date|age} + {desc|strip|firstline|escape|nonempty} + + file | diff | annotate + {rename%filelogrename} + + ' +archiveentry = '
          • {type|escape}
          • ' +indexentry = ' + + {name|escape} + {description} + {contact|obfuscate} + {lastchange|age} + {archives%indexarchiveentry} + + + + \n' +indexarchiveentry = '{type|escape} ' +index = index.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' +graph = graph.tmpl diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/notfound.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/notfound.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,35 @@ +{header} + {repo|escape}: Mercurial repository not found + + + + + +
            + + + +

            The specified repository "{repo|escape}" is unknown, sorry.

            +

            Please go back to the main repository list page.

            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/search.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/search.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,34 @@ +{header} + {repo|escape}: Search + + + + + +
            + + + + {entries} + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/shortlog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/shortlog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,41 @@ +{header} + {repo|escape}: shortlog + + + + + +
            + + + + + +{entries%shortlogentry} +
            + +
            +{changenav%navshortentry} +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/summary.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/summary.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,66 @@ +{header} + {repo|escape}: Summary + + + + + +
            + + + +
            +
            name
            +
            {repo|escape}
            +
            description
            +
            {desc}
            +
            owner
            +
            {owner|obfuscate}
            +
            last change
            +
            {lastchange|rfc822date}
            +
            + +

            Changes

            + +{shortlog} + + + +
            ...
            + +

            Tags

            + +{tags} + + + +
            ...
            + + + + {branches%branchentry} + + + +
            ...
            +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/monoblue/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/monoblue/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +{header} + {repo|escape}: Tags + + + + + +
            + + + + +{entries%tagentry} +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/branches.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/branches.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,45 @@ +{header} +{repo|escape}: branches + + + + + +
            + + +
            +

            {repo|escape}

            +

            branches

            + + + + + + + + +{entries%branchentry} +
            branchnode
            +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/changeset.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/changeset.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,71 @@ +{header} +{repo|escape}: {node|short} + + +
            + + +
            + +

            {repo|escape}

            +

            changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag}

            + + + +
            {desc|strip|escape|addbreaks|nonempty}
            + + + + + + + + + + + + + + + + + + + + + +
            author{author|obfuscate}
            date{date|date} ({date|age})
            parents{parent%changesetparent}
            children{child%changesetchild}
            files{files}
            + +
            +
            line diff
            + +{diff} +
            + +
            +
            +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,43 @@ +{header} +{repo|escape}: error + + + +
            + + +
            + +

            {repo|escape}

            +

            error

            + + + +
            +

            +An error occurred while processing your request: +

            +

            +{error|escape} +

            +
            +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/fileannotate.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/fileannotate.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,78 @@ +{header} +{repo|escape}: {file|escape} annotate + + + +
            + + +
            +

            {repo|escape}

            +

            annotate {file|escape} @ {rev}:{node|short}

            + + + +
            {desc|strip|escape|addbreaks|nonempty}
            + + + + + + + + + + + + + + + + + + +{changesettag} +
            author{author|obfuscate}
            date{date|date} ({date|age})
            parents{parent%filerevparent}
            children{child%filerevchild}
            + +
            + + + + + +{annotate%annotateline} +
            rev  line source
            +
            +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/filediff.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/filediff.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,73 @@ +{header} +{repo|escape}: {file|escape} diff + + + +
            + + +
            +

            {repo|escape}

            +

            diff {file|escape} @ {rev}:{node|short}

            + + + +
            {desc|strip|escape|addbreaks|nonempty}
            + + + + + + + + + + + + + + + + + + +{changesettag} +
            author{author|obfuscate}
            date{date|date} ({date|age})
            parents{parent%filerevparent}
            children{child%filerevchild}
            + +
            +
            line diff
            + +{diff} +
            +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,60 @@ +{header} +{repo|escape}: {file|escape} history + + + + + +
            + + +
            +

            {repo|escape}

            +

            log {file|escape}

            + + + + + + + + + + + +{entries%filelogentry} +
            ageauthordescription
            + +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/filelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/filelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,5 @@ + + {date|age} + {author|person} + {desc|strip|firstline|escape|nonempty}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/filerevision.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/filerevision.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,73 @@ +{header} +{repo|escape}: {node|short} {file|escape} + + + +
            + + +
            +

            {repo|escape}

            +

            view {file|escape} @ {rev}:{node|short}

            + + + +
            {desc|strip|escape|addbreaks|nonempty}
            + + + + + + + + + + + + + + + + + + +{changesettag} +
            author{author|obfuscate}
            date{date|date} ({date|age})
            parents{parent%filerevparent}
            children{child%filerevchild}
            + +
            +
            line source
            +{text%fileline} +
            +
            +
            +
            + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/footer.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/footer.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,4 @@ +{motd} + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/graph.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/graph.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,132 @@ +{header} +{repo|escape}: revision graph + + + + + + +
            + + +
            +

            {repo|escape}

            +

            graph

            + + + + + + + +
            +
              + +
                +
                + + + + + + +
                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ + + + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/index.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/index.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,26 @@ +{header} +Mercurial repositories index + + + +
                + +
                +

                Mercurial Repositories

                + + + + + + + + + + {entries%indexentry} +
                NameDescriptionContactLast change 
                +
                +
                +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/manifest.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/manifest.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,54 @@ +{header} +{repo|escape}: {node|short} {path|escape} + + + +
                + + +
                +

                {repo|escape}

                +

                directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}

                + + + + + + + + + + + + + + +{dentries%direntry} +{fentries%fileentry} +
                namesizepermissions
                [up]drwxr-xr-x
                +
                +
                +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/map Tue Dec 08 23:36:06 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 = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape} ' +filedifflink = '{file|escape} ' +filenodelink = '{file|escape} ' +filenolink = '{file|escape} ' +fileellipses = '...' +changelogentry = shortlogentry.tmpl +searchentry = shortlogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl + +direntry = ' + + + + dir. {basename|escape}/ + + + {emptydirs|escape} + + + + drwxr-xr-x + ' + +fileentry = ' + + + + file {basename|escape} + + + {size} + {permissions|permissions} + ' + +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = ' +
                {linenumber} {line|escape}
                ' +filelogentry = filelogentry.tmpl + +annotateline = ' + + + {author|user}@{rev} + + {linenumber} {line|escape} + ' + +diffblock = '
                {lines}
                ' +difflineplus = '{linenumber} {line|escape}' +difflineminus = '{linenumber} {line|escape}' +difflineat = '{linenumber} {line|escape}' +diffline = '{linenumber} {line|escape}' + +changelogparent = ' + + parent {rev}: + {node|short} + ' + +changesetparent = '{node|short} ' + +filerevparent = '{rename%filerename}{node|short} ' +filerevchild = '{node|short} ' + +filerename = '{file|escape}@' +filelogrename = ' + + base: + + + {file|escape}@{node|short} + + + ' +fileannotateparent = ' + + parent: + + + {rename%filerename}{node|short} + + + ' +changesetchild = ' {node|short}' +changelogchild = ' + + child + + + {node|short} + + + ' +fileannotatechild = ' + + child: + + + {node|short} + + + ' +tags = tags.tmpl +tagentry = ' + + + + {tag|escape} + + + + {node|short} + + ' +branches = branches.tmpl +branchentry = ' + + + + {branch|escape} + + + + {node|short} + + ' +changelogtag = '{name|escape} ' +changesettag = '{tag|escape} ' +changelogbranchhead = '{name|escape} ' +changelogbranchname = '{name|escape} ' + +filediffparent = ' + + parent {rev}: + {node|short} + ' +filelogparent = ' + + parent {rev}: + {node|short} + ' +filediffchild = ' + + child {rev}: + {node|short} + + ' +filelogchild = ' + + child {rev}: + {node|short} + ' + +indexentry = ' + + {name|escape} + {description} + {contact|obfuscate} + {lastchange|age} + {archives%indexarchiveentry} + \n' +indexarchiveentry = ' ↓{type|escape}' +index = index.tmpl +archiveentry = ' +
              • + {type|escape} +
              • ' +notfound = notfound.tmpl +error = error.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/notfound.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/notfound.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,12 @@ +{header} +Mercurial repository not found + + + +

                Mercurial repository not found

                + +The specified repository "{repo|escape}" is unknown, sorry. + +Please go back to the main repository list page. + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/search.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/search.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,43 @@ +{header} +{repo|escape}: searching for {query|escape} + + + +
                + + +
                +

                {repo|escape}

                +

                searching for '{query|escape}'

                + + + + + + + + + +{entries} +
                ageauthordescription
                + +
                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/shortlog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/shortlog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,57 @@ +{header} +{repo|escape}: log + + + + + +
                + + +
                +

                {repo|escape}

                +

                log

                + + + + + + + + + + + +{entries%shortlogentry} +
                ageauthordescription
                + + +
                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/shortlogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/shortlogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,5 @@ + + {date|age} + {author|person} + {desc|strip|firstline|escape|nonempty}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/paper/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/paper/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,45 @@ +{header} +{repo|escape}: tags + + + + + +
                + + +
                +

                {repo|escape}

                +

                tags

                + + + + + + + + +{entries%tagentry} +
                tagnode
                +
                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/changeset.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/changeset.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,9 @@ +{header} +# HG changeset patch +# User {author} +# Date {date|hgdate} +# Node ID {node} +{parent%changesetparent} +{desc} + +{diff} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,2 @@ +{header} +error: {error} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/fileannotate.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/fileannotate.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,5 @@ +{header} +{annotate%annotateline} +{footer} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/filediff.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/filediff.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,5 @@ +{header} +{diff} +{footer} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/index.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/index.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,2 @@ +{header} +{entries%indexentry} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/manifest.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/manifest.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,3 @@ +{header} +{dentries%direntry}{fentries%fileentry} +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/map Tue Dec 08 23:36:06 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' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/raw/notfound.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/raw/notfound.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,2 @@ +{header} +error: repository {repo} not found diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/changelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/changelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ +{header} + {repo|escape} Changelog + {repo|escape} Changelog + {entries%changelogentry} + + \ No newline at end of file diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/changelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/changelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,7 @@ + + {desc|strip|firstline|strip|escape} + {urlbase}{url}rev/{node|short} + + {author|obfuscate} + {date|rfc822date} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,10 @@ +{header} + Error + Error + + Error + {error|escape} + http://mercurial.selenic.com/#error + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ +{header} + {repo|escape}: {file|escape} history + {file|escape} revision history + {entries%filelogentry} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/filelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/filelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,7 @@ + + {desc|strip|firstline|strip|escape} + {urlbase}{url}log{{node|short}}/{file|urlescape} + + {author|obfuscate} + {date|rfc822date} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,5 @@ + + + + {urlbase}{url} + en-us diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/map Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/tagentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/tagentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ + + {tag|escape} + {urlbase}{url}rev/{node|short} + + {date|rfc822date} + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/rss/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/rss/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ +{header} + {repo|escape}: tags + {repo|escape} tag history + {entriesnotip%tagentry} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/branches.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/branches.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,26 @@ +{header} +{repo|escape}: branches + + + + + + + +

                branches:

                + +
                  +{entries%branchentry} +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/changelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/changelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,43 @@ +{header} +{repo|escape}: changelog + + + + + +
                +shortlog +graph +tags +branches +files +{archives%archiveentry} +rss +atom +
                + +

                changelog for {repo|escape}

                + +
                +{sessionvars%hiddenformentry} +

                + + +navigate: {changenav%naventry} +

                +
                + +{entries%changelogentry} + +
                +{sessionvars%hiddenformentry} +

                + + +navigate: {changenav%naventry} +

                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/changelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/changelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,25 @@ + + + + + + + + + + {parent%changelogparent} + {child%changelogchild} + {changelogtag} + + + + + + + + + + + + +
                {date|age}:{desc|strip|firstline|escape|nonempty}
                changeset {rev}:{node|short}
                author:{author|obfuscate}
                date:{date|date}
                files:{files}
                diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/changeset.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/changeset.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,51 @@ +{header} +{repo|escape}: changeset {node|short} + + + +
                +changelog +shortlog +graph +tags +branches +files +raw +{archives%archiveentry} +
                + +

                changeset: {desc|strip|escape|firstline|nonempty}

                + + + + + + +{parent%changesetparent} +{child%changesetchild} +{changesettag} + + + + + + + + + + + + + + + + +
                changeset {rev}:{node|short}
                author:{author|obfuscate}
                date:{date|date} ({date|age})
                files:{files}
                description:{desc|strip|escape|addbreaks|nonempty}
                + +
                +{diff} +
                + +{footer} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/error.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/error.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,15 @@ +{header} +Mercurial Error + + + +

                Mercurial Error

                + +

                +An error occurred while processing your request: +

                +

                +{error|escape} +

                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/fileannotate.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/fileannotate.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,48 @@ +{header} +{repo|escape}: {file|escape} annotate + + + + + +

                Annotate {file|escape}

                + + + + + +{parent%fileannotateparent} +{child%fileannotatechild} + + + + + + + + + + + + + + + +
                changeset {rev}:{node|short}
                author:{author|obfuscate}
                date:{date|date} ({date|age})
                permissions:{permissions|permissions}
                description:{desc|strip|escape|addbreaks|nonempty}
                + + +{annotate%annotateline} +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/filediff.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/filediff.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +{header} +{repo|escape}: {file|escape} diff + + + + + +

                {file|escape}

                + + + + + + +{parent%filediffparent} +{child%filediffchild} +
                revision {rev}:{node|short}
                + +
                +{diff} +
                + +{footer} + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/filelog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/filelog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,28 @@ +{header} +{repo|escape}: {file|escape} history + + + + + + + +

                {file|escape} revision history

                + +

                navigate: {nav%filenaventry}

                + +{entries%filelogentry} + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/filelogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/filelogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,25 @@ + + + + + + + + + {rename%filelogrename} + + + + + + + + +
                {date|age}:{desc|strip|firstline|escape|nonempty}
                revision {filerev}: + + {node|short} + (diff) + (annotate) +
                author:{author|obfuscate}
                date:{date|date}
                + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/filerevision.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/filerevision.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,46 @@ +{header} +{repo|escape}:{file|escape} + + + + + +

                {file|escape}

                + + + + + +{parent%filerevparent} +{child%filerevchild} + + + + + + + + + + + + + +
                changeset {rev}:{node|short}
                author:{author|obfuscate}
                date:{date|date} ({date|age})
                permissions:{permissions|permissions}
                description:{desc|strip|escape|addbreaks|nonempty}
                + +
                +{text%fileline}
                +
                + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/footer.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/footer.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,8 @@ +{motd} + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/graph.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/graph.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,96 @@ +{header} +{repo|escape}: graph + + + + + + + + +

                graph

                + +
                +{sessionvars%hiddenformentry} +

                + + +navigate: {changenav%navgraphentry} +

                +
                + + + +
                +
                  + +
                    +
                    + + + + +
                    +{sessionvars%hiddenformentry} +

                    + + +navigate: {changenav%navgraphentry} +

                    +
                    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/header.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/header.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,6 @@ + + + + + + diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/index.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/index.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,19 @@ +{header} +Mercurial repositories index + + + +

                    Mercurial Repositories

                    + + + + + + + + + + {entries%indexentry} +
                    NameDescriptionContactLast change 
                    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/manifest.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/manifest.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,28 @@ +{header} +{repo|escape}: files for changeset {node|short} + + + +
                    +changelog +shortlog +graph +tags +branches +changeset +{archives%archiveentry} +
                    + +

                    files for changeset {node|short}: {path|escape}

                    + + + + +{dentries%direntry} +{fentries%fileentry} +
                    drwxr-xr-x  +   +   + [up] +
                    +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/map Tue Dec 08 23:36:06 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 = '{label|escape} ' +navshortentry = '{label|escape} ' +navgraphentry = '{label|escape} ' +filenaventry = '{label|escape} ' +filedifflink = '{file|escape} ' +filenodelink = '{file|escape} ' +filenolink = '{file|escape} ' +fileellipses = '...' +changelogentry = changelogentry.tmpl +searchentry = changelogentry.tmpl +changeset = changeset.tmpl +manifest = manifest.tmpl + +direntry = ' + + drwxr-xr-x  +   +   + + {basename|escape}/ + + {emptydirs|urlescape} + ' + +fileentry = ' + + {permissions|permissions}  + {date|isodate}  + {size}  + {basename|escape}' + +filerevision = filerevision.tmpl +fileannotate = fileannotate.tmpl +filediff = filediff.tmpl +filelog = filelog.tmpl +fileline = '
                    {linenumber} {line|escape}
                    ' +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 = ' + + + {author|user}@{rev} + + + {linenumber} + +
                     {line|escape}
                    + ' +difflineplus = '{linenumber}{line|escape}' +difflineminus = '{linenumber}{line|escape}' +difflineat = '{linenumber}{line|escape}' +diffline = '{linenumber}{line|escape}' +changelogparent = ' + + parent {rev}: + + {node|short} + + ' +changesetparent = ' + + parent {rev}: + {node|short} + ' +filerevparent = ' + + parent: + + + {rename%filerename}{node|short} + + + ' +filerename = '{file|escape}@' +filelogrename = ' + + base: + + + {file|escape}@{node|short} + + + ' +fileannotateparent = ' + + parent: + + + {rename%filerename}{node|short} + + + ' +changesetchild = ' + + child {rev}: + {node|short} + ' +changelogchild = ' + + child {rev}: + {node|short} + ' +filerevchild = ' + + child: + {node|short} + ' +fileannotatechild = ' + + child: + {node|short} + ' +tags = tags.tmpl +tagentry = ' +
                  • + {node} + {tag|escape} +
                  • ' +branches = branches.tmpl +branchentry = ' +
                  • + {node} + {branch|escape} +
                  • ' +diffblock = '
                    {lines}
                    ' +changelogtag = 'tag:{tag|escape}' +changesettag = 'tag:{tag|escape}' +filediffparent = ' + + parent {rev}: + {node|short} + ' +filelogparent = ' + + parent {rev}: + {node|short} + ' +filediffchild = ' + + child {rev}: + {node|short} + ' +filelogchild = ' + + child {rev}: + {node|short} + ' +indexentry = ' + + {name|escape} + {description} + {contact|obfuscate} + {lastchange|age} ago + + RSS + Atom + {archives%archiveentry} + + ' +index = index.tmpl +archiveentry = '{type|escape} ' +notfound = notfound.tmpl +error = error.tmpl +urlparameter = '{separator}{name}={value|urlescape}' +hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/notfound.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/notfound.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,12 @@ +{header} +Mercurial repository not found + + + +

                    Mercurial repository not found

                    + +The specified repository "{repo|escape}" is unknown, sorry. + +Please go back to the main repository list page. + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/search.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/search.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,36 @@ +{header} +{repo|escape}: searching for {query|escape} + + + +
                    +changelog +shortlog +graph +tags +branches +files +{archives%archiveentry} +
                    + +

                    searching for {query|escape}

                    + +
                    +{sessionvars%hiddenformentry} +

                    +search: + +

                    +
                    + +{entries} + +
                    +{sessionvars%hiddenformentry} +

                    +search: + +

                    +
                    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/shortlog.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/shortlog.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,43 @@ +{header} +{repo|escape}: shortlog + + + + + +
                    +changelog +graph +tags +branches +files +{archives%archiveentry} +rss +atom +
                    + +

                    shortlog for {repo|escape}

                    + +
                    +{sessionvars%hiddenformentry} +

                    + + +navigate: {changenav%navshortentry} +

                    +
                    + +{entries%shortlogentry} + +
                    +{sessionvars%hiddenformentry} +

                    + + +navigate: {changenav%navshortentry} +

                    +
                    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/shortlogentry.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/shortlogentry.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,7 @@ + + + + + + +
                    {date|age}{author|person}{desc|strip|firstline|escape|nonempty}
                    diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/spartan/tags.tmpl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/spartan/tags.tmpl Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,26 @@ +{header} +{repo|escape}: tags + + + + + + + +

                    tags:

                    + +
                      +{entries%tagentry} +
                    + +{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/background.png Binary file mercurial/templates/static/background.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/coal-file.png Binary file mercurial/templates/static/coal-file.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/coal-folder.png Binary file mercurial/templates/static/coal-folder.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/excanvas.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/excanvas.js Tue Dec 08 23:36:06 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"){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(" ','","");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("n.x){n.x=k.x}if(l.y== +null||k.yn.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;oC.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset')}else if(a){b.push('')}else{b.push("')}b.push("");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})()}; diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/graph.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/graph.js Tue Dec 08 23:36:06 2009 +0100 @@ -0,0 +1,137 @@ +// branch_renderer.js - Rendering of branch DAGs on the client side +// +// Copyright 2008 Dirkjan Ochtman +// Copyright 2006 Alexander Schremmer +// +// derived from code written by Scott James Remnant +// 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; + + } + +} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/hgicon.png Binary file mercurial/templates/static/hgicon.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/hglogo.png Binary file mercurial/templates/static/hglogo.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/style-coal.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/style-coal.css Tue Dec 08 23:36:06 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; +} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/style-gitweb.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/style-gitweb.css Tue Dec 08 23:36:06 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; +} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/style-monoblue.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/style-monoblue.css Tue Dec 08 23:36:06 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 **/ diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/style-paper.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/style-paper.css Tue Dec 08 23:36:06 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; +} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/static/style.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/static/style.css Tue Dec 08 23:36:06 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; +} diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/templates/template-vars.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial/templates/template-vars.txt Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 mercurial/ui.py --- a/mercurial/ui.py Tue Dec 08 23:23:59 2009 +0100 +++ b/mercurial/ui.py Tue Dec 08 23:36:06 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) diff -r 585f51f8b5f0 -r 15fbbc939373 setup.py --- a/setup.py Tue Dec 08 23:23:59 2009 +0100 +++ b/setup.py Tue Dec 08 23:36:06 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, diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/changelog.tmpl --- a/templates/atom/changelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -{header} - - {urlbase}{url} - - - {repo|escape} Changelog - {latestentry%feedupdated} - -{entries%changelogentry} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/changelogentry.tmpl --- a/templates/atom/changelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ - - {desc|strip|firstline|strip|escape|nonempty} - {urlbase}{url}#changeset-{node} - - - {author|person|escape} - {author|email|obfuscate} - - {date|rfc3339date} - {date|rfc3339date} - -
                    -
                    {desc|escape|nonempty}
                    -
                    -
                    -
                    diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/error.tmpl --- a/templates/atom/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -{header} - - {urlbase}{url} - - - Error - 1970-01-01T00:00:00+00:00 - - Error - http://mercurial.selenic.com/#error - - mercurial - - 1970-01-01T00:00:00+00:00 - {error|escape} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/filelog.tmpl --- a/templates/atom/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -{header} - {urlbase}{url}atom-log/tip/{file|escape} - - {repo|escape}: {file|escape} history - {latestentry%feedupdated} - -{entries%changelogentry} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/header.tmpl --- a/templates/atom/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ - - \ No newline at end of file diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/map --- a/templates/atom/map Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -default = 'changelog' -feedupdated = '{date|rfc3339date}' -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 diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/tagentry.tmpl --- a/templates/atom/tagentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ - - {tag|escape} - - {urlbase}{url}#tag-{node} - {date|rfc3339date} - {date|rfc3339date} - {tag|strip|escape} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/atom/tags.tmpl --- a/templates/atom/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -{header} - {urlbase}{url} - - - {repo|escape}: tags - {repo|escape} tag history - Mercurial SCM - {latestentry%feedupdated} - -{entriesnotip%tagentry} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/coal/header.tmpl --- a/templates/coal/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/coal/map --- a/templates/coal/map Tue Dec 08 23:23:59 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 = '{label|escape} ' -navshortentry = '{label|escape} ' -navgraphentry = '{label|escape} ' -filenaventry = '{label|escape} ' -filedifflink = '{file|escape} ' -filenodelink = '{file|escape} ' -filenolink = '{file|escape} ' -fileellipses = '...' -changelogentry = ../paper/shortlogentry.tmpl -searchentry = ../paper/shortlogentry.tmpl -changeset = ../paper/changeset.tmpl -manifest = ../paper/manifest.tmpl - -direntry = ' - - - - dir. {basename|escape}/ - - - {emptydirs|escape} - - - - drwxr-xr-x - ' - -fileentry = ' - - - - file {basename|escape} - - - {size} - {permissions|permissions} - ' - -filerevision = ../paper/filerevision.tmpl -fileannotate = ../paper/fileannotate.tmpl -filediff = ../paper/filediff.tmpl -filelog = ../paper/filelog.tmpl -fileline = ' -
                    {linenumber} {line|escape}
                    ' -filelogentry = ../paper/filelogentry.tmpl - -annotateline = ' - - - {author|user}@{rev} - - {linenumber} {line|escape} - ' - -diffblock = '
                    {lines}
                    ' -difflineplus = '{linenumber} {line|escape}' -difflineminus = '{linenumber} {line|escape}' -difflineat = '{linenumber} {line|escape}' -diffline = '{linenumber} {line|escape}' - -changelogparent = ' - - parent {rev}: - {node|short} - ' - -changesetparent = '{node|short} ' - -filerevparent = '{rename%filerename}{node|short} ' -filerevchild = '{node|short} ' - -filerename = '{file|escape}@' -filelogrename = ' - - base: - - - {file|escape}@{node|short} - - - ' -fileannotateparent = ' - - parent: - - - {rename%filerename}{node|short} - - - ' -changesetchild = ' {node|short}' -changelogchild = ' - - child - - - {node|short} - - - ' -fileannotatechild = ' - - child: - - - {node|short} - - - ' -tags = ../paper/tags.tmpl -tagentry = ' - - - - {tag|escape} - - - - {node|short} - - ' -branches = ../paper/branches.tmpl -branchentry = ' - - - - {branch|escape} - - - - {node|short} - - ' -changelogtag = '{name|escape} ' -changesettag = '{tag|escape} ' -changelogbranchhead = '{name|escape} ' -changelogbranchname = '{name|escape} ' - -filediffparent = ' - - parent {rev}: - {node|short} - ' -filelogparent = ' - - parent {rev}: - {node|short} - ' -filediffchild = ' - - child {rev}: - {node|short} - - ' -filelogchild = ' - - child {rev}: - {node|short} - ' - -indexentry = ' - - {name|escape} - {description} - {contact|obfuscate} - {lastchange|age} ago - {archives%indexarchiveentry} - \n' -indexarchiveentry = ' ↓{type|escape}' -index = ../paper/index.tmpl -archiveentry = ' -
                  • - {type|escape} -
                  • ' -notfound = ../paper/notfound.tmpl -error = ../paper/error.tmpl -urlparameter = '{separator}{name}={value|urlescape}' -hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/branches.tmpl --- a/templates/gitweb/branches.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -{header} -{repo|escape}: Branches - - - - - - - - - -
                     
                    - -{entries%branchentry} -
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/changelog.tmpl --- a/templates/gitweb/changelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -{header} -{repo|escape}: Changelog - - - - - - - -
                    -{sessionvars%hiddenformentry} - -
                    - - - -{entries%changelogentry} - - - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/changelogentry.tmpl --- a/templates/gitweb/changelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - -
                    - -{author|obfuscate} [{date|rfc822date}] rev {rev}
                    -
                    -
                    -{desc|strip|escape|addbreaks|nonempty} -
                    -
                    -
                    diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/changeset.tmpl --- a/templates/gitweb/changeset.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -{header} -{repo|escape}: changeset {rev}:{node|short} - - - - - - - - - - -
                    - - - -{branch%changesetbranch} - -{parent%changesetparent} -{child%changesetchild} -
                    author{author|obfuscate}
                    {date|date} ({date|age})
                    changeset {rev}{node|short}
                    - -
                    -{desc|strip|escape|addbreaks|nonempty} -
                    -
                    -
                    - -{files} -
                    - -
                    {diff}
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/error.tmpl --- a/templates/gitweb/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -{header} -{repo|escape}: Error - - - - - - - - - -
                    -
                    -An error occurred while processing your request
                    -
                    -{error|escape} -
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/fileannotate.tmpl --- a/templates/gitweb/fileannotate.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -{header} -{repo|escape}: {file|escape}@{node|short} (annotated) - - - - - - - - - -
                    {file|escape}
                    - -
                    - - - - - - - -{branch%filerevbranch} - - - -{parent%fileannotateparent} -{child%fileannotatechild} - - - -
                    author{author|obfuscate}
                    {date|date} ({date|age})
                    changeset {rev}{node|short}
                    permissions{permissions|permissions}
                    -
                    - -
                    -{desc|strip|escape|addbreaks|nonempty} -
                    -
                    - -{annotate%annotateline} -
                    -
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/filediff.tmpl --- a/templates/gitweb/filediff.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -{header} -{repo|escape}: diff {file|escape} - - - - - - - - - -
                    {file|escape}
                    - - -{branch%filerevbranch} - - - -{parent%filediffparent} -{child%filediffchild} -
                    changeset {rev}{node|short}
                    - -
                    - -
                    -{diff} -
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/filelog.tmpl --- a/templates/gitweb/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -{header} -{repo|escape}: File revisions - - - - - - - - - -
                    {file|urlescape}
                    - - -{entries%filelogentry} -
                    - - - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/filerevision.tmpl --- a/templates/gitweb/filerevision.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -{header} -{repo|escape}: {file|escape}@{node|short} - - - - - - - - - -
                    {file|escape}
                    - -
                    - - - - - - - -{branch%filerevbranch} - - - -{parent%filerevparent} -{child%filerevchild} - - - -
                    author{author|obfuscate}
                    {date|date} ({date|age})
                    changeset {rev}{node|short}
                    permissions{permissions|permissions}
                    -
                    - -
                    -{desc|strip|escape|addbreaks|nonempty} -
                    - -
                    -{text%fileline} -
                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/footer.tmpl --- a/templates/gitweb/footer.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/graph.tmpl --- a/templates/gitweb/graph.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -{header} -{repo|escape}: Graph - - - - - - - - -
                    -{sessionvars%hiddenformentry} - -
                    - - -
                     
                    - - - -
                    -
                      - -
                        -
                        - - - - - - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/header.tmpl --- a/templates/gitweb/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/index.tmpl --- a/templates/gitweb/index.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -{header} -Mercurial repositories index - - - - - - - - - - - - - - - {entries%indexentry} -
                        NameDescriptionContactLast change  
                        - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/manifest.tmpl --- a/templates/gitweb/manifest.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -{header} -{repo|escape}: files - - - - - - - - - -
                        {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}
                        - - - - - - - - -{dentries%direntry} -{fentries%fileentry} -
                        drwxr-xr-x[up]
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/map --- a/templates/gitweb/map Tue Dec 08 23:23:59 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 = '{label|escape} ' -navshortentry = '{label|escape} ' -navgraphentry = '{label|escape} ' -filenaventry = '{label|escape} ' -filedifflink = '{file|escape} ' -filenodelink = ' - - {file|escape} - - - file | - annotate | - diff | - revisions - - ' -filenolink = ' - - {file|escape} - - - file | - annotate | - diff | - revisions - - ' -fileellipses = '...' -changelogentry = changelogentry.tmpl -searchentry = changelogentry.tmpl -changeset = changeset.tmpl -manifest = manifest.tmpl -direntry = ' - - drwxr-xr-x - - - - {basename|escape} - {emptydirs|escape} - - - files - - ' -fileentry = ' - - {permissions|permissions} - {date|isodate} - {size} - - {basename|escape} - - - file | - revisions | - annotate - - ' -filerevision = filerevision.tmpl -fileannotate = fileannotate.tmpl -filediff = filediff.tmpl -filelog = filelog.tmpl -fileline = ' -
                        -
                        {linenumber} {line|escape}
                        -
                        ' -annotateline = ' - - - {author|user}@{rev} - -
                        {linenumber}
                        -
                        {line|escape}
                        - ' -difflineplus = '{linenumber} {line|escape}' -difflineminus = '{linenumber} {line|escape}' -difflineat = '{linenumber} {line|escape}' -diffline = '{linenumber} {line|escape}' -changelogparent = ' - - parent {rev}: - - {node|short} - - ' -changesetbranch = 'branch{name}' -changesetparent = ' - - parent {rev} - - {node|short} - - ' -filerevbranch = 'branch{name}' -filerevparent = ' - - parent {rev} - - - {rename%filerename}{node|short} - - - ' -filerename = '{file|escape}@' -filelogrename = '| base' -fileannotateparent = ' - - parent {rev} - - - {rename%filerename}{node|short} - - - ' -changelogchild = ' - - child {rev}: - {node|short} - ' -changesetchild = ' - - child {rev} - - {node|short} - - ' -filerevchild = ' - - child {rev} - - {node|short} - ' -fileannotatechild = ' - - child {rev} - - {node|short} - ' -tags = tags.tmpl -tagentry = ' - - {date|age} - {tag|escape} - - changeset | - changelog | - files - - ' -branches = branches.tmpl -branchentry = ' - - {date|age} - {node|short} - {branch|escape} - - changeset | - changelog | - files - - ' -diffblock = '
                        {lines}
                        ' -filediffparent = ' - - parent {rev} - - - {node|short} - - - ' -filelogparent = ' - - parent {rev}:  - {node|short} - ' -filediffchild = ' - - child {rev} - - {node|short} - - ' -filelogchild = ' - - child {rev}:  - {node|short} - ' -shortlog = shortlog.tmpl -graph = graph.tmpl -tagtag = '{name} ' -branchtag = '{name} ' -inbranchtag = '{name} ' -shortlogentry = ' - - {date|age} - {author|person} - - - {desc|strip|firstline|escape|nonempty} - {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} - - - - changeset | - files - - ' -filelogentry = ' - - {date|age} - - - {desc|strip|firstline|escape|nonempty} - - - - file | diff | annotate {rename%filelogrename} - ' -archiveentry = ' | {type|escape} ' -indexentry = ' - - - - {name|escape} - - - {description} - {contact|obfuscate} - {lastchange|age} - {archives%indexarchiveentry} - - \n' -indexarchiveentry = ' {type|escape} ' -index = index.tmpl -urlparameter = '{separator}{name}={value|urlescape}' -hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/notfound.tmpl --- a/templates/gitweb/notfound.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -{header} -Mercurial repository not found - - - - - - -
                        -The specified repository "{repo|escape}" is unknown, sorry. -
                        -
                        -Please go back to the main repository list page. -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/search.tmpl --- a/templates/gitweb/search.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -{header} -{repo|escape}: Search - - - - - - - - - -
                        searching for {query|escape}
                        - -{entries} - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/shortlog.tmpl --- a/templates/gitweb/shortlog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -{header} -{repo|escape}: Shortlog - - - - - - - -
                        -{sessionvars%hiddenformentry} - -
                        - - -
                         
                        - -{entries%shortlogentry} -
                        - - - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/summary.tmpl --- a/templates/gitweb/summary.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -{header} -{repo|escape}: Summary - - - - - - - - - -
                         
                        - - - - -
                        description{desc}
                        owner{owner|obfuscate}
                        last change{lastchange|rfc822date}
                        - - - -{shortlog} - -
                        ...
                        - - - -{tags} - -
                        ...
                        - - - -{branches%branchentry} - - - -
                        ...
                        -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/gitweb/tags.tmpl --- a/templates/gitweb/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -{header} -{repo|escape}: Tags - - - - - - - - - -
                         
                        - -{entries%tagentry} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/map-cmdline.changelog --- a/templates/map-cmdline.changelog Tue Dec 08 23:23:59 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* ' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/map-cmdline.compact --- a/templates/map-cmdline.compact Tue Dec 08 23:23:59 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}' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/map-cmdline.default --- a/templates/map-cmdline.default Tue Dec 08 23:23:59 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' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/branches.tmpl --- a/templates/monoblue/branches.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -{header} - {repo|escape}: Branches - - - - - -
                        - - - - -{entries%branchentry} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/changelog.tmpl --- a/templates/monoblue/changelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -{header} - {repo|escape}: changelog - - - - - -
                        - - - -
                        - {entries%changelogentry} -
                        - -
                        -{changenav%naventry} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/changelogentry.tmpl --- a/templates/monoblue/changelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -

                        {desc|strip|firstline|escape|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

                        -
                          -
                        • {date|age}
                        • -
                        • by {author|obfuscate} [{date|rfc822date}] rev {rev}
                        • -
                        • {desc|strip|escape|addbreaks|nonempty}
                        • -
                        diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/changeset.tmpl --- a/templates/monoblue/changeset.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -{header} -{repo|escape}: changeset {rev}:{node|short} - - - - - -
                        - - - - - - -

                        {desc|strip|escape|firstline|nonempty} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

                        -

                        {date|age}

                        - -
                        -
                        author
                        -
                        {author|obfuscate}
                        -
                        date
                        -
                        {date|date}
                        - {branch%changesetbranch} -
                        changeset {rev}
                        -
                        {node|short}
                        - {parent%changesetparent} - {child%changesetchild} -
                        - -

                        {desc|strip|escape|addbreaks|nonempty}

                        - - - {files} -
                        - -
                        - {diff} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/error.tmpl --- a/templates/monoblue/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -{header} - {repo|escape}: Error - - - - - -
                        - - - -

                        {error|escape}

                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/fileannotate.tmpl --- a/templates/monoblue/fileannotate.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -{header} -{repo|escape}: {file|escape}@{node|short} (annotated) - - - - - -
                        - - - - - -

                        {file|escape}

                        -

                        {date|age}

                        - -
                        -
                        author
                        -
                        {author|obfuscate}
                        -
                        date
                        -
                        {date|date}
                        - {branch%filerevbranch} -
                        changeset {rev}
                        -
                        {node|short}
                        - {parent%fileannotateparent} - {child%fileannotatechild} -
                        permissions
                        -
                        {permissions|permissions}
                        -
                        - -

                        {desc|strip|escape|addbreaks|nonempty}

                        - - - {annotate%annotateline} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/filediff.tmpl --- a/templates/monoblue/filediff.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -{header} -{repo|escape}: diff {file|escape} - - - - - -
                        - - - - - -

                        {file|escape}

                        - -
                        - {branch%filerevbranch} -
                        changeset {rev}
                        -
                        {node|short}
                        - {parent%filediffparent} - {child%filediffchild} -
                        - -
                        - {diff} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/filelog.tmpl --- a/templates/monoblue/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -{header} -{repo|escape}: File revisions - - - - - -
                        - - - - - - - - {entries%filelogentry} -
                        - -
                        - {nav%filenaventry} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/filerevision.tmpl --- a/templates/monoblue/filerevision.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -{header} -{repo|escape}: {file|escape}@{node|short} - - - - - -
                        - - - - - -

                        {file|escape}

                        -

                        {date|age}

                        - -
                        -
                        author
                        -
                        {author|obfuscate}
                        -
                        date
                        -
                        {date|date}
                        - {branch%filerevbranch} -
                        changeset {rev}
                        -
                        {node|short}
                        - {parent%filerevparent} - {child%filerevchild} -
                        permissions
                        -
                        {permissions|permissions}
                        -
                        - -

                        {desc|strip|escape|addbreaks|nonempty}

                        - -
                        - {text%fileline} -
                        - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/footer.tmpl --- a/templates/monoblue/footer.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ - - -
                        -

                        mercurial

                        -
                        - -
                        -
                        -
                        -
                        - -
                        - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/graph.tmpl --- a/templates/monoblue/graph.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -{header} - {repo|escape}: graph - - - - - - -
                        - - - - -
                        The revision graph only works with JavaScript-enabled browsers.
                        -
                        -
                          - -
                            -
                            - - - - -
                            - less - more - | {changenav%navgraphentry} -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/header.tmpl --- a/templates/monoblue/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/index.tmpl --- a/templates/monoblue/index.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -{header} - {repo|escape}: Mercurial repositories index - - - -
                            - - - - - - - - - - - - {entries%indexentry} -
                            NameDescriptionContactLast change  
                            - - -
                            -

                            mercurial

                            -
                            - -
                            -
                            -
                            -
                            - -
                            - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/manifest.tmpl --- a/templates/monoblue/manifest.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -{header} -{repo|escape}: files - - - - - -
                            - - - - - -

                            {path|escape} {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}

                            - - - - - - - - - - {dentries%direntry} - {fentries%fileentry} -
                            drwxr-xr-x[up]
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/map --- a/templates/monoblue/map Tue Dec 08 23:23:59 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 = '{label|escape} ' -navshortentry = '{label|escape} ' -navgraphentry = '{label|escape} ' -filenaventry = '{label|escape}' -filedifflink = '{file|escape} ' -filenodelink = ' - - {file|escape} - - - file | - annotate | - diff | - revisions - - ' -filenolink = ' - - - {file|escape}file | - annotate | - diff | - revisions - - ' -fileellipses = '...' -changelogentry = changelogentry.tmpl -searchentry = changelogentry.tmpl -changeset = changeset.tmpl -manifest = manifest.tmpl -direntry = ' - - drwxr-xr-x - - - {basename|escape} - files - ' -fileentry = ' - - {permissions|permissions} - {date|isodate} - {size} - {basename|escape} - - file | - revisions | - annotate - - ' -filerevision = filerevision.tmpl -fileannotate = fileannotate.tmpl -filediff = filediff.tmpl -filelog = filelog.tmpl -fileline = ' -
                            -
                            {linenumber} {line|escape}
                            -
                            ' -annotateline = ' - - - {author|user}@{rev} - - - {linenumber} - - {line|escape} - ' -difflineplus = '{linenumber} {line|escape}' -difflineminus = '{linenumber} {line|escape}' -difflineat = '{linenumber} {line|escape}' -diffline = '{linenumber} {line|escape}' -changelogparent = ' - - parent {rev}: - - {node|short} - - ' -changesetbranch = '
                            branch
                            {name}
                            ' -changesetparent = ' -
                            parent {rev}
                            -
                            {node|short}
                            ' -filerevbranch = '
                            branch
                            {name}
                            ' -filerevparent = ' -
                            parent {rev}
                            -
                            - - {rename%filerename}{node|short} - -
                            ' -filerename = '{file|escape}@' -filelogrename = '| base' -fileannotateparent = ' -
                            parent {rev}
                            -
                            - - {rename%filerename}{node|short} - -
                            ' -changelogchild = ' -
                            child {rev}:
                            -
                            {node|short}
                            ' -changesetchild = ' -
                            child {rev}
                            -
                            {node|short}
                            ' -filerevchild = ' -
                            child {rev}
                            -
                            - {node|short} -
                            ' -fileannotatechild = ' -
                            child {rev}
                            -
                            - {node|short} -
                            ' -tags = tags.tmpl -tagentry = ' - - {date|age} - {tag|escape} - - changeset | - changelog | - files - - ' -branches = branches.tmpl -branchentry = ' - - {date|age} - {node|short} - {branch|escape} - - changeset | - changelog | - files - - ' -diffblock = '
                            {lines}
                            ' -filediffparent = ' -
                            parent {rev}
                            -
                            {node|short}
                            ' -filelogparent = ' - - parent {rev}:  - {node|short} - ' -filediffchild = ' -
                            child {rev}
                            -
                            {node|short}
                            ' -filelogchild = ' - - child {rev}:  - {node|short} - ' -shortlog = shortlog.tmpl -tagtag = '{name} ' -branchtag = '{name} ' -inbranchtag = '{name} ' -shortlogentry = ' - - {date|age} - {author|person} - - - {desc|strip|firstline|escape|nonempty} - {inbranch%inbranchtag}{branches%branchtag}{tags%tagtag} - - - - changeset | - files - - ' -filelogentry = ' - - {date|age} - {desc|strip|firstline|escape|nonempty} - - file | diff | annotate - {rename%filelogrename} - - ' -archiveentry = '
                          • {type|escape}
                          • ' -indexentry = ' - - {name|escape} - {description} - {contact|obfuscate} - {lastchange|age} - {archives%indexarchiveentry} - - - - \n' -indexarchiveentry = '{type|escape} ' -index = index.tmpl -urlparameter = '{separator}{name}={value|urlescape}' -hiddenformentry = '' -graph = graph.tmpl diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/notfound.tmpl --- a/templates/monoblue/notfound.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -{header} - {repo|escape}: Mercurial repository not found - - - - - -
                            - - - -

                            The specified repository "{repo|escape}" is unknown, sorry.

                            -

                            Please go back to the main repository list page.

                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/search.tmpl --- a/templates/monoblue/search.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -{header} - {repo|escape}: Search - - - - - -
                            - - - - {entries} - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/shortlog.tmpl --- a/templates/monoblue/shortlog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -{header} - {repo|escape}: shortlog - - - - - -
                            - - - - - -{entries%shortlogentry} -
                            - -
                            -{changenav%navshortentry} -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/summary.tmpl --- a/templates/monoblue/summary.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -{header} - {repo|escape}: Summary - - - - - -
                            - - - -
                            -
                            name
                            -
                            {repo|escape}
                            -
                            description
                            -
                            {desc}
                            -
                            owner
                            -
                            {owner|obfuscate}
                            -
                            last change
                            -
                            {lastchange|rfc822date}
                            -
                            - -

                            Changes

                            - -{shortlog} - - - -
                            ...
                            - -

                            Tags

                            - -{tags} - - - -
                            ...
                            - - - - {branches%branchentry} - - - -
                            ...
                            -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/monoblue/tags.tmpl --- a/templates/monoblue/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -{header} - {repo|escape}: Tags - - - - - -
                            - - - - -{entries%tagentry} -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/branches.tmpl --- a/templates/paper/branches.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -{header} -{repo|escape}: branches - - - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            branches

                            - - - - - - - - -{entries%branchentry} -
                            branchnode
                            -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/changeset.tmpl --- a/templates/paper/changeset.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -{header} -{repo|escape}: {node|short} - - -
                            - - -
                            - -

                            {repo|escape}

                            -

                            changeset {rev}:{node|short} {changesetbranch%changelogbranchname} {changesettag}

                            - - - -
                            {desc|strip|escape|addbreaks|nonempty}
                            - - - - - - - - - - - - - - - - - - - - - -
                            author{author|obfuscate}
                            date{date|date} ({date|age})
                            parents{parent%changesetparent}
                            children{child%changesetchild}
                            files{files}
                            - -
                            -
                            line diff
                            - -{diff} -
                            - -
                            -
                            -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/error.tmpl --- a/templates/paper/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -{header} -{repo|escape}: error - - - -
                            - - -
                            - -

                            {repo|escape}

                            -

                            error

                            - - - -
                            -

                            -An error occurred while processing your request: -

                            -

                            -{error|escape} -

                            -
                            -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/fileannotate.tmpl --- a/templates/paper/fileannotate.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -{header} -{repo|escape}: {file|escape} annotate - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            annotate {file|escape} @ {rev}:{node|short}

                            - - - -
                            {desc|strip|escape|addbreaks|nonempty}
                            - - - - - - - - - - - - - - - - - - -{changesettag} -
                            author{author|obfuscate}
                            date{date|date} ({date|age})
                            parents{parent%filerevparent}
                            children{child%filerevchild}
                            - -
                            - - - - - -{annotate%annotateline} -
                            rev  line source
                            -
                            -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/filediff.tmpl --- a/templates/paper/filediff.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -{header} -{repo|escape}: {file|escape} diff - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            diff {file|escape} @ {rev}:{node|short}

                            - - - -
                            {desc|strip|escape|addbreaks|nonempty}
                            - - - - - - - - - - - - - - - - - - -{changesettag} -
                            author{author|obfuscate}
                            date{date|date} ({date|age})
                            parents{parent%filerevparent}
                            children{child%filerevchild}
                            - -
                            -
                            line diff
                            - -{diff} -
                            -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/filelog.tmpl --- a/templates/paper/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -{header} -{repo|escape}: {file|escape} history - - - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            log {file|escape}

                            - - - - - - - - - - - -{entries%filelogentry} -
                            ageauthordescription
                            - -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/filelogentry.tmpl --- a/templates/paper/filelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - {date|age} - {author|person} - {desc|strip|firstline|escape|nonempty}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/filerevision.tmpl --- a/templates/paper/filerevision.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -{header} -{repo|escape}: {node|short} {file|escape} - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            view {file|escape} @ {rev}:{node|short}

                            - - - -
                            {desc|strip|escape|addbreaks|nonempty}
                            - - - - - - - - - - - - - - - - - - -{changesettag} -
                            author{author|obfuscate}
                            date{date|date} ({date|age})
                            parents{parent%filerevparent}
                            children{child%filerevchild}
                            - -
                            -
                            line source
                            -{text%fileline} -
                            -
                            -
                            -
                            - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/footer.tmpl --- a/templates/paper/footer.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -{motd} - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/graph.tmpl --- a/templates/paper/graph.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -{header} -{repo|escape}: revision graph - - - - - - -
                            - - -
                            -

                            {repo|escape}

                            -

                            graph

                            - - - - - - - -
                            -
                              - -
                                -
                                - - - - - - -
                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/header.tmpl --- a/templates/paper/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/index.tmpl --- a/templates/paper/index.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -{header} -Mercurial repositories index - - - -
                                - -
                                -

                                Mercurial Repositories

                                - - - - - - - - - - {entries%indexentry} -
                                NameDescriptionContactLast change 
                                -
                                -
                                -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/manifest.tmpl --- a/templates/paper/manifest.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -{header} -{repo|escape}: {node|short} {path|escape} - - - -
                                - - -
                                -

                                {repo|escape}

                                -

                                directory {path|escape} @ {rev}:{node|short} {tags%changelogtag}

                                - - - - - - - - - - - - - - -{dentries%direntry} -{fentries%fileentry} -
                                namesizepermissions
                                [up]drwxr-xr-x
                                -
                                -
                                -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/map --- a/templates/paper/map Tue Dec 08 23:23:59 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 = '{label|escape} ' -navshortentry = '{label|escape} ' -navgraphentry = '{label|escape} ' -filenaventry = '{label|escape} ' -filedifflink = '{file|escape} ' -filenodelink = '{file|escape} ' -filenolink = '{file|escape} ' -fileellipses = '...' -changelogentry = shortlogentry.tmpl -searchentry = shortlogentry.tmpl -changeset = changeset.tmpl -manifest = manifest.tmpl - -direntry = ' - - - - dir. {basename|escape}/ - - - {emptydirs|escape} - - - - drwxr-xr-x - ' - -fileentry = ' - - - - file {basename|escape} - - - {size} - {permissions|permissions} - ' - -filerevision = filerevision.tmpl -fileannotate = fileannotate.tmpl -filediff = filediff.tmpl -filelog = filelog.tmpl -fileline = ' -
                                {linenumber} {line|escape}
                                ' -filelogentry = filelogentry.tmpl - -annotateline = ' - - - {author|user}@{rev} - - {linenumber} {line|escape} - ' - -diffblock = '
                                {lines}
                                ' -difflineplus = '{linenumber} {line|escape}' -difflineminus = '{linenumber} {line|escape}' -difflineat = '{linenumber} {line|escape}' -diffline = '{linenumber} {line|escape}' - -changelogparent = ' - - parent {rev}: - {node|short} - ' - -changesetparent = '{node|short} ' - -filerevparent = '{rename%filerename}{node|short} ' -filerevchild = '{node|short} ' - -filerename = '{file|escape}@' -filelogrename = ' - - base: - - - {file|escape}@{node|short} - - - ' -fileannotateparent = ' - - parent: - - - {rename%filerename}{node|short} - - - ' -changesetchild = ' {node|short}' -changelogchild = ' - - child - - - {node|short} - - - ' -fileannotatechild = ' - - child: - - - {node|short} - - - ' -tags = tags.tmpl -tagentry = ' - - - - {tag|escape} - - - - {node|short} - - ' -branches = branches.tmpl -branchentry = ' - - - - {branch|escape} - - - - {node|short} - - ' -changelogtag = '{name|escape} ' -changesettag = '{tag|escape} ' -changelogbranchhead = '{name|escape} ' -changelogbranchname = '{name|escape} ' - -filediffparent = ' - - parent {rev}: - {node|short} - ' -filelogparent = ' - - parent {rev}: - {node|short} - ' -filediffchild = ' - - child {rev}: - {node|short} - - ' -filelogchild = ' - - child {rev}: - {node|short} - ' - -indexentry = ' - - {name|escape} - {description} - {contact|obfuscate} - {lastchange|age} - {archives%indexarchiveentry} - \n' -indexarchiveentry = ' ↓{type|escape}' -index = index.tmpl -archiveentry = ' -
                              • - {type|escape} -
                              • ' -notfound = notfound.tmpl -error = error.tmpl -urlparameter = '{separator}{name}={value|urlescape}' -hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/notfound.tmpl --- a/templates/paper/notfound.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -{header} -Mercurial repository not found - - - -

                                Mercurial repository not found

                                - -The specified repository "{repo|escape}" is unknown, sorry. - -Please go back to the main repository list page. - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/search.tmpl --- a/templates/paper/search.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -{header} -{repo|escape}: searching for {query|escape} - - - -
                                - - -
                                -

                                {repo|escape}

                                -

                                searching for '{query|escape}'

                                - - - - - - - - - -{entries} -
                                ageauthordescription
                                - -
                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/shortlog.tmpl --- a/templates/paper/shortlog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -{header} -{repo|escape}: log - - - - - -
                                - - -
                                -

                                {repo|escape}

                                -

                                log

                                - - - - - - - - - - - -{entries%shortlogentry} -
                                ageauthordescription
                                - - -
                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/shortlogentry.tmpl --- a/templates/paper/shortlogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - {date|age} - {author|person} - {desc|strip|firstline|escape|nonempty}{inbranch%changelogbranchname}{branches%changelogbranchhead}{tags%changelogtag} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/paper/tags.tmpl --- a/templates/paper/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -{header} -{repo|escape}: tags - - - - - -
                                - - -
                                -

                                {repo|escape}

                                -

                                tags

                                - - - - - - - - -{entries%tagentry} -
                                tagnode
                                -
                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/changeset.tmpl --- a/templates/raw/changeset.tmpl Tue Dec 08 23:23:59 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} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/error.tmpl --- a/templates/raw/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -{header} -error: {error} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/fileannotate.tmpl --- a/templates/raw/fileannotate.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -{header} -{annotate%annotateline} -{footer} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/filediff.tmpl --- a/templates/raw/filediff.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -{header} -{diff} -{footer} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/index.tmpl --- a/templates/raw/index.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -{header} -{entries%indexentry} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/manifest.tmpl --- a/templates/raw/manifest.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -{header} -{dentries%direntry}{fentries%fileentry} -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/map --- a/templates/raw/map Tue Dec 08 23:23:59 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' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/raw/notfound.tmpl --- a/templates/raw/notfound.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -{header} -error: repository {repo} not found diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/changelog.tmpl --- a/templates/rss/changelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{header} - {repo|escape} Changelog - {repo|escape} Changelog - {entries%changelogentry} - - \ No newline at end of file diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/changelogentry.tmpl --- a/templates/rss/changelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - {desc|strip|firstline|strip|escape} - {urlbase}{url}rev/{node|short} - - {author|obfuscate} - {date|rfc822date} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/error.tmpl --- a/templates/rss/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -{header} - Error - Error - - Error - {error|escape} - http://mercurial.selenic.com/#error - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/filelog.tmpl --- a/templates/rss/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{header} - {repo|escape}: {file|escape} history - {file|escape} revision history - {entries%filelogentry} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/filelogentry.tmpl --- a/templates/rss/filelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - {desc|strip|firstline|strip|escape} - {urlbase}{url}log{{node|short}}/{file|urlescape} - - {author|obfuscate} - {date|rfc822date} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/header.tmpl --- a/templates/rss/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - - - {urlbase}{url} - en-us diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/map --- a/templates/rss/map Tue Dec 08 23:23:59 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 diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/tagentry.tmpl --- a/templates/rss/tagentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - {tag|escape} - {urlbase}{url}rev/{node|short} - - {date|rfc822date} - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/rss/tags.tmpl --- a/templates/rss/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -{header} - {repo|escape}: tags - {repo|escape} tag history - {entriesnotip%tagentry} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/branches.tmpl --- a/templates/spartan/branches.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -{header} -{repo|escape}: branches - - - - - - - -

                                branches:

                                - -
                                  -{entries%branchentry} -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/changelog.tmpl --- a/templates/spartan/changelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -{header} -{repo|escape}: changelog - - - - - -
                                -shortlog -graph -tags -branches -files -{archives%archiveentry} -rss -atom -
                                - -

                                changelog for {repo|escape}

                                - -
                                -{sessionvars%hiddenformentry} -

                                - - -navigate: {changenav%naventry} -

                                -
                                - -{entries%changelogentry} - -
                                -{sessionvars%hiddenformentry} -

                                - - -navigate: {changenav%naventry} -

                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/changelogentry.tmpl --- a/templates/spartan/changelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ - - - - - - - - - - {parent%changelogparent} - {child%changelogchild} - {changelogtag} - - - - - - - - - - - - -
                                {date|age}:{desc|strip|firstline|escape|nonempty}
                                changeset {rev}:{node|short}
                                author:{author|obfuscate}
                                date:{date|date}
                                files:{files}
                                diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/changeset.tmpl --- a/templates/spartan/changeset.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -{header} -{repo|escape}: changeset {node|short} - - - -
                                -changelog -shortlog -graph -tags -branches -files -raw -{archives%archiveentry} -
                                - -

                                changeset: {desc|strip|escape|firstline|nonempty}

                                - - - - - - -{parent%changesetparent} -{child%changesetchild} -{changesettag} - - - - - - - - - - - - - - - - -
                                changeset {rev}:{node|short}
                                author:{author|obfuscate}
                                date:{date|date} ({date|age})
                                files:{files}
                                description:{desc|strip|escape|addbreaks|nonempty}
                                - -
                                -{diff} -
                                - -{footer} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/error.tmpl --- a/templates/spartan/error.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -{header} -Mercurial Error - - - -

                                Mercurial Error

                                - -

                                -An error occurred while processing your request: -

                                -

                                -{error|escape} -

                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/fileannotate.tmpl --- a/templates/spartan/fileannotate.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -{header} -{repo|escape}: {file|escape} annotate - - - - - -

                                Annotate {file|escape}

                                - - - - - -{parent%fileannotateparent} -{child%fileannotatechild} - - - - - - - - - - - - - - - -
                                changeset {rev}:{node|short}
                                author:{author|obfuscate}
                                date:{date|date} ({date|age})
                                permissions:{permissions|permissions}
                                description:{desc|strip|escape|addbreaks|nonempty}
                                - - -{annotate%annotateline} -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/filediff.tmpl --- a/templates/spartan/filediff.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -{header} -{repo|escape}: {file|escape} diff - - - - - -

                                {file|escape}

                                - - - - - - -{parent%filediffparent} -{child%filediffchild} -
                                revision {rev}:{node|short}
                                - -
                                -{diff} -
                                - -{footer} - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/filelog.tmpl --- a/templates/spartan/filelog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -{header} -{repo|escape}: {file|escape} history - - - - - - - -

                                {file|escape} revision history

                                - -

                                navigate: {nav%filenaventry}

                                - -{entries%filelogentry} - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/filelogentry.tmpl --- a/templates/spartan/filelogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ - - - - - - - - - {rename%filelogrename} - - - - - - - - -
                                {date|age}:{desc|strip|firstline|escape|nonempty}
                                revision {filerev}: - - {node|short} - (diff) - (annotate) -
                                author:{author|obfuscate}
                                date:{date|date}
                                - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/filerevision.tmpl --- a/templates/spartan/filerevision.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -{header} -{repo|escape}:{file|escape} - - - - - -

                                {file|escape}

                                - - - - - -{parent%filerevparent} -{child%filerevchild} - - - - - - - - - - - - - -
                                changeset {rev}:{node|short}
                                author:{author|obfuscate}
                                date:{date|date} ({date|age})
                                permissions:{permissions|permissions}
                                description:{desc|strip|escape|addbreaks|nonempty}
                                - -
                                -{text%fileline}
                                -
                                - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/footer.tmpl --- a/templates/spartan/footer.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -{motd} - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/graph.tmpl --- a/templates/spartan/graph.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -{header} -{repo|escape}: graph - - - - - - - - -

                                graph

                                - -
                                -{sessionvars%hiddenformentry} -

                                - - -navigate: {changenav%navgraphentry} -

                                -
                                - - - -
                                -
                                  - -
                                    -
                                    - - - - -
                                    -{sessionvars%hiddenformentry} -

                                    - - -navigate: {changenav%navgraphentry} -

                                    -
                                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/header.tmpl --- a/templates/spartan/header.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/index.tmpl --- a/templates/spartan/index.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -{header} -Mercurial repositories index - - - -

                                    Mercurial Repositories

                                    - - - - - - - - - - {entries%indexentry} -
                                    NameDescriptionContactLast change 
                                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/manifest.tmpl --- a/templates/spartan/manifest.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -{header} -{repo|escape}: files for changeset {node|short} - - - -
                                    -changelog -shortlog -graph -tags -branches -changeset -{archives%archiveentry} -
                                    - -

                                    files for changeset {node|short}: {path|escape}

                                    - - - - -{dentries%direntry} -{fentries%fileentry} -
                                    drwxr-xr-x  -   -   - [up] -
                                    -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/map --- a/templates/spartan/map Tue Dec 08 23:23:59 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 = '{label|escape} ' -navshortentry = '{label|escape} ' -navgraphentry = '{label|escape} ' -filenaventry = '{label|escape} ' -filedifflink = '{file|escape} ' -filenodelink = '{file|escape} ' -filenolink = '{file|escape} ' -fileellipses = '...' -changelogentry = changelogentry.tmpl -searchentry = changelogentry.tmpl -changeset = changeset.tmpl -manifest = manifest.tmpl - -direntry = ' - - drwxr-xr-x  -   -   - - {basename|escape}/ - - {emptydirs|urlescape} - ' - -fileentry = ' - - {permissions|permissions}  - {date|isodate}  - {size}  - {basename|escape}' - -filerevision = filerevision.tmpl -fileannotate = fileannotate.tmpl -filediff = filediff.tmpl -filelog = filelog.tmpl -fileline = '
                                    {linenumber} {line|escape}
                                    ' -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 = ' - - - {author|user}@{rev} - - - {linenumber} - -
                                     {line|escape}
                                    - ' -difflineplus = '{linenumber}{line|escape}' -difflineminus = '{linenumber}{line|escape}' -difflineat = '{linenumber}{line|escape}' -diffline = '{linenumber}{line|escape}' -changelogparent = ' - - parent {rev}: - - {node|short} - - ' -changesetparent = ' - - parent {rev}: - {node|short} - ' -filerevparent = ' - - parent: - - - {rename%filerename}{node|short} - - - ' -filerename = '{file|escape}@' -filelogrename = ' - - base: - - - {file|escape}@{node|short} - - - ' -fileannotateparent = ' - - parent: - - - {rename%filerename}{node|short} - - - ' -changesetchild = ' - - child {rev}: - {node|short} - ' -changelogchild = ' - - child {rev}: - {node|short} - ' -filerevchild = ' - - child: - {node|short} - ' -fileannotatechild = ' - - child: - {node|short} - ' -tags = tags.tmpl -tagentry = ' -
                                  • - {node} - {tag|escape} -
                                  • ' -branches = branches.tmpl -branchentry = ' -
                                  • - {node} - {branch|escape} -
                                  • ' -diffblock = '
                                    {lines}
                                    ' -changelogtag = 'tag:{tag|escape}' -changesettag = 'tag:{tag|escape}' -filediffparent = ' - - parent {rev}: - {node|short} - ' -filelogparent = ' - - parent {rev}: - {node|short} - ' -filediffchild = ' - - child {rev}: - {node|short} - ' -filelogchild = ' - - child {rev}: - {node|short} - ' -indexentry = ' - - {name|escape} - {description} - {contact|obfuscate} - {lastchange|age} ago - - RSS - Atom - {archives%archiveentry} - - ' -index = index.tmpl -archiveentry = '{type|escape} ' -notfound = notfound.tmpl -error = error.tmpl -urlparameter = '{separator}{name}={value|urlescape}' -hiddenformentry = '' diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/notfound.tmpl --- a/templates/spartan/notfound.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -{header} -Mercurial repository not found - - - -

                                    Mercurial repository not found

                                    - -The specified repository "{repo|escape}" is unknown, sorry. - -Please go back to the main repository list page. - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/search.tmpl --- a/templates/spartan/search.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -{header} -{repo|escape}: searching for {query|escape} - - - -
                                    -changelog -shortlog -graph -tags -branches -files -{archives%archiveentry} -
                                    - -

                                    searching for {query|escape}

                                    - -
                                    -{sessionvars%hiddenformentry} -

                                    -search: - -

                                    -
                                    - -{entries} - -
                                    -{sessionvars%hiddenformentry} -

                                    -search: - -

                                    -
                                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/shortlog.tmpl --- a/templates/spartan/shortlog.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -{header} -{repo|escape}: shortlog - - - - - -
                                    -changelog -graph -tags -branches -files -{archives%archiveentry} -rss -atom -
                                    - -

                                    shortlog for {repo|escape}

                                    - -
                                    -{sessionvars%hiddenformentry} -

                                    - - -navigate: {changenav%navshortentry} -

                                    -
                                    - -{entries%shortlogentry} - -
                                    -{sessionvars%hiddenformentry} -

                                    - - -navigate: {changenav%navshortentry} -

                                    -
                                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/shortlogentry.tmpl --- a/templates/spartan/shortlogentry.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - - - - -
                                    {date|age}{author|person}{desc|strip|firstline|escape|nonempty}
                                    diff -r 585f51f8b5f0 -r 15fbbc939373 templates/spartan/tags.tmpl --- a/templates/spartan/tags.tmpl Tue Dec 08 23:23:59 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -{header} -{repo|escape}: tags - - - - - - - -

                                    tags:

                                    - -
                                      -{entries%tagentry} -
                                    - -{footer} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/background.png Binary file templates/static/background.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/coal-file.png Binary file templates/static/coal-file.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/coal-folder.png Binary file templates/static/coal-folder.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/excanvas.js --- a/templates/static/excanvas.js Tue Dec 08 23:23:59 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"){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(" ','","");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("n.x){n.x=k.x}if(l.y== -null||k.yn.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;oC.offset||C.offset==null){C.offset=u.offset;C.color=u.color}if(u.offset')}else if(a){b.push('')}else{b.push("')}b.push("");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})()}; diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/graph.js --- a/templates/static/graph.js Tue Dec 08 23:23:59 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 -// Copyright 2006 Alexander Schremmer -// -// derived from code written by Scott James Remnant -// 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; - - } - -} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/hgicon.png Binary file templates/static/hgicon.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/hglogo.png Binary file templates/static/hglogo.png has changed diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/style-coal.css --- a/templates/static/style-coal.css Tue Dec 08 23:23:59 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; -} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/style-gitweb.css --- a/templates/static/style-gitweb.css Tue Dec 08 23:23:59 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; -} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/style-monoblue.css --- a/templates/static/style-monoblue.css Tue Dec 08 23:23:59 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 **/ diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/style-paper.css --- a/templates/static/style-paper.css Tue Dec 08 23:23:59 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; -} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/static/style.css --- a/templates/static/style.css Tue Dec 08 23:23:59 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; -} diff -r 585f51f8b5f0 -r 15fbbc939373 templates/template-vars.txt --- a/templates/template-vars.txt Tue Dec 08 23:23:59 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/blacklist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/blacklist Tue Dec 08 23:36:06 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 = diff -r 585f51f8b5f0 -r 15fbbc939373 tests/run-tests.py --- a/tests/run-tests.py Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/run-tests.py Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-alias --- a/tests/test-alias Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-alias Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-alias.out --- a/tests/test-alias.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-alias.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-command-template --- a/tests/test-command-template Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-command-template Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-command-template.out --- a/tests/test-command-template.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-command-template.out Tue Dec 08 23:36:06 2009 +0100 @@ -150,7 +150,7 @@ 1970-01-17 person * new branch - [32a18f097fcc] + [32a18f097fcc] 1970-01-16 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-convert --- a/tests/test-convert Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-convert Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-convert-filemap --- a/tests/test-convert-filemap Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-convert-filemap Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-convert-filemap.out --- a/tests/test-convert-filemap.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-convert-filemap.out Tue Dec 08 23:36:06 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: diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-convert.out --- a/tests/test-convert.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-convert.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-debugcomplete.out --- a/tests/test-debugcomplete.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-debugcomplete.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-fncache.out --- a/tests/test-fncache.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-fncache.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-help.out --- a/tests/test-help.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-help.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-hgweb-commands --- a/tests/test-hgweb-commands Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-hgweb-commands Tue Dec 08 23:36:06 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' diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-hgweb-commands.out --- a/tests/test-hgweb-commands.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-hgweb-commands.out Tue Dec 08 23:36:06 2009 +0100 @@ -465,97 +465,12 @@ % Overviews 200 Script output follows - - - http://127.0.0.1/ - - - test: tags - test tag history - Mercurial SCM - 1970-01-01T00:00:00+00:00 - - - 1.0 - - http://127.0.0.1/#tag-2ef0ac749a14e4f57a5a822464a0902c6f7f448f - 1970-01-01T00:00:00+00:00 - 1970-01-01T00:00:00+00:00 - 1.0 - - - +tip 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe +1.0 2ef0ac749a14e4f57a5a822464a0902c6f7f448f 200 Script output follows - - - - - - - - - -test: Branches - - - - - - - - - -
                                     
                                    - - - - - - - - - - - - - - -
                                    1970-01-011d22e65f027estable
                                    1970-01-01a4f92ed23982default
                                    - - - - - +stable 1d22e65f027e5a0609357e7d8e7508cd2ba5d2fe open +default a4f92ed23982be056b9852de5dfe873eaac7f0de inactive 200 Script output follows diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-inherit-mode.out --- a/tests/test-inherit-mode.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-inherit-mode.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-non-interactive-wsgi --- a/tests/test-non-interactive-wsgi Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-non-interactive-wsgi Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-non-interactive-wsgi.out --- a/tests/test-non-interactive-wsgi.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-non-interactive-wsgi.out Tue Dec 08 23:36:06 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'] diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-patchbomb --- a/tests/test-patchbomb Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-patchbomb Tue Dec 08 23:36:06 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' \ + -t toast -c 'foo,bar@example.com' -c '"A, B <>" ' -s test -r 0 \ + --config email.bcc='"Quux, A." ' +cat tmp.mbox | fixheaders + echo "% test multi-byte domain parsing" UUML=`printf '\374'` HGENCODING=iso-8859-1 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-patchbomb.out --- a/tests/test-patchbomb.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-patchbomb.out Tue Dec 08 23:36:06 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 , eggs, toast +Cc: foo, bar@example.com, "A, B <>" +Bcc: "Quux, A." + +# 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. diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-rollback --- a/tests/test-rollback Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-rollback Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-rollback.out --- a/tests/test-rollback.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-rollback.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-share --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-share Tue Dec 08 23:36:06 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" + diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-share.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-share.out Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-status --- a/tests/test-status Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-status Tue Dec 08 23:36:06 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 diff -r 585f51f8b5f0 -r 15fbbc939373 tests/test-status.out --- a/tests/test-status.out Tue Dec 08 23:23:59 2009 +0100 +++ b/tests/test-status.out Tue Dec 08 23:36:06 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