Mercurial > hg-stable
graph
-
match: explode if unsupported pattern passed down to _regex() builderSun, 10 Jun 2018 15:47:58 +0900, by Yuya Nishihara
-
match: add basic wrapper for boolean functionSat, 09 Jun 2018 21:13:24 +0900, by Yuya Nishihara
-
stringutil: move _formatsetrepr() from smartsetSun, 10 Jun 2018 17:19:31 +0900, by Yuya Nishihara
-
pycompat: move rapply() from utilSun, 10 Jun 2018 17:07:29 +0900, by Yuya Nishihara
-
strip: improve help text for --no-backup optionThu, 05 Jul 2018 09:53:00 +0530, by Sushil khanchi
-
test-convert: demonstrate an unstable hash issue for bzr -> hg -> hgThu, 05 Jul 2018 15:07:29 -0400, by Matt Harbison
-
convert: add a config knob for not saving the bzr revisionThu, 05 Jul 2018 15:07:29 -0400, by Matt Harbison
-
test-bzr: use a fixed commit timeThu, 05 Jul 2018 15:07:29 -0400, by Matt Harbison
-
diff: use `context.diff` to produce diffWed, 23 May 2018 15:31:44 +0200, by Boris Feld
-
context: no longer accept diff options as dictionnarySat, 23 Jun 2018 15:03:05 +0200, by Boris Feld
-
obsutil: pass a diffopts object to context.diffSat, 23 Jun 2018 15:00:16 +0200, by Boris Feld
-
synthrepo: pass a diffopts object to context.diffSat, 23 Jun 2018 14:46:28 +0200, by Boris Feld
-
webutil: pass a diffopts object to context.diffSat, 23 Jun 2018 14:42:58 +0200, by Boris Feld
-
revset: pass an explicit `diffopts` objet to context.diffSat, 23 Jun 2018 14:37:10 +0200, by Boris Feld
-
template: directly instantiate diff options for diffstatSat, 23 Jun 2018 14:30:31 +0200, by Boris Feld
-
tests: update test-context.py to use diffopts as diff argumentSat, 23 Jun 2018 13:26:23 +0100, by Boris Feld
-
diffutil: extract diff options code into a dedicated util-moduleThu, 28 Jun 2018 16:11:13 +0200, by Boris Feld
-
packaging: add fedora 28Thu, 05 Jul 2018 01:04:32 -0400, by Augie Fackler
-
packaging: add missing path segments in cp statements in fedora buildThu, 05 Jul 2018 02:11:06 -0400, by Augie Fackler
-
packaging: fix misplaced ( in docker-fedora rule definitionThu, 05 Jul 2018 01:07:00 -0400, by Augie Fackler
-
packaging: make help output correct for fedora and centos targetsThu, 05 Jul 2018 01:04:22 -0400, by Augie Fackler
-
packaging: remove stray = that confuses make(1) on my MacThu, 05 Jul 2018 01:02:59 -0400, by Augie Fackler
-
manifest: define and implement addgroup() on manifestlogSun, 01 Jul 2018 14:25:44 -0700, by Gregory Szorc
-
manifest: define and implement rev() on manifestlogWed, 04 Jul 2018 12:12:49 -0700, by Gregory Szorc
-
tests: don't allow reodering of glob/re lines across non-glob/re linesMon, 02 Jul 2018 11:14:13 -0700, by Martin von Zweigbergk
-
tests: add test showing puzzling test output with (glob) linesFri, 29 Jun 2018 11:29:03 -0700, by Martin von Zweigbergk
-
tests: move handling of None "el" out of linematch()Tue, 03 Jul 2018 15:30:22 -0700, by Martin von Zweigbergk
-
tests: remove some redundant code in run-testsMon, 02 Jul 2018 00:05:54 -0700, by Martin von Zweigbergk
-
tests: don't reimplement enumerate() in run-testsMon, 02 Jul 2018 00:02:31 -0700, by Martin von Zweigbergk
-
histedit: improve help text for --no-backup optionThu, 05 Jul 2018 09:47:11 +0530, by Sushil khanchi
-
histedit: add --no-backup option (issue5825)Fri, 22 Jun 2018 23:53:43 +0530, by Sushil khanchi
-
tests: use interfaceutil in simplestorerepoSat, 30 Jun 2018 18:55:04 -0700, by Gregory Szorc
-
rebase: improve output of --dry-runFri, 29 Jun 2018 01:35:09 +0530, by Sushil khanchi
-
status: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:18:46 +0900, by Yuya Nishihara
-
resolve: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:11:23 +0900, by Yuya Nishihara
-
manifest: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:06:53 +0900, by Yuya Nishihara
-
files: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:01:20 +0900, by Yuya Nishihara
-
files: automatically populate fields referenced from templateSun, 01 Jul 2018 21:55:37 +0900, by Yuya Nishihara
-
grep: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:02:53 +0900, by Yuya Nishihara
-
cat: add support for log-like template keywords and functionsSun, 01 Jul 2018 21:47:43 +0900, by Yuya Nishihara
-
bookmarks: add support for log-like template keywords and functionsSun, 01 Jul 2018 22:22:07 +0900, by Yuya Nishihara
-
fix: add progress bar for number of file revisions processedTue, 26 Jun 2018 16:29:55 -0700, by Danny Hooper
-
fix: use a worker pool to parallelize running toolsTue, 26 Jun 2018 15:30:49 -0700, by Danny Hooper
-
worker: support more return types in posix workerTue, 26 Jun 2018 15:27:29 -0700, by Danny Hooper
-
debug: process --debug flag earlierTue, 19 Jun 2018 19:18:31 +0100, by Boris Feld
-
test: stop passing --quiet in a run dedicated to debug outputTue, 19 Jun 2018 19:10:31 +0100, by Boris Feld
-
acl: add bookmarks supportFri, 15 Jun 2018 14:07:13 -0400, by Sandu Turcan
-
repository: define manifest interfacesSat, 30 Jun 2018 18:34:33 -0700, by Gregory Szorc
-
narrowbundle2: when we handle a widen, mark the operation as unsafeTue, 12 Jun 2018 11:31:20 -0400, by Augie Fackler
-
narrow: mark the critical chunks of narrowing/widening as unsafeMon, 11 Jun 2018 17:06:29 -0400, by Augie Fackler
-
repair: mark the critical section of strip() as unsafeMon, 11 Jun 2018 17:03:29 -0400, by Augie Fackler
-
ui: add an uninterruptable context manager that can block SIGINTWed, 27 Jun 2018 10:47:14 -0400, by Augie Fackler
-
merge with stableTue, 03 Jul 2018 12:22:37 -0400, by Augie Fackler
-
revset: add partial support for ancestor(wdir())Fri, 29 Jun 2018 23:13:23 +0900, by Yuya Nishihara
-
context: also accept diff option directlySat, 23 Jun 2018 13:19:03 +0100, by Boris Feld
-
context: also take all other arguments than `patch.diff` acceptWed, 23 May 2018 15:31:40 +0200, by Boris Feld
-
context: explicitly take diffopts in `context.diff` (API)Tue, 22 May 2018 15:02:52 +0200, by Boris Feld
-
rebase: check whether the rebasestate exists or not a bit earlySun, 01 Jul 2018 01:00:39 +0530, by Pulkit Goyal
-
rebase: use staeobj to check whether interrupted rebase existsSun, 01 Jul 2018 00:52:25 +0530, by Pulkit Goyal
-
rebase: add a stateobj variable to rebaseruntime classSun, 01 Jul 2018 00:46:59 +0530, by Pulkit Goyal
-
rebase: refactor logic to read rebasestate in a separate functionSun, 01 Jul 2018 00:31:57 +0530, by Pulkit Goyal
-
revlog: reuse 'descendant' implemention in 'isancestor'Fri, 22 Jun 2018 00:07:22 +0100, by Boris Feld
-
revlog: efficient implementation of 'descendant'Fri, 22 Jun 2018 00:05:20 +0100, by Boris Feld
-
revlog: refactor out the rev-oriented part of commonancestorheadsThu, 21 Jun 2018 23:56:51 +0100, by Boris Feld
-
revlog: do inclusive descendant testing (API)Thu, 21 Jun 2018 23:53:43 +0100, by Boris Feld
-
manifest: make cachesize a private attributeSat, 30 Jun 2018 16:06:05 -0700, by Gregory Szorc
-
repository: document that file() return value conforms to interfaceSat, 30 Jun 2018 15:51:04 -0700, by Gregory Szorc
-
cleanup: pass in overwrite flag to hg.updaterepo() as named argumentSun, 01 Jul 2018 21:40:55 +0900, by Yuya Nishihara
-
histedit: use self.stateobj to check whether interrupted histedit existsSat, 30 Jun 2018 07:23:02 +0530, by Pulkit Goyal
-
histedit: add a stateobj variable to histeditstate classSat, 30 Jun 2018 07:21:21 +0530, by Pulkit Goyal
-
histedit: factor out logic of processing state data in separate fnSat, 30 Jun 2018 07:10:49 +0530, by Pulkit Goyal
-
histedit: use hg.updaterepo() to avoid ui.{push|pop}buffer() hackSat, 30 Jun 2018 07:05:36 +0530, by Pulkit Goyal
-
scmutil: fix __enter__ in progress context managerFri, 29 Jun 2018 14:43:41 -0700, by Danny Hooper
-
httppeer: fix use of uninitialized variable with devel loggingFri, 29 Jun 2018 14:14:35 -0700, by Martin von Zweigbergk
-
rebase: convert opts dict to bytes at onceSat, 30 Jun 2018 11:33:05 +0900, by Yuya Nishihara
-
rebase: isolate command options from internal flagsSat, 30 Jun 2018 11:29:48 +0900, by Yuya Nishihara
-
rebase: suppress warning thrown when aborting rebase in case of dryrunFri, 29 Jun 2018 01:05:08 +0530, by Sushil khanchi
-
rebase: no need to store backup in case of dryrunFri, 29 Jun 2018 00:47:33 +0530, by Sushil khanchi
-
rebase: split _origrebase() for conveniece in dryrunFri, 29 Jun 2018 00:22:50 +0530, by Sushil khanchi
-
rebase: extract dryrun as a functionThu, 28 Jun 2018 23:57:15 +0530, by Sushil khanchi
-
rebase: add lock to cover whole dryrun processThu, 28 Jun 2018 23:36:45 +0530, by Sushil khanchi
-
merge: add a 'keepconflictparent' argument to graftTue, 29 May 2018 00:26:20 +0200, by Boris Feld
-
unlinkpath: make empty directory removal optional (issue5901) (issue5826)Thu, 28 Jun 2018 18:07:22 -0700, by Kyle Lippincott
-
py3: convert opts keys to bytes using pycompat.byteskwargs()Thu, 28 Jun 2018 21:24:47 +0530, by Pulkit Goyal
-
procutil: add a shim for translating shell commands to native commandsThu, 28 Jun 2018 22:23:08 -0400, by Matt Harbison
-
revset: move lookup of first ancestor() candidate out of the loopSat, 16 Jun 2018 23:26:40 +0900, by Yuya Nishihara
-
revset: leverage orset() to flatten ancestor() argumentsSat, 16 Jun 2018 23:21:47 +0900, by Yuya Nishihara
-
revset: remove orphan i18n comment from ancestor()Sat, 16 Jun 2018 23:12:41 +0900, by Yuya Nishihara
-
grep: deprecates `--all` flagThu, 28 Jun 2018 23:21:55 +0530, by Sangeet Kumar Mishra
-
namespaces: let namespaces override singlenode() definitionTue, 26 Jun 2018 10:02:01 -0700, by Martin von Zweigbergk
-
rebase: refactor dryrun implementationWed, 27 Jun 2018 12:24:21 +0530, by Sushil khanchi
-
hooks: allow Unix style environment variables on external Windows hooksSun, 02 Jul 2017 00:32:09 -0400, by Matt Harbison
-
windows: add a method to convert Unix style command lines to Windows styleSun, 24 Jun 2018 01:13:09 -0400, by Matt Harbison
-
hgweb: add archive entries to graph pageThu, 28 Jun 2018 10:50:53 +0800, by Anton Shestakov
-
hgweb: add z-index for search field tooltipThu, 28 Jun 2018 07:41:08 +0800, by Anton Shestakov
-
tests: pass "rev" argument to commands.update() as stringWed, 27 Jun 2018 07:19:30 -0700, by Martin von Zweigbergk
-
revset: fix heads() order to always follow the input set (BC)Wed, 27 Jun 2018 23:39:41 +0900, by Yuya Nishihara
-
test-revset: show that order of heads() can be wrongWed, 27 Jun 2018 23:33:57 +0900, by Yuya Nishihara
-
stringutil: update list of re-special characters to include &~Wed, 27 Jun 2018 10:21:07 -0400, by Augie Fackler
-
tests: fix up some lax escaping in test-template-basic.tTue, 26 Jun 2018 11:38:58 -0400, by Augie Fackler
-
cleanup: migrate from re.escape to stringutil.reescapeTue, 26 Jun 2018 10:36:23 -0400, by Augie Fackler
-
stringutil: add a new function to do minimal regex escapingTue, 26 Jun 2018 10:33:52 -0400, by Augie Fackler
-
graft: add no-commit mode (issue5631)Tue, 26 Jun 2018 16:14:02 +0530, by Sushil khanchi
-
patchbomb: use email.mime.base instead of email.MIMEBaseTue, 26 Jun 2018 02:05:11 +0530, by Pulkit Goyal
-
patchbomb: use email.mime.multipart instead of email.MIMEMultipartTue, 26 Jun 2018 02:04:17 +0530, by Pulkit Goyal
-
py3: add b'' prefixes in tests/test-bundle2-pushback.tTue, 26 Jun 2018 01:08:47 +0530, by Pulkit Goyal
-
py3: make tests/test-diff-antipatience.t work with python 3Tue, 26 Jun 2018 00:37:02 +0530, by Pulkit Goyal
-
terse: pass "clean" and "unknown" booleans by name for clarityMon, 25 Jun 2018 11:04:17 -0700, by Martin von Zweigbergk
-
terse: add tests of running from subdirectoryMon, 25 Jun 2018 11:01:11 -0700, by Martin von Zweigbergk
-
convert: don't pass --no-files to "darcs show repo" commandSat, 23 Jun 2018 19:23:53 +0900, by Yuya Nishihara
-
shelve: stop testing missing rebase state fileTue, 29 May 2018 00:15:44 +0200, by Boris Feld
-
shelve: actually test corrupted shelve stateTue, 29 May 2018 00:12:35 +0200, by Boris Feld
-
shelve: directly handle `--continue`Tue, 29 May 2018 00:13:48 +0200, by Boris Feld
-
shelve: directly handle the abort processMon, 28 May 2018 18:15:21 +0200, by Boris Feld
-
shelve: check the actual shelvestate in morestatusMon, 28 May 2018 20:51:20 +0200, by Boris Feld
-
packaging: dynamically define make targetsSat, 12 May 2018 18:44:03 -0700, by Gregory Szorc
-
packaging: don't write files for templatized DockerfilesSat, 12 May 2018 14:41:48 -0700, by Gregory Szorc
-
packaging: replace dockerlib.sh with a Python scriptSat, 12 May 2018 17:03:47 -0700, by Gregory Szorc
-
packaging: consistently create build user in DockerfilesSat, 12 May 2018 15:51:37 -0700, by Gregory Szorc
-
scmutil: move construction of instability count message to separate fnFri, 15 Jun 2018 00:50:48 +0530, by Pulkit Goyal
-
procutil: use unbuffered stdout on WindowsMon, 25 Jun 2018 16:36:14 +0200, by Sune Foldager
-
graft: introduce --abort flag to abort interrupted graftFri, 25 May 2018 18:16:38 +0530, by Pulkit Goyal
-
graft: move `if continue` to elif and add new lineFri, 15 Jun 2018 02:46:34 +0530, by Pulkit Goyal
-
graft: start storing new nodes formed in graftstateFri, 15 Jun 2018 02:34:27 +0530, by Pulkit Goyal
-
show: use filter() function to strip "tip" tagThu, 14 Jun 2018 23:22:51 +0900, by Yuya Nishihara
-
templater: extend filter() to accept template expression for emptiness testThu, 14 Jun 2018 23:10:14 +0900, by Yuya Nishihara
-
templater: introduce filter() function to remove empty items from listThu, 14 Jun 2018 22:33:26 +0900, by Yuya Nishihara
-
templater: fix truth testing of integer 0 taken from a list/dictSun, 17 Jun 2018 16:10:38 +0900, by Yuya Nishihara
-
formatter: look for template symbols from the associated nameMon, 18 Jun 2018 21:58:04 +0900, by Yuya Nishihara
-
py3: add b'' prefixes in tests/test-obsolete-divergent.tMon, 25 Jun 2018 15:54:56 +0530, by Pulkit Goyal
-
py3: use stringutil.pprint() to print NoneTypeMon, 25 Jun 2018 01:07:23 +0530, by Pulkit Goyal
-
rebase: make dry-run return 1 or 0 according to resultSat, 23 Jun 2018 08:59:18 +0530, by Sushil khanchi
-
relink: use context manager for lock managementFri, 24 Mar 2017 00:33:35 -0400, by Matt Harbison
-
censor: use context manager for lock managementFri, 24 Mar 2017 00:32:31 -0400, by Matt Harbison
-
templater: remove redundant member variables from templater classThu, 21 Jun 2018 22:33:42 +0900, by Yuya Nishihara
-
templater: resurrect cache of engine instanceThu, 21 Jun 2018 22:27:30 +0900, by Yuya Nishihara
-
templater: extract template loader to separate classThu, 21 Jun 2018 22:23:43 +0900, by Yuya Nishihara
-
tests: rename and document test-command-template.tSat, 16 Jun 2018 14:34:35 +0900, by Yuya Nishihara
-
tests: extract test-template-keywords.t from test-command-template.tSat, 16 Jun 2018 14:14:52 +0900, by Yuya Nishihara
-
tests: fold test-template-filters.t into test-template-functions.tSat, 16 Jun 2018 14:10:12 +0900, by Yuya Nishihara
-
tests: extract test-template-functions.t from test-command-template.tSat, 16 Jun 2018 13:17:11 +0900, by Yuya Nishihara
-
tests: extract test-template-map.t from test-command-template.tSat, 16 Jun 2018 12:37:43 +0900, by Yuya Nishihara
-
cleanupnodes: preserve phase of parents of new nodesThu, 21 Jun 2018 08:22:11 -0700, by Martin von Zweigbergk
-
rebase: delete the comment which was not following "do not eat my data"Sat, 16 Jun 2018 18:36:25 +0530, by Sushil khanchi
-
tags: unblock log-like template keywords and functionsFri, 08 Jun 2018 22:16:23 +0900, by Yuya Nishihara
-
formatter: provide hint of context keys required by templateFri, 08 Jun 2018 22:10:22 +0900, by Yuya Nishihara
-
templatefuncs: declare resource requirements for future useThu, 14 Jun 2018 21:18:58 +0900, by Yuya Nishihara
-
templatefuncs: minimize resource requirementsThu, 14 Jun 2018 21:17:56 +0900, by Yuya Nishihara
-
merge with stableThu, 21 Jun 2018 09:32:31 -0700, by Martin von Zweigbergk
-
split: preserve phase of commit that is being splitTue, 19 Jun 2018 13:49:06 -0700, by Martin von Zweigbergk
-
scmutil: make cleanupnodes optionally also fix the phaseTue, 19 Jun 2018 11:07:40 -0700, by Martin von Zweigbergk
-
tests: add test of uncommit with default phase as secretTue, 19 Jun 2018 11:07:23 -0700, by Martin von Zweigbergk
-
grep: add --diff flagSun, 17 Jun 2018 15:52:08 +0530, by Sangeet Kumar Mishra
-
fix: include cleanupnodes() in transactionWed, 20 Jun 2018 09:27:30 -0700, by Martin von Zweigbergk
-
progress: enforce use of complete() on the helper classTue, 19 Jun 2018 22:19:37 -0700, by Martin von Zweigbergk
-
progress: extract function for closing topicTue, 19 Jun 2018 22:11:34 -0700, by Martin von Zweigbergk
-
progress: use context manager for lockTue, 19 Jun 2018 22:06:28 -0700, by Martin von Zweigbergk
-
configitem: reorder items in the 'server' sectionTue, 19 Jun 2018 18:21:37 +0200, by Boris Feld
-
test-lfs: add coverage for the binary() filesetThu, 21 Jun 2018 00:48:59 -0400, by Matt Harbison
-
fileset: use filectx.isbinary() to filter out binaries in eol()Thu, 21 Jun 2018 00:05:26 -0400, by Matt Harbison
-
crecord: re-center display in interactive curses commit on pageup/downTue, 19 Jun 2018 13:07:18 +0300, by Matti Hamalainen
-
tests: in test-split.t, save a "clean" copy of pre-split repo for later useFri, 02 Feb 2018 14:21:04 -0800, by Kyle Lippincott
-
tests: use progress helperMon, 18 Jun 2018 16:01:06 -0700, by Martin von Zweigbergk
-
changegroup: use progress helperMon, 18 Jun 2018 15:55:38 -0700, by Martin von Zweigbergk
-
synthrepo: close progress topicsMon, 18 Jun 2018 15:17:27 -0700, by Martin von Zweigbergk
-
synthrepo: use progress helperMon, 18 Jun 2018 15:17:10 -0700, by Martin von Zweigbergk
-
largefiles: use progress helperMon, 18 Jun 2018 15:14:39 -0700, by Martin von Zweigbergk
-
convert: use progress helperMon, 18 Jun 2018 15:05:52 -0700, by Martin von Zweigbergk
-
lfs: use progess helperMon, 18 Jun 2018 14:59:53 -0700, by Martin von Zweigbergk
-
relink: use progress helperMon, 18 Jun 2018 14:52:41 -0700, by Martin von Zweigbergk
-
patchbomb: use progress helperMon, 18 Jun 2018 14:34:07 -0700, by Martin von Zweigbergk
-
patchbomb: don't close unused progress topicMon, 18 Jun 2018 14:32:12 -0700, by Martin von Zweigbergk
-
churn: use progess helperMon, 18 Jun 2018 14:29:08 -0700, by Martin von Zweigbergk
-
treediscovery: use progress helperSun, 17 Jun 2018 23:54:58 -0700, by Martin von Zweigbergk
-
upgrade: use progress helperSun, 17 Jun 2018 23:48:23 -0700, by Martin von Zweigbergk
-
upgrade: close progress after each revlogSun, 17 Jun 2018 23:49:27 -0700, by Martin von Zweigbergk
-
verify: use progress helperSun, 17 Jun 2018 23:28:00 -0700, by Martin von Zweigbergk
-
verify: use progress helper for subdirectory progressSun, 17 Jun 2018 23:35:49 -0700, by Martin von Zweigbergk
-
similar: use progress helperSun, 17 Jun 2018 23:17:03 -0700, by Martin von Zweigbergk
-
repair: use progress helperSun, 17 Jun 2018 23:13:03 -0700, by Martin von Zweigbergk
-
httpconnection: use progress helperSun, 17 Jun 2018 23:11:06 -0700, by Martin von Zweigbergk
-
py3: byte-stringify literals in contrib/phabricator.py as exampleSun, 03 Jun 2018 18:18:36 +0900, by Yuya Nishihara
-
byteify-strings: remove superfluous "if True" blockSun, 03 Jun 2018 18:19:54 +0900, by Yuya Nishihara
-
byteify-strings: try to preserve column alignmentFri, 01 Jun 2018 00:13:55 +0900, by Yuya Nishihara
-
byteify-strings: do not rewrite system string literals to u''Thu, 31 May 2018 23:44:35 +0900, by Yuya Nishihara
-
byteify-strings: do not rewrite iteritems() and itervalues() by defaultThu, 31 May 2018 22:34:23 +0900, by Yuya Nishihara
-
byteify-strings: drop import-line hackThu, 31 May 2018 22:31:37 +0900, by Yuya Nishihara
-
byteify-strings: add --inplace option to write back resultThu, 31 May 2018 22:28:29 +0900, by Yuya Nishihara
-
byteify-strings: add basic command interfaceThu, 31 May 2018 22:23:30 +0900, by Yuya Nishihara
-
byteify-strings: fork py3 code transformer to make it a standalone commandThu, 31 May 2018 22:07:04 +0900, by Yuya Nishihara
-
highlight: get around tmpl.load() which now returns a parsed treeMon, 18 Jun 2018 21:54:52 +0900, by Yuya Nishihara
-
changegroup: use progress helperSun, 17 Jun 2018 23:06:20 -0700, by Martin von Zweigbergk