sapling/mercurial
Anton Shestakov 8859c1494a hgweb: use webutil.commonentry() for nodes (but not for jsdata yet) in /graph
This makes graphdata() simpler by using existing code that gets common
changeset properties for showing in hgweb. graphdata() is a nested function in
graph() that prepares entries for /graph view, but there are two different
lists of changesets prepared: "jsdata" for JavaScript-rendered graph and
"nodes" for everything else.

For "jsdata", properties "node", "user", "age" and "desc" are passed through
various template filters because we don't have these filters in JavaScript, so
the data has to be prepared server-side. But now that commonentry() is used for
producing "nodes" list (and it doesn't apply any filters), these filters need
to be added to the appropriate templates (only raw at this moment, everything
else either doesn't implement graph or uses JavaScript).

This is a bit of refactoring that will hopefully simplify future patches. The
end result is to have /graph that only renders the actual graph with nodes and
vertices in JavaScript, and the rest is done server-side. This way server-side
code can focus on showing a list of changesets, which is easy because we
already have /log, /shortlog, etc, and JavaScript code can be simplified,
making it easier to add obsolescence graph and other features.
2017-11-20 21:59:00 +08:00
..
cext parsers: allow clang-format here 2017-10-16 14:53:57 -04:00
cffi codemod: use pycompat.isdarwin 2017-10-12 23:34:34 -07:00
default.d mergetools.rc: find OSX FileMerge in the new location inside Xcode 4.3 2015-10-16 11:37:34 +02:00
help help: adding a topic on flags 2017-10-30 20:35:30 -07:00
hgweb hgweb: use webutil.commonentry() for nodes (but not for jsdata yet) in /graph 2017-11-20 21:59:00 +08:00
httpclient httpclient: update to 54868ef054d2 of httpplus 2016-06-27 11:53:50 -04:00
pure codemod: use pycompat.iswindows 2017-10-12 23:30:46 -07:00
templates hgweb: use webutil.commonentry() for nodes (but not for jsdata yet) in /graph 2017-11-20 21:59:00 +08:00
thirdparty thirdparty: vendor attrs 2017-10-01 04:14:16 -07:00
__init__.py python3: don't byte mangle third-party packages 2017-10-01 04:04:18 -07:00
ancestor.py py3: add __bool__ to every class defining __nonzero__ 2017-03-13 12:40:14 -07:00
archival.py archive: add an experimental config to control the metadata file template 2017-07-17 00:49:29 -04:00
bdiff.c bdiff: remove trailing newlines 2017-10-04 10:51:39 -04:00
bdiff.h bdiff: include compat.h in header to define ssize_t 2017-10-13 22:38:24 +09:00
bitmanipulation.h bitmanipulation: reformat with clang-format 2017-10-04 10:52:50 -04:00
bookmarks.py bookmark: add a dedicated txnclose-bookmark hook 2017-10-10 17:53:42 +02:00
branchmap.py branchmap: remove superfluous pass statements 2017-09-30 07:42:59 -04:00
bundle2.py bundle2: use os.SEEK_* constants 2017-11-11 16:48:40 -08:00
bundlerepo.py bundlerepo: rename "bundlefilespos" variable and attribute 2017-11-13 19:12:56 -08:00
byterange.py cleanup: use urllibcompat for renamed methods on urllib request objects 2017-10-01 12:14:21 -04:00
changegroup.py changegroup: use any node, not min(), in treemanifest's generatemanifests 2017-11-08 18:24:43 -08:00
changelog.py changelog: use a Factory for default value for files 2017-10-02 11:03:53 +01:00
chgserver.py chgserver: do not treat HG as sensitive environ when CHGHG is set 2017-10-18 14:55:39 -07:00
cmdutil.py cmdutil: create dirs for templated cat file output 2017-11-07 13:48:33 -08:00
color.py codemod: use pycompat.iswindows 2017-10-12 23:30:46 -07:00
commands.py config: rename allow_push to allow-push 2017-10-19 11:46:41 +02:00
commandserver.py style: never use a space before a colon or comma 2017-09-29 15:48:34 +00:00
compat.h encoding: add function to test if a str consists of ASCII characters 2017-04-23 12:59:42 +09:00
config.py config: allow remapping the default section 2017-10-14 17:41:41 +09:00
configitems.py config: rename allow_push to allow-push 2017-10-19 11:46:41 +02:00
context.py context: add instabilities() method to basefilectx 2017-11-19 13:18:54 +08:00
copies.py copies: add a config to limit the number of candidates to check in heuristics 2017-10-10 02:25:03 +05:30
crecord.py crecord: fix revert -ir '.^' crash caused by 3649c3f2cd 2017-11-13 18:22:25 -08:00
dagop.py revset: optimize "draft() & ::x" pattern 2017-08-28 14:49:00 -07:00
dagparser.py py3: iterate bytes as a byte string in dagparser.py 2017-09-03 15:32:45 +09:00
dagutil.py dagutil: use a listcomp instead of a map() 2017-10-15 00:37:24 -04:00
debugcommands.py debugdeltachain: output information about sparse read if enabled 2017-10-26 09:27:09 +02:00
destutil.py show: implement "stack" view 2017-07-01 22:38:42 -07:00
dirstate.py dirstate: make map implementation overridable 2017-11-15 01:07:42 -08:00
dirstateguard.py dirstate: update backup functions to take full backup filename 2017-07-12 15:24:07 -07:00
discovery.py discovery: prevent crash caused by prune marker having no parent data 2017-04-19 23:10:05 +09:00
dispatch.py dispatch: when --pager=no is passed, also disable pager on req.repo.ui 2017-10-09 12:42:28 -07:00
dummycert.pem
encoding.py py3: use 'surrogatepass' error handler to process U+DCxx transparently 2017-09-16 22:55:48 +09:00
error.py error: move patch.PatchError so it can easily implement __bytes__ (API) 2017-09-03 16:45:33 +09:00
exchange.py exchange: drop unused '_getbookmarks' function 2017-10-17 15:55:40 +02:00
exewrapper.c exewrapper: format with clang-format 2017-10-04 11:04:18 -04:00
extensions.py extensions: always include traceback when extension setup fails 2017-10-17 10:31:44 -07:00
fancyopts.py py3: slice over bytes to prevent getting it's ascii value 2017-06-25 08:36:51 +05:30
filelog.py python3: replace sorted(<dict>.iterkeys()) with sorted(<dict>) 2017-08-22 20:06:58 -04:00
filemerge.py filemerge: pass a default value to _toolstr (issue5718) 2017-10-26 11:07:06 -07:00
fileset.py help: clarify quotes are needed for filesets.size expressions 2016-09-21 16:33:37 +00:00
formatter.py templater: load aliases from [templatealias] section in map file 2017-10-14 18:06:42 +09:00
graphmod.py log: add a "graphwidth" template variable 2017-08-15 10:15:31 -07:00
hbisect.py bisect: move check_state into the bisect module 2016-08-24 04:25:20 +02:00
help.py help: adding a topic on flags 2017-10-30 20:35:30 -07:00
hg.py share: handle --relative shares to a different drive letter gracefully 2017-11-02 23:55:09 -04:00
hook.py hook: add a 'hashook' function to test for hook existence 2017-10-08 13:08:31 +02:00
httpconnection.py cleanup: use urllibcompat for renamed methods on urllib request objects 2017-10-01 12:14:21 -04:00
httppeer.py httppeer: always produce native str header keys and values 2017-10-15 00:03:31 -04:00
i18n.py i18n: cache translated messages per encoding 2017-10-13 21:36:10 +09:00
keepalive.py cleanup: use urllibcompat for renamed methods on urllib request objects 2017-10-01 12:14:21 -04:00
localrepo.py sparse-read: skip gaps too small to be worth splitting 2017-10-18 09:07:48 +02:00
lock.py lock: avoid unintentional lock acquisition at failure of readlock 2017-05-01 19:59:13 +09:00
lsprof.py lsprof: use print function 2016-01-02 11:40:53 -08:00
lsprofcalltree.py lsprofcalltree: use print function 2016-01-02 11:45:29 -08:00
mail.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
manifest.py py3: return False early while checking whether None is a key in lazymanifest 2017-09-30 05:22:22 +05:30
match.py match: remove superfluous pass statements 2017-09-30 07:44:45 -04:00
mdiff.py py3: use '%d' for integers instead of '%s' 2017-10-02 04:48:06 +05:30
merge.py merge: add a config option to disable path conflict checking 2017-10-24 11:14:38 -07:00
mergeutil.py checkunresolved: move to new package to help avoid import cycles 2016-11-21 21:31:45 -05:00
minirst.py python3: use our bytes-only version of cgi.escape everywhere 2017-10-05 14:16:20 -04:00
mpatch.c mpatch: switch alignment of wrapped line from tab to spaces with clang-format 2017-10-04 11:00:04 -04:00
mpatch.h mpatch: reformat function prototypes with clang-format 2017-10-04 10:56:33 -04:00
namespaces.py namespaces: record and expose whether namespace is built-in 2017-06-24 14:52:15 -07:00
node.py node: use byte literals to construct nullid and wdirid 2016-03-12 14:04:57 -08:00
obsolete.py config: also gather effect-flags on experimental.evolution 2017-10-19 17:50:20 +02:00
obsutil.py obsfate: makes successorsetverb takes the markers as argument 2017-10-19 12:35:47 +02:00
parser.py doctest: use print_function and convert bytes to unicode where needed 2017-09-03 14:56:31 +09:00
patch.py patch: accept prefix argument to changedfiles() helper 2017-11-14 10:26:36 -08:00
pathutil.py pathutil: add doctests for canonpath() 2017-11-03 22:22:50 -04:00
peer.py peer: ensure command names are always ascii bytestrs 2017-10-15 00:05:00 -04:00
phases.py phases: pass phase names to hooks instead of internal values 2017-10-18 12:19:53 -05:00
policy.py encoding: add fast path of jsonescape() (issue5533) 2017-04-23 14:47:52 +09:00
posix.py codemod: use pycompat.isdarwin 2017-10-12 23:34:34 -07:00
profiling.py configitems: register the 'profiling.type' config 2017-06-30 03:44:00 +02:00
progress.py configitems: register the 'progress.format' config 2017-10-11 22:53:17 +02:00
pushkey.py pushkey: use absolute_import 2015-08-08 19:57:27 -07:00
pvec.py pvec: use absolute_import 2015-12-21 21:32:58 -08:00
pycompat.py pycompat: define operating system constants 2017-10-12 19:20:04 -07:00
rcutil.py codemod: use pycompat.iswindows 2017-10-12 23:30:46 -07:00
registrar.py registrar: don't i18n ProgrammingError message 2017-10-18 22:10:08 -07:00
repair.py repair: preserve phase also when not using generaldelta (issue5678) 2017-09-14 11:16:57 -07:00
repository.py repository: formalize wire protocol interface 2017-08-13 11:04:42 -07:00
repoview.py repoview: remove incorrect documentation of the function 2017-10-10 23:19:35 +05:30
revlog.py sparse-read: ignore trailing empty revs in each read chunk 2017-10-18 15:28:19 +02:00
revset.py revset: extract a parsefollowlinespattern helper function 2017-10-04 15:27:43 +02:00
revsetlang.py revset: move weight information to predicate 2017-09-01 19:42:09 -07:00
scmposix.py codemod: use pycompat.isdarwin 2017-10-12 23:34:34 -07:00
scmutil.py scmutil: don't try to delete origbackup symlinks to directories (issue5731) 2017-11-03 09:27:36 -07:00
scmwindows.py pager: use less as a fallback on Unix 2017-04-28 20:51:14 +09:00
selectors2.py selectors2: do not use platform.system() 2017-10-11 17:27:21 -07:00
server.py server: drop executable bit from daemon log file 2017-10-25 21:20:01 +09:00
setdiscovery.py setdiscovery: use iterbatch interface instead of batch 2016-03-01 17:44:41 -05:00
similar.py similar: remove caching from the module level 2017-01-13 11:42:36 -08:00
simplemerge.py simplemerge: remove unused repo parameter 2017-09-01 10:35:43 -07:00
smartset.py py3: fix type of attribute name in smartset.py 2017-09-03 17:14:53 +09:00
sparse.py merge: add merge action 'pr' to rename files during update 2017-10-02 14:05:30 -07:00
sshpeer.py ssh: fix flakey ssh errors on BSD systems 2017-09-11 15:59:18 -07:00
sshserver.py style: never put multiple statements on one line 2017-09-29 15:49:20 +00:00
sslutil.py configitems: register the 'hostsecurity.*:fingerprints' config 2017-10-14 00:29:31 +02:00
statichttprepo.py statichttprepo: do not use platform path separator to build a URL 2017-10-28 17:23:52 +09:00
statprof.py statprof: require input file 2017-01-18 22:45:07 -08:00
store.py py3: iterate bytes as a byte string in store.lowerencode() 2017-09-03 17:28:47 +09:00
streamclone.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
subrepo.py subrepo: use per-type config options to enable subrepos 2017-11-06 22:32:41 -08:00
tagmerge.py tagmerge: use workingfilectx to write merged tags 2017-07-11 16:48:15 -07:00
tags.py cachevfs: migration the tags fnode cache to 'cachevfs' 2017-07-15 23:30:25 +02:00
templatefilters.py templatefilters: defend against evil unicode strs in json filter 2017-10-16 22:44:43 -04:00
templatekw.py templatekw: add verbosity keyword to select template by -q/-v/--debug flag 2017-10-21 17:46:41 +09:00
templater.py obsfate: makes successorsetverb takes the markers as argument 2017-10-19 12:35:47 +02:00
transaction.py util: add base class for transactional context managers 2017-07-28 22:42:10 -07:00
treediscovery.py error: get Abort from 'error' instead of 'util' 2015-10-08 12:55:45 -07:00
txnutil.py txnutil: factor out the logic to read file in according to HG_PENDING 2017-02-21 01:20:59 +09:00
ui.py tweakdefaults: turn on ui.statuscopies 2017-11-16 17:11:14 -08:00
unionrepo.py revlog: update signature of dummy addgroup() in bundlerepo and unionrepo 2017-09-15 23:58:45 +09:00
upgrade.py codemod: simplify nested withs 2017-07-13 18:31:35 -07:00
url.py url: add cgi.escape equivalent for bytestrings 2017-10-14 02:57:26 -04:00
urllibcompat.py urllibcompat: move some adapters from pycompat to urllibcompat 2017-10-04 11:58:00 -04:00
util.py util: add util.clearcachedproperty 2017-11-08 09:18:18 -08:00
verify.py codemod: register core configitems using a script 2017-07-14 14:22:40 -07:00
vfs.py codemod: use pycompat.iswindows 2017-10-12 23:30:46 -07:00
win32.py win32: work around a WinError problem handling HRESULT types 2017-03-30 00:33:00 -04:00
windows.py ssh: quote parameters using shellquote (SEC) 2017-08-04 23:54:12 -07:00
wireproto.py wireproto: more strkwargs cleanup 2017-10-15 00:39:53 -04:00
worker.py codemod: use pycompat.iswindows 2017-10-12 23:30:46 -07:00