1GNU diff is the reference for all of these results. 2 3Prepare tests: 4 5 $ echo '[alias]' >> $HGRCPATH 6 $ echo 'ndiff = diff --nodates' >> $HGRCPATH 7 8 $ hg init 9 $ printf 'hello world\ngoodbye world\n' >foo 10 $ hg ci -Amfoo -ufoo 11 adding foo 12 13 14Test added blank lines: 15 16 $ printf '\nhello world\n\ngoodbye world\n\n' >foo 17 18>>> two diffs showing three added lines <<< 19 20 $ hg ndiff 21 diff -r 540c40a65b78 foo 22 --- a/foo 23 +++ b/foo 24 @@ -1,2 +1,5 @@ 25 + 26 hello world 27 + 28 goodbye world 29 + 30 $ hg ndiff -b 31 diff -r 540c40a65b78 foo 32 --- a/foo 33 +++ b/foo 34 @@ -1,2 +1,5 @@ 35 + 36 hello world 37 + 38 goodbye world 39 + 40 41>>> no diffs <<< 42 43 $ hg ndiff -B 44 $ hg ndiff -Bb 45 46 47Test added horizontal space first on a line(): 48 49 $ printf '\t hello world\ngoodbye world\n' >foo 50 51>>> four diffs showing added space first on the first line <<< 52 53 $ hg ndiff 54 diff -r 540c40a65b78 foo 55 --- a/foo 56 +++ b/foo 57 @@ -1,2 +1,2 @@ 58 -hello world 59 + hello world 60 goodbye world 61 62 $ hg ndiff -b 63 diff -r 540c40a65b78 foo 64 --- a/foo 65 +++ b/foo 66 @@ -1,2 +1,2 @@ 67 -hello world 68 + hello world 69 goodbye world 70 71 $ hg ndiff -B 72 diff -r 540c40a65b78 foo 73 --- a/foo 74 +++ b/foo 75 @@ -1,2 +1,2 @@ 76 -hello world 77 + hello world 78 goodbye world 79 80 $ hg ndiff -Bb 81 diff -r 540c40a65b78 foo 82 --- a/foo 83 +++ b/foo 84 @@ -1,2 +1,2 @@ 85 -hello world 86 + hello world 87 goodbye world 88 89 90Test added horizontal space last on a line: 91 92 $ printf 'hello world\t \ngoodbye world\n' >foo 93 94>>> two diffs showing space appended to the first line <<< 95 96 $ hg ndiff 97 diff -r 540c40a65b78 foo 98 --- a/foo 99 +++ b/foo 100 @@ -1,2 +1,2 @@ 101 -hello world 102 +hello world 103 goodbye world 104 105 $ hg ndiff -B 106 diff -r 540c40a65b78 foo 107 --- a/foo 108 +++ b/foo 109 @@ -1,2 +1,2 @@ 110 -hello world 111 +hello world 112 goodbye world 113 114>>> no diffs <<< 115 116 $ hg ndiff -b 117 $ hg ndiff -Bb 118 119 120Test added horizontal space in the middle of a word: 121 122 $ printf 'hello world\ngood bye world\n' >foo 123 124>>> four diffs showing space inserted into "goodbye" <<< 125 126 $ hg ndiff 127 diff -r 540c40a65b78 foo 128 --- a/foo 129 +++ b/foo 130 @@ -1,2 +1,2 @@ 131 hello world 132 -goodbye world 133 +good bye world 134 135 $ hg ndiff -B 136 diff -r 540c40a65b78 foo 137 --- a/foo 138 +++ b/foo 139 @@ -1,2 +1,2 @@ 140 hello world 141 -goodbye world 142 +good bye world 143 144 $ hg ndiff -b 145 diff -r 540c40a65b78 foo 146 --- a/foo 147 +++ b/foo 148 @@ -1,2 +1,2 @@ 149 hello world 150 -goodbye world 151 +good bye world 152 153 $ hg ndiff -Bb 154 diff -r 540c40a65b78 foo 155 --- a/foo 156 +++ b/foo 157 @@ -1,2 +1,2 @@ 158 hello world 159 -goodbye world 160 +good bye world 161 162 163Test increased horizontal whitespace amount: 164 165 $ printf 'hello world\ngoodbye\t\t \tworld\n' >foo 166 167>>> two diffs showing changed whitespace amount in the last line <<< 168 169 $ hg ndiff 170 diff -r 540c40a65b78 foo 171 --- a/foo 172 +++ b/foo 173 @@ -1,2 +1,2 @@ 174 hello world 175 -goodbye world 176 +goodbye world 177 178 $ hg ndiff -B 179 diff -r 540c40a65b78 foo 180 --- a/foo 181 +++ b/foo 182 @@ -1,2 +1,2 @@ 183 hello world 184 -goodbye world 185 +goodbye world 186 187>>> no diffs <<< 188 189 $ hg ndiff -b 190 $ hg ndiff -Bb 191 192 193Test added blank line with horizontal whitespace: 194 195 $ printf 'hello world\n \t\ngoodbye world\n' >foo 196 197>>> three diffs showing added blank line with horizontal space <<< 198 199 $ hg ndiff 200 diff -r 540c40a65b78 foo 201 --- a/foo 202 +++ b/foo 203 @@ -1,2 +1,3 @@ 204 hello world 205 + 206 goodbye world 207 208 $ hg ndiff -B 209 diff -r 540c40a65b78 foo 210 --- a/foo 211 +++ b/foo 212 @@ -1,2 +1,3 @@ 213 hello world 214 + 215 goodbye world 216 217 $ hg ndiff -b 218 diff -r 540c40a65b78 foo 219 --- a/foo 220 +++ b/foo 221 @@ -1,2 +1,3 @@ 222 hello world 223 + 224 goodbye world 225 226>>> no diffs <<< 227 228 $ hg ndiff -Bb 229 230 231Test added blank line with other whitespace: 232 233 $ printf 'hello world\n \t\ngoodbye world \n' >foo 234 235>>> three diffs showing added blank line with other space <<< 236 237 $ hg ndiff 238 diff -r 540c40a65b78 foo 239 --- a/foo 240 +++ b/foo 241 @@ -1,2 +1,3 @@ 242 -hello world 243 -goodbye world 244 +hello world 245 + 246 +goodbye world 247 248 $ hg ndiff -B 249 diff -r 540c40a65b78 foo 250 --- a/foo 251 +++ b/foo 252 @@ -1,2 +1,3 @@ 253 -hello world 254 -goodbye world 255 +hello world 256 + 257 +goodbye world 258 259 $ hg ndiff -b 260 diff -r 540c40a65b78 foo 261 --- a/foo 262 +++ b/foo 263 @@ -1,2 +1,3 @@ 264 hello world 265 + 266 goodbye world 267 268>>> no diffs <<< 269 270 $ hg ndiff -Bb 271 272 273Test whitespace changes: 274 275 $ printf 'helloworld\ngoodbye\tworld \n' >foo 276 277>>> four diffs showing changed whitespace <<< 278 279 $ hg ndiff 280 diff -r 540c40a65b78 foo 281 --- a/foo 282 +++ b/foo 283 @@ -1,2 +1,2 @@ 284 -hello world 285 -goodbye world 286 +helloworld 287 +goodbye world 288 289 $ hg ndiff -B 290 diff -r 540c40a65b78 foo 291 --- a/foo 292 +++ b/foo 293 @@ -1,2 +1,2 @@ 294 -hello world 295 -goodbye world 296 +helloworld 297 +goodbye world 298 299 $ hg ndiff -b 300 diff -r 540c40a65b78 foo 301 --- a/foo 302 +++ b/foo 303 @@ -1,2 +1,2 @@ 304 -hello world 305 +helloworld 306 goodbye world 307 308 $ hg ndiff -Bb 309 diff -r 540c40a65b78 foo 310 --- a/foo 311 +++ b/foo 312 @@ -1,2 +1,2 @@ 313 -hello world 314 +helloworld 315 goodbye world 316 317>>> no diffs <<< 318 319 $ hg ndiff -w 320 321 322Test whitespace changes and blank lines: 323 324 $ printf 'helloworld\n\n\n\ngoodbye\tworld \n' >foo 325 326>>> five diffs showing changed whitespace <<< 327 328 $ hg ndiff 329 diff -r 540c40a65b78 foo 330 --- a/foo 331 +++ b/foo 332 @@ -1,2 +1,5 @@ 333 -hello world 334 -goodbye world 335 +helloworld 336 + 337 + 338 + 339 +goodbye world 340 341 $ hg ndiff -B 342 diff -r 540c40a65b78 foo 343 --- a/foo 344 +++ b/foo 345 @@ -1,2 +1,5 @@ 346 -hello world 347 -goodbye world 348 +helloworld 349 + 350 + 351 + 352 +goodbye world 353 354 $ hg ndiff -b 355 diff -r 540c40a65b78 foo 356 --- a/foo 357 +++ b/foo 358 @@ -1,2 +1,5 @@ 359 -hello world 360 +helloworld 361 + 362 + 363 + 364 goodbye world 365 366 $ hg ndiff -Bb 367 diff -r 540c40a65b78 foo 368 --- a/foo 369 +++ b/foo 370 @@ -1,2 +1,5 @@ 371 -hello world 372 +helloworld 373 + 374 + 375 + 376 goodbye world 377 378 $ hg ndiff -w 379 diff -r 540c40a65b78 foo 380 --- a/foo 381 +++ b/foo 382 @@ -1,2 +1,5 @@ 383 hello world 384 + 385 + 386 + 387 goodbye world 388 389>>> no diffs <<< 390 391 $ hg ndiff -wB 392 393 394Test \r (carriage return) as used in "DOS" line endings: 395 396 $ printf 'hello world\r\n\r\ngoodbye\rworld\n' >foo 397 398 $ hg ndiff 399 diff -r 540c40a65b78 foo 400 --- a/foo 401 +++ b/foo 402 @@ -1,2 +1,3 @@ 403 -hello world 404 -goodbye world 405 +hello world\r (esc) 406 +\r (esc) 407 +goodbye\r (no-eol) (esc) 408 world 409 410Test \r (carriage return) as used in "DOS" line endings: 411 412 $ printf 'hello world \r\n\t\ngoodbye world\n' >foo 413 414 $ hg ndiff --ignore-space-at-eol 415 diff -r 540c40a65b78 foo 416 --- a/foo 417 +++ b/foo 418 @@ -1,2 +1,3 @@ 419 hello world 420 +\t (esc) 421 goodbye world 422 423No completely blank lines to ignore: 424 425 $ printf 'hello world\r\n\r\ngoodbye\rworld\n' >foo 426 427 $ hg ndiff --ignore-blank-lines 428 diff -r 540c40a65b78 foo 429 --- a/foo 430 +++ b/foo 431 @@ -1,2 +1,3 @@ 432 -hello world 433 -goodbye world 434 +hello world\r (esc) 435 +\r (esc) 436 +goodbye\r (no-eol) (esc) 437 world 438 439Only new line noticed: 440 441 $ hg ndiff --ignore-space-change 442 diff -r 540c40a65b78 foo 443 --- a/foo 444 +++ b/foo 445 @@ -1,2 +1,3 @@ 446 hello world 447 +\r (esc) 448 goodbye world 449 450 $ hg ndiff --ignore-all-space 451 diff -r 540c40a65b78 foo 452 --- a/foo 453 +++ b/foo 454 @@ -1,2 +1,3 @@ 455 hello world 456 +\r (esc) 457 goodbye world 458 459New line not noticed when space change ignored: 460 461 $ hg ndiff --ignore-blank-lines --ignore-all-space 462 463Do not ignore all newlines, only blank lines 464 465 $ printf 'hello \nworld\ngoodbye world\n' > foo 466 $ hg ndiff --ignore-blank-lines 467 diff -r 540c40a65b78 foo 468 --- a/foo 469 +++ b/foo 470 @@ -1,2 +1,3 @@ 471 -hello world 472 +hello 473 +world 474 goodbye world 475 476Test hunk offsets adjustments with --ignore-blank-lines 477 478 $ hg revert -aC 479 reverting foo 480 $ printf '\nb\nx\nd\n' > a 481 $ printf 'b\ny\nd\n' > b 482 $ hg add a b 483 $ hg ci -m add 484 $ hg cat -r . a > b 485 $ hg cat -r . b > a 486 $ hg diff -B --nodates a > ../diffa 487 $ cat ../diffa 488 diff -r 0e66aa54f318 a 489 --- a/a 490 +++ b/a 491 @@ -1,4 +1,4 @@ 492 493 b 494 -x 495 +y 496 d 497 $ hg diff -B --nodates b > ../diffb 498 $ cat ../diffb 499 diff -r 0e66aa54f318 b 500 --- a/b 501 +++ b/b 502 @@ -1,3 +1,3 @@ 503 b 504 -y 505 +x 506 d 507 $ hg revert -aC 508 reverting a 509 reverting b 510 $ hg import --no-commit ../diffa 511 applying ../diffa 512 $ hg revert -aC 513 reverting a 514 $ hg import --no-commit ../diffb 515 applying ../diffb 516 $ hg revert -aC 517 reverting b 518