comparison tests/test-fix.t @ 42673:74b4cd091e0d

fix: run fixer tools in the repo root as cwd so they can use the working copy This lets fixer tools do things like find configuration files, with the caveat that they'll only see the version of that file in the working copy, regardless of what revisions are being fixed. Differential Revision: https://phab.mercurial-scm.org/D6440
author Danny Hooper <hooper@google.com>
date Wed, 22 May 2019 16:22:06 -0700
parents 4b04244f2d5f
children ed0da6e0d6ee
comparison
equal deleted inserted replaced
42672:51a2e3102db2 42673:74b4cd091e0d
213 files in the working copy were updated. Provides a list "$HG_METADATA" 213 files in the working copy were updated. Provides a list "$HG_METADATA"
214 mapping fixer tool names to lists of metadata values returned from 214 mapping fixer tool names to lists of metadata values returned from
215 executions that modified a file. This aggregates the same metadata 215 executions that modified a file. This aggregates the same metadata
216 previously passed to the "postfixfile" hook. 216 previously passed to the "postfixfile" hook.
217 217
218 Fixer tools are run the in repository's root directory. This allows them to
219 read configuration files from the working copy, or even write to the working
220 copy. The working copy is not updated to match the revision being fixed. In
221 fact, several revisions may be fixed in parallel. Writes to the working copy
222 are not amended into the revision being fixed; fixer tools should always write
223 fixed file content back to stdout as documented above.
224
218 list of commands: 225 list of commands:
219 226
220 fix rewrite file content in changesets or working directory 227 fix rewrite file content in changesets or working directory
221 228
222 (use 'hg help -v -e fix' to show built-in aliases and global options) 229 (use 'hg help -v -e fix' to show built-in aliases and global options)
1267 $ hg cat -r 2 foo 1274 $ hg cat -r 2 foo
1268 ab 1275 ab
1269 1276
1270 $ cd .. 1277 $ cd ..
1271 1278
1279 We run fixer tools in the repo root so they can look for config files or other
1280 important things in the working directory. This does NOT mean we are
1281 reconstructing a working copy of every revision being fixed; we're just giving
1282 the tool knowledge of the repo's location in case it can do something
1283 reasonable with that.
1284
1285 $ hg init subprocesscwd
1286 $ cd subprocesscwd
1287
1288 $ cat >> .hg/hgrc <<EOF
1289 > [fix]
1290 > printcwd:command = pwd
1291 > printcwd:pattern = path:foo/bar
1292 > EOF
1293
1294 $ mkdir foo
1295 $ printf "bar\n" > foo/bar
1296 $ hg commit -Aqm blah
1297
1298 $ hg fix -w -r . foo/bar
1299 $ hg cat -r tip foo/bar
1300 $TESTTMP/subprocesscwd
1301 $ cat foo/bar
1302 $TESTTMP/subprocesscwd
1303
1304 $ cd foo
1305
1306 $ hg fix -w -r . bar
1307 $ hg cat -r tip bar
1308 $TESTTMP/subprocesscwd
1309 $ cat bar
1310 $TESTTMP/subprocesscwd
1311
1312 $ cd ../..
1313
1272 Tools configured without a pattern are ignored. It would be too dangerous to 1314 Tools configured without a pattern are ignored. It would be too dangerous to
1273 run them on all files, because this might happen while testing a configuration 1315 run them on all files, because this might happen while testing a configuration
1274 that also deletes all of the file content. There is no reasonable subset of the 1316 that also deletes all of the file content. There is no reasonable subset of the
1275 files to use as a default. Users should be explicit about what files are 1317 files to use as a default. Users should be explicit about what files are
1276 affected by a tool. This test also confirms that we don't crash when the 1318 affected by a tool. This test also confirms that we don't crash when the