##// END OF EJS Templates
relnotes: various tweaks for release notes...
av6 -
r40491:683e99f0 stable
parent child Browse files
Show More
@@ -1,181 +1,191 b''
1 1 #!/usr/bin/env python3
2 2 """Generate release notes from our commit log.
3 3
4 4 This uses the relnotes extension directives when they're available,
5 5 and falls back to our old pre-relnotes logic that used to live in the
6 6 release-tools repo.
7 7 """
8 8 import argparse
9 9 import re
10 10 import subprocess
11 11
12 # Regenerate this list with
13 # hg export 'grep("\.\. [a-z]+::")' | grep '^\.\.' | \
14 # sed 's/.. //;s/::.*//' | sort -u
15 rnsections = ["api", "bc", "container", "feature", "fix", "note", "perf"]
16
17 12 rules = {
18 13 # keep
19 14 r"\(issue": 100,
20 15 r"\(BC\)": 100,
21 16 r"\(API\)": 100,
22 17 # core commands, bump up
23 18 r"(commit|files|log|pull|push|patch|status|tag|summary)(|s|es):": 20,
24 19 r"(annotate|alias|branch|bookmark|clone|graft|import|verify).*:": 20,
25 20 # extensions, bump up
26 21 r"(mq|shelve|rebase):": 20,
27 22 # newsy
28 23 r": deprecate": 20,
29 r"(option|feature|command|support)": 10,
24 r"( ability|command|feature|option|support)": 10,
25 # experimental
26 r"hg-experimental": 20,
27 r"(from|graduate).*experimental": 15,
28 r"(hide|mark).*experimental": -10,
30 29 # bug-like?
31 30 r"(fix|don't break|improve)": 7,
31 r"(not|n't|avoid|fix|prevent).*crash": 10,
32 32 # boring stuff, bump down
33 33 r"^contrib": -5,
34 34 r"debug": -5,
35 35 r"help": -5,
36 r"(doc|bundle2|obsolete|obsmarker|rpm|setup|debug\S+:)": -15,
37 r"(check-code|check-commit|import-checker)": -20,
36 r"(doc|metavar|bundle2|obsolete|obsmarker|rpm|setup|debug\S+:)": -15,
37 r"(check-code|check-commit|check-config|import-checker)": -20,
38 r"(flake8|lintian|pyflakes|pylint)": -20,
38 39 # cleanups and refactoring
39 r"(cleanup|whitespace|nesting|indent|spelling|comment)": -20,
40 r"(typo|hint|note|style:|correct doc)": -20,
40 r"(cleanup|white ?space|spelling|quoting)": -20,
41 r"(flatten|dedent|indent|nesting|unnest)": -20,
42 r"(typo|hint|note|comment|TODO|FIXME)": -20,
43 r"(style:|convention|one-?liner)": -20,
41 44 r"_": -10,
42 45 r"(argument|absolute_import|attribute|assignment|mutable)": -15,
43 r"(unused|useless|unnecessary|duplicate|deprecated|scope|True|False)": -10,
46 r"(scope|True|False)": -10,
47 r"(unused|useless|unnecessary|superfluous|duplicate|deprecated)": -10,
44 48 r"(redundant|pointless|confusing|uninitialized|meaningless|dead)": -10,
45 r": (drop|remove|inherit|rename|simplify|naming|inline)": -10,
46 r"(docstring|document .* method)": -20,
47 r"(factor|extract|prepare|split|replace| import)": -20,
48 r": add.*(function|method|implementation|test|example)": -10,
49 r": (move|extract) .* (to|into|from)": -20,
49 r": (drop|remove|delete|rip out)": -10,
50 r": (inherit|rename|simplify|naming|inline)": -10,
51 r"(correct doc|docstring|document .* method)": -20,
52 r"(abstract|factor|extract|prepare|split|replace| import)": -20,
53 r": add.*(function|method|implementation|example)": -10,
54 r": (move|extract) .* (to|into|from|out of)": -20,
50 55 r": implement ": -5,
51 56 r": use .* implementation": -20,
52 57 r"\S\S\S+\.\S\S\S\S+": -5,
53 58 r": use .* instead of": -20,
54 59 r"__": -5,
55 60 # dumb keywords
56 61 r"\S+/\S+:": -10,
57 62 r"\S+\.\S+:": -10,
63 # python compatibility
64 r"[Pp]y(|thon) ?[23]": -20,
65 r"pycompat": -20,
66 r"(coerce|convert|encode) .*to (byte|sys|)(s|str|string)": -20,
67 # tests
68 r"^test(|s|ing|runner|-\S+):": -20,
69 r"^(f|hghave|run-tests):": -20,
70 r"add.* tests?": -20,
71 r"(buildbot|fuzz|mock|ratchet)": -10,
58 72 # drop
59 73 r"^i18n-": -50,
60 74 r"^i18n:.*(hint|comment)": -50,
61 75 r"perf:": -50,
62 r"check-code:": -50,
63 76 r"Added.*for changeset": -50,
64 r"tests?:": -50,
65 r"test-": -50,
66 r"add.* tests": -50,
67 77 r"^_": -50,
68 78 }
69 79
70 80 cutoff = 10
71 81 commits = []
72 82
73 83 groupings = [
74 84 (r"util|parsers|repo|ctx|context|revlog|filelog|alias|cmdutil", "core"),
75 (r"revset|templater|ui|dirstate|hook|i18n|transaction|wire", "core"),
76 (r"color|pager", "core"),
77 (r"hgweb|paper|coal|gitweb", "hgweb"),
85 (r"revset|template|ui|dirstate|hook|i18n|transaction|wire|vfs", "core"),
86 (r"dispatch|exchange|localrepo|streamclone|color|pager", "core"),
87 (r"hgweb|paper|coal|gitweb|monoblue|spartan", "hgweb"),
78 88 (r"pull|push|revert|resolve|annotate|bookmark|branch|clone", "commands"),
79 89 (r"commands|commit|config|files|graft|import|log|merge|patch", "commands"),
80 90 (r"phases|status|summary|amend|tag|help|verify", "commands"),
81 91 (r"rebase|mq|convert|eol|histedit|largefiles", "extensions"),
82 92 (r"shelve|unshelve", "extensions"),
83 93 ]
84 94
85 95 def main():
86 ap = argparse.ArgumentParser()
96 desc = "example: %(prog)s 4.7.2 --stoprev 4.8rc0"
97 ap = argparse.ArgumentParser(description=desc)
87 98 ap.add_argument(
88 99 "startrev",
89 100 metavar="REV",
90 101 type=str,
91 nargs=1,
92 102 help=(
93 103 "Starting revision for the release notes. This revision "
94 104 "won't be included, but later revisions will."
95 105 ),
96 106 )
97 107 ap.add_argument(
98 108 "--stoprev",
99 109 metavar="REV",
100 110 type=str,
101 111 default="@",
102 nargs=1,
103 112 help=(
104 113 "Stop revision for release notes. This revision will be included,"
105 114 " but no later revisions will. This revision needs to be "
106 115 "a descendant of startrev."
107 116 ),
108 117 )
109 118 args = ap.parse_args()
110 119 fromext = subprocess.check_output(
111 120 [
112 121 "hg",
113 122 "--config",
114 123 "extensions.releasenotes=",
115 124 "releasenotes",
116 125 "-r",
117 "%s::%s" % (args.startrev[0], args.stoprev[0]),
126 "only(%s, %s)" % (args.stoprev, args.startrev),
118 127 ]
119 128 ).decode("utf-8")
120 129 # Find all release notes from un-relnotes-flagged commits.
121 130 for entry in sorted(
122 131 subprocess.check_output(
123 132 [
124 133 "hg",
125 134 "log",
126 135 "-r",
127 r'%s::%s - merge() - grep("\n\.\. (%s)::")'
128 % (args.startrev[0], args.stoprev[0], "|".join(rnsections)),
136 "only(%s, %s) - merge()" % (args.stoprev, args.startrev),
129 137 "-T",
130 138 r"{desc|firstline}\n",
131 139 ]
132 140 )
133 141 .decode("utf-8")
134 142 .splitlines()
135 143 ):
136 144 desc = entry.replace("`", "'")
137 145
138 146 score = 0
139 147 for rule, val in rules.items():
140 148 if re.search(rule, desc):
141 149 score += val
142 150
143 151 desc = desc.replace("(issue", "(Bts:issue")
144 152
145 153 if score >= cutoff:
146 154 commits.append(desc)
147 155 # Group unflagged notes.
148 156 groups = {}
149 157 bcs = []
150 158 apis = []
151 159
152 160 for d in commits:
153 161 if "(BC)" in d:
154 162 bcs.append(d)
155 163 if "(API)" in d:
156 164 apis.append(d)
157 165 for rule, g in groupings:
158 166 if re.match(rule, d):
159 167 groups.setdefault(g, []).append(d)
160 168 break
161 169 else:
162 170 groups.setdefault("unsorted", []).append(d)
163 171 print(fromext)
164 172 # print legacy release notes sections
165 173 for g in sorted(groups):
166 174 print("\n=== %s ===" % g)
167 175 for d in sorted(groups[g]):
168 176 print(" * %s" % d)
169 177
170 print("\n=== BC ===\n")
178 if bcs:
179 print("\n=== Behavior Changes ===\n")
171 180
172 181 for d in sorted(bcs):
173 182 print(" * %s" % d)
174 183
175 print("\n=== API Changes ===\n")
184 if apis:
185 print("\n=== Internal API Changes ===\n")
176 186
177 187 for d in sorted(apis):
178 188 print(" * %s" % d)
179 189
180 190 if __name__ == "__main__":
181 191 main()
@@ -1,291 +1,317 b''
1 1 #require test-repo py3exe
2 2 $ . "$TESTDIR/helpers-testrepo.sh"
3 3
4 4 $ cd $TESTDIR/..
5 5 $ python3 contrib/relnotes 4.4 --stoprev 4.5
6 6 changeset 3398603c5621: unexpected block in release notes directive feature
7 7 New Features
8 8 ============
9 9
10 10 revert --interactive
11 11 --------------------
12 12
13 13 The revert command now accepts the flag --interactive to allow reverting only
14 14 some of the changes to the specified files.
15 15
16 16 Rebase with different destination per source revision
17 17 -----------------------------------------------------
18 18
19 19 Previously, rebase only supports one unique destination. Now "SRC" and
20 20 "ALLSRC" can be used in rebase destination revset to precisely define
21 21 destination per each individual source revision.
22 22
23 23 For example, the following command could move some orphaned changesets to
24 24 reasonable new places so they become no longer orphaned:
25 25
26 26 hg rebase -r 'orphan()-obsolete()' -d 'max((successors(max(roots(ALLSRC) &
27 27 ::SRC)^)-obsolete())::)'
28 28
29 29 Accessing hidden changesets
30 30 ---------------------------
31 31
32 32 Set config option 'experimental.directaccess = True' to access hidden
33 33 changesets from read only commands.
34 34
35 35 githelp extension
36 36 -----------------
37 37
38 38 The "githelp" extension provides the "hg githelp" command. This command
39 39 attempts to convert a "git" command to its Mercurial equivalent. The extension
40 40 can be useful to Git users new to Mercurial.
41 41
42 42 Other Changes
43 43 -------------
44 44
45 45 * When interactive revert is run against a revision other than the working
46 46 directory parent, the diff shown is the diff to *apply* to the working
47 47 directory, rather than the diff to *discard* from the working copy. This is
48 48 in line with related user experiences with 'git' and appears to be less
49 49 confusing with 'ui.interface=curses'.
50 50
51 51 * Let 'hg rebase' avoid content-divergence by skipping obsolete changesets
52 52 (and their descendants) when they are present in the rebase set along with
53 53 one of their successors but none of their successors is in destination.
54 54
55 55 * hgweb now displays phases of non-public changesets
56 56
57 57 * The "HGPLAINEXCEPT" environment variable can now include "color" to allow
58 58 automatic output colorization in otherwise automated environments.
59 59
60 60 * A new unamend command in uncommit extension which undoes the effect of the
61 61 amend command by creating a new changeset which was there before amend and
62 62 moving the changes that were amended to the working directory.
63 63
64 64 * A '--abort' flag to merge command to abort the ongoing merge.
65 65
66 66 * An experimental flag '--rev' to 'hg branch' which can be used to change
67 67 branch of changesets.
68 68
69 69 Backwards Compatibility Changes
70 70 ===============================
71 71
72 72 * "log --follow-first -rREV", which is deprecated, now follows the first
73 73 parent of merge revisions from the specified "REV" just like "log --follow
74 74 -rREV".
75 75
76 76 * "log --follow -rREV FILE.." now follows file history across copies and
77 77 renames.
78 78
79 79 Bug Fixes
80 80 =========
81 81
82 82 Issue 5165
83 83 ----------
84 84
85 85 Bookmark, whose name is longer than 255, can again be exchanged again between
86 86 4.4+ client and servers.
87 87
88 88 Performance Improvements
89 89 ========================
90 90
91 91 * bundle2 read I/O throughput significantly increased.
92 92
93 93 * Significant memory use reductions when reading from bundle2 bundles.
94 94
95 95 On the BSD repository, peak RSS during changegroup application decreased by
96 96 ~185 MB from ~752 MB to ~567 MB.
97 97
98 98 API Changes
99 99 ===========
100 100
101 101 * bundlerepo.bundlerepository.bundle and
102 102 bundlerepo.bundlerepository.bundlefile are now prefixed with an underscore.
103 103
104 104 * Rename bundlerepo.bundlerepository.bundlefilespos to _cgfilespos.
105 105
106 106 * dirstate no longer provides a 'dirs()' method. To test for the existence of
107 107 a directory in the dirstate, use 'dirstate.hasdir(dirname)'.
108 108
109 109 * bundle2 parts are no longer seekable by default.
110 110
111 111 * mapping does not contain all template resources. use context.resource() in
112 112 template functions.
113 113
114 114 * "text=False|True" option is dropped from the vfs interface because of Python
115 115 3 compatibility issue. Use "util.tonativeeol/fromnativeeol()" to convert EOL
116 116 manually.
117 117
118 118 * wireproto.streamres.__init__ no longer accepts a "reader" argument. Use the
119 119 "gen" argument instead.
120 120
121 121 * exchange.getbundlechunks() now returns a 2-tuple instead of just an
122 122 iterator.
123 123
124 124
125 125 === commands ===
126 126 * amend: do not drop missing files (Bts:issue5732)
127 127 * amend: do not take untracked files as modified or clean (Bts:issue5732)
128 128 * amend: update .hgsubstate before committing a memctx (Bts:issue5677)
129 129 * annotate: add support to specify hidden revs if directaccess config is set
130 130 * bookmark: add methods to binary encode and decode bookmark values
131 131 * bookmark: deprecate direct update of a bookmark value
132 132 * bookmark: introduce a 'bookmarks' part
133 133 * bookmark: introduce in advance a variant of the exchange test
134 134 * bookmark: run 'pushkey' hooks after bookmark move, not 'prepushkey'
135 * bookmark: use the 'bookmarks' bundle2 part to push bookmark update (Bts:issue5165)
135 136 * bookmarks: add bookmarks to hidden revs if directaccess config is set
136 137 * bookmarks: calculate visibility exceptions only once
137 138 * bookmarks: display the obsfate of hidden revision we create a bookmark on
138 139 * bookmarks: fix pushkey compatibility mode (Bts:issue5777)
139 140 * bookmarks: use context managers for lock and transaction in update()
140 141 * bookmarks: use context managers for locks and transaction in pushbookmark()
142 * branch: add a --rev flag to change branch name of given revisions
141 143 * branch: allow changing branch name to existing name if possible
142 144 * clone: add support for storing remotenames while cloning
143 145 * clone: use utility function to write hgrc
144 146 * clonebundle: make it possible to retrieve the initial bundle through largefile
147 * commands: use the new API to access hidden changesets in various commands
145 148 * commandserver: restore cwd in case of exception
146 149 * commandserver: unblock SIGCHLD
150 * fileset: do not crash by unary negate operation
147 151 * help: deprecate ui.slash in favor of slashpath template filter (Bts:issue5572)
148 152 * log: allow matchfn to be non-null even if both --patch/--stat are off
149 153 * log: build follow-log filematcher at once
150 154 * log: don't expand aliases in revset built from command options
155 * log: follow file history across copies even with -rREV (BC) (Bts:issue4959)
151 156 * log: make "slowpath" condition slightly more readable
152 157 * log: make opt2revset table a module constant
153 158 * log: merge getlogrevs() and getgraphlogrevs()
154 159 * log: remove temporary variable 'date' used only once
155 160 * log: resolve --follow thoroughly in getlogrevs()
156 161 * log: resolve --follow with -rREV in cmdutil.getlogrevs()
162 * log: rewrite --follow-first -rREV like --follow for consistency (BC)
157 163 * log: simplify 'x or ancestors(x)' expression
158 164 * log: translate column labels at once (Bts:issue5750)
159 165 * log: use revsetlang.formatspec() thoroughly
160 166 * log: use revsetlang.formatspec() to concatenate list expression
161 167 * log: use smartset.slice() to limit number of revisions to be displayed
162 168 * merge: cache unknown dir checks (Bts:issue5716)
163 169 * merge: check created file dirs for path conflicts only once (Bts:issue5716)
164 170 * patch: add within-line color diff capacity
165 171 * patch: catch unexpected case in _inlinediff
166 172 * patch: do not break up multibyte character when highlighting word
167 173 * patch: improve heuristics to not take the word "diff" as header (Bts:issue1879)
168 174 * patch: reverse _inlinediff output for consistency
169 175 * pull: clarify that -u only updates linearly
170 176 * pull: hold wlock for the full operation when --update is used
171 177 * pull: retrieve bookmarks through the binary part when possible
172 178 * pull: store binary node in pullop.remotebookmarks
173 179 * push: include a 'check:bookmarks' part when possible
174 180 * push: restrict common discovery to the pushed set
181 * revert: do not reverse hunks in interactive when REV is not parent (Bts:issue5096)
175 182 * revert: support reverting to hidden cset if directaccess config is set
176 183
177 184 === core ===
185 * color: respect HGPLAINEXCEPT=color to allow colors while scripting (Bts:issue5749)
186 * dirstate: add explicit methods for querying directories (API)
187 * dispatch: abort if early boolean options can't be parsed
188 * dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options
189 * dispatch: add option to not strip command args parsed by _earlygetopt()
190 * dispatch: alias --repo to --repository while parsing early options
191 * dispatch: fix early parsing of short option with value like -R=foo
192 * dispatch: handle IOError when writing to stderr
193 * dispatch: stop parsing of early boolean option at "--"
194 * dispatch: verify result of early command parsing
195 * exchange: return bundle info from getbundlechunks() (API)
178 196 * filelog: add the ability to report the user facing name
197 * localrepo: specify optional callback parameter to pathauditor as a keyword
179 198 * revlog: choose between ifh and dfh once for all
180 199 * revlog: don't use slicing to return parents
181 200 * revlog: group delta computation methods under _deltacomputer object
182 201 * revlog: group revision info into a dedicated structure
183 202 * revlog: introduce 'deltainfo' to distinguish from 'delta'
184 203 * revlog: rename 'rev' to 'base', as it is the base revision
185 204 * revlog: separate diff computation from the collection of other info
186 205 * revset: evaluate filesets against each revision for 'file()' (Bts:issue5778)
187 206 * revset: parse x^:: as (x^):: (Bts:issue5764)
207 * streamclone: add support for bundle2 based stream clone
208 * streamclone: add support for cloning non append-only file
209 * streamclone: also stream caches to the client
210 * streamclone: define first iteration of version 2 of stream format
211 * streamclone: move wire protocol status code from wireproto command
212 * streamclone: rework canperformstreamclone
213 * streamclone: tests phase exchange during stream clone
214 * streamclone: use readexactly when reading stream v2
215 * templater: fix crash by empty group expression
216 * templater: keep default resources per template engine (API)
188 217 * templater: look up symbols/resources as if they were separated (Bts:issue5699)
189 218 * transaction: register summary callbacks only at start of transaction (BC)
190 219 * util: whitelist NTFS for hardlink creation (Bts:issue4580)
220 * vfs: drop text mode flag (API)
221 * wireproto: drop support for reader interface from streamres (API)
191 222
192 223 === extensions ===
193 224 * convert: restore the ability to use bzr < 2.6.0 (Bts:issue5733)
194 225 * histedit: add support to output nodechanges using formatter
195 226 * largefiles: add a 'debuglfput' command to put largefile into the store
196 227 * largefiles: add support for 'largefiles://' url scheme
197 228 * largefiles: allow to run 'debugupgraderepo' on repo with largefiles
198 * largefiles: convert EOL of hgrc before appending to bytes IO
199 229 * largefiles: explicitly set the source and sink types to 'hg' for lfconvert
200 230 * largefiles: modernize how capabilities are added to the wire protocol
201 231 * largefiles: pay attention to dropped standin files when updating largefiles
202 232 * rebase: add concludememorynode(), and call it when rebasing in-memory
203 233 * rebase: add the --inmemory option flag; assign a wctx object for the rebase
204 234 * rebase: add ui.log calls for whether IMM used, whether rebasing WCP
205 235 * rebase: disable 'inmemory' if the rebaseset contains the working copy
206 236 * rebase: do not bail on uncomitted changes if rebasing in-memory
207 237 * rebase: do not update if IMM; instead, set the overlaywctx's parents
208 238 * rebase: don't run IMM if running rebase in a transaction
209 239 * rebase: don't take out a dirstate guard for in-memory rebase
210 240 * rebase: drop --style option
241 * rebase: enable multidest by default
242 * rebase: exclude descendants of obsoletes w/o a successor in dest (Bts:issue5300)
211 243 * rebase: fix for hgsubversion
212 244 * rebase: pass the wctx object (IMM or on-disk) to merge.update
213 245 * rebase: pass wctx to rebasenode()
214 246 * rebase: rerun a rebase on-disk if IMM merge conflicts arise
215 247 * rebase: switch ui.log calls to common style
216 248 * rebase: use fm.formatlist() and fm.formatdict() to support user template
217 249
218 250 === hgweb ===
219 251 * hgweb: disable diff.noprefix option for diffstat
220 252 * hgweb: drop support of browsers that don't understand <canvas> (BC)
221 253 * hgweb: only include graph-related data in jsdata variable on /graph pages (BC)
222 254 * hgweb: stop adding strings to innerHTML of #graphnodes and #nodebgs (BC)
223 255
224 256 === unsorted ===
225 257 * archive: add support to specify hidden revs if directaccess config is set
226 258 * atomicupdate: add an experimental option to use atomictemp when updating
259 * bundle2: don't use seekable bundle2 parts by default (Bts:issue5691)
227 260 * bundle: allow bundlerepo to support alternative manifest implementations
228 261 * changelog: introduce a 'tiprev' method
229 262 * changelog: use 'tiprev()' in 'tip()'
230 263 * completion: add support for new "amend" command
264 * crecord: fix revert -ir '.^' crash caused by 3649c3f2cd
231 265 * debugssl: convert port number to int (Bts:issue5757)
232 266 * diff: disable diff.noprefix option for diffstat (Bts:issue5759)
233 * dispatch: abort if early boolean options can't be parsed
234 * dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options
235 * dispatch: add option to not strip command args parsed by _earlygetopt()
236 * dispatch: alias --repo to --repository while parsing early options
237 * dispatch: convert non-list option parsed by _earlygetopt() to string
238 * dispatch: fix early parsing of short option with value like -R=foo
239 * dispatch: handle IOError when writing to stderr
240 * dispatch: stop parsing of early boolean option at "--"
241 * dispatch: verify result of early command parsing
242 267 * evolution: make reporting of new unstable changesets optional
243 268 * extdata: abort if external command exits with non-zero status (BC)
244 269 * fancyopts: add early-options parser compatible with getopt()
245 270 * graphlog: add another graph node type, unstable, using character "*" (BC)
246 271 * hgdemandimport: use correct hyperlink to python-bug in comments (Bts:issue5765)
247 272 * httppeer: add support for tracing all http request made by the peer
248 273 * identify: document -r. explicitly how to disable wdir scanning (Bts:issue5622)
249 274 * lfs: register config options
250 * localrepo: specify optional callback parameter to pathauditor as a keyword
251 275 * match: do not weirdly include explicit files excluded by -X option
252 276 * memfilectx: make changectx argument mandatory in constructor (API)
253 277 * morestatus: don't crash with different drive letters for repo.root and CWD
254 278 * outgoing: respect ":pushurl" paths (Bts:issue5365)
255 279 * remove: print message for each file in verbose mode only while using '-A' (BC)
256 280 * rewriteutil: use precheck() in uncommit and amend commands
257 281 * scmutil: don't try to delete origbackup symlinks to directories (Bts:issue5731)
258 282 * sshpeer: add support for request tracing
259 * streamclone: add support for bundle2 based stream clone
260 * streamclone: add support for cloning non append-only file
261 * streamclone: also stream caches to the client
262 * streamclone: define first iteration of version 2 of stream format
263 * streamclone: move wire protocol status code from wireproto command
264 * streamclone: rework canperformstreamclone
265 * streamclone: tests phase exchange during stream clone
266 * streamclone: use readexactly when reading stream v2
267 283 * subrepo: add config option to reject any subrepo operations (SEC)
268 284 * subrepo: disable git and svn subrepos by default (BC) (SEC)
269 285 * subrepo: extend config option to disable subrepos by type (SEC)
270 286 * subrepo: handle 'C:' style paths on the command line (Bts:issue5770)
271 287 * subrepo: use per-type config options to enable subrepos
272 288 * svnsubrepo: check if subrepo is missing when checking dirty state (Bts:issue5657)
289 * test-bookmarks-pushpull: stabilize for Windows
290 * test-run-tests: stabilize the test (Bts:issue5735)
273 291 * tr-summary: keep a weakref to the unfiltered repository
274 292 * unamend: fix command summary line
275 293 * uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
294 * update: fix crash on bare update when directaccess is enabled
276 295 * update: support updating to hidden cset if directaccess config is set
277 296
278 === BC ===
297 === Behavior Changes ===
279 298
280 299 * extdata: abort if external command exits with non-zero status (BC)
281 300 * graphlog: add another graph node type, unstable, using character "*" (BC)
282 301 * hgweb: drop support of browsers that don't understand <canvas> (BC)
283 302 * hgweb: only include graph-related data in jsdata variable on /graph pages (BC)
284 303 * hgweb: stop adding strings to innerHTML of #graphnodes and #nodebgs (BC)
304 * log: follow file history across copies even with -rREV (BC) (Bts:issue4959)
305 * log: rewrite --follow-first -rREV like --follow for consistency (BC)
285 306 * remove: print message for each file in verbose mode only while using '-A' (BC)
286 307 * subrepo: disable git and svn subrepos by default (BC) (SEC)
287 308 * transaction: register summary callbacks only at start of transaction (BC)
288 309
289 === API Changes ===
310 === Internal API Changes ===
290 311
312 * dirstate: add explicit methods for querying directories (API)
313 * exchange: return bundle info from getbundlechunks() (API)
291 314 * memfilectx: make changectx argument mandatory in constructor (API)
315 * templater: keep default resources per template engine (API)
316 * vfs: drop text mode flag (API)
317 * wireproto: drop support for reader interface from streamres (API)
General Comments 0
You need to be logged in to leave comments. Login now