~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revisionspec.py

  • Committer: ghigo
  • Date: 2006-09-20 20:59:27 UTC
  • mto: (2070.4.1 help-topics)
  • mto: This revision was merged to the branch mainline in revision 2126.
  • Revision ID: ghigo@venice-20060920205927-6ae24018d7b8c33c
add topics help

Show diffs side-by-side

added added

removed removed

Lines of Context:
235
235
# private API
236
236
 
237
237
class RevisionSpec_revno(RevisionSpec):
 
238
    """Selects a revision using a number.
 
239
 
 
240
    Use an integer to specify a revision in the history of the branch.
 
241
    Optionally a branch can be specified. The 'revno:' prefix is optional.
 
242
    A negative number will count from the end of the branch (-1 is the
 
243
    last revision, -2 the previous one). If the negative number is larger
 
244
    than the branch's history, the first revision is returned.
 
245
    examples:
 
246
      revno:1                   -> return the first revision
 
247
      revno:3:/path/to/branch   -> return the 3rd revision of
 
248
                                   the branch '/path/to/branch'
 
249
      revno:-1                  -> The last revision in a branch.
 
250
      -2:http://other/branch    -> The second to last revision in the
 
251
                                   remote branch.
 
252
      -1000000                  -> Most likely the first revision, unless
 
253
                                   your history is very long.
 
254
    """
238
255
    prefix = 'revno:'
239
256
 
240
257
    def _match_on(self, branch, revs):
293
310
 
294
311
 
295
312
class RevisionSpec_revid(RevisionSpec):
 
313
    """Selects a revision using the revision id.
 
314
 
 
315
    Supply a specific revision id, that can be used to specify any
 
316
    revision id in the ancestry of the branch. 
 
317
    Including merges, and pending merges.
 
318
    examples:
 
319
      revid:aaaa@bbbb-123456789 -> Select revision 'aaa@bbb-123456789'
 
320
    """    
296
321
    prefix = 'revid:'
297
322
 
298
323
    def _match_on(self, branch, revs):
306
331
 
307
332
 
308
333
class RevisionSpec_last(RevisionSpec):
 
334
    """Selects the nth revision from the end.
 
335
 
 
336
    Supply a positive number to get the nth revision from the end.
 
337
    This is the same as suppling negative numbers to the 'revno:' spec.
 
338
    examples:
 
339
      last:1        -> return the last revision
 
340
      last:3        -> return the revision 2 before the end.
 
341
    """    
309
342
 
310
343
    prefix = 'last:'
311
344
 
334
367
 
335
368
 
336
369
class RevisionSpec_before(RevisionSpec):
 
370
    """Selects the parent of the revision specified.
 
371
 
 
372
    Supply any revision spec to return the parent of that revision.
 
373
    It is an error to request the parent of the null revision (before:0).
 
374
    This is mostly useful when inspecting revisions that are not in the
 
375
    revision history of a branch.
 
376
 
 
377
    examples:
 
378
      before:1913    -> Return the parent of revno 1913 (revno 1912)
 
379
      before:revid:aaaa@bbbb-1234567890  -> return the parent of revision
 
380
                                            aaa@bbb-1234567890
 
381
      bzr diff -r before:revid:aaaa..revid:aaaa
 
382
            -> Find the changes between revision 'aaaa' and its parent.
 
383
               (what changes did 'aaaa' introduce)
 
384
    """
337
385
 
338
386
    prefix = 'before:'
339
387
    
367
415
 
368
416
 
369
417
class RevisionSpec_tag(RevisionSpec):
 
418
    """To be implemented."""
370
419
    prefix = 'tag:'
371
420
 
372
421
    def _match_on(self, branch, revs):
397
446
 
398
447
 
399
448
class RevisionSpec_date(RevisionSpec):
 
449
    """Selects a revision on the basis of a datestamp.
 
450
 
 
451
    Supply a datestamp to select the first revision that matches the date.
 
452
    Date can be 'yesterday', 'today', 'tomorrow' or a YYYY-MM-DD string.
 
453
    Matches the first entry after a given date (either at midnight or
 
454
    at a specified time).
 
455
 
 
456
    One way to display all the changes since yesterday would be:
 
457
        bzr log -r date:yesterday..-1
 
458
 
 
459
    examples:
 
460
      date:yesterday            -> select the first revision since yesterday
 
461
      date:2006-08-14,17:10:14  -> select the first revision after
 
462
                                   August 14th, 2006 at 5:10pm.
 
463
    """    
400
464
    prefix = 'date:'
401
465
    _date_re = re.compile(
402
466
            r'(?P<date>(?P<year>\d\d\d\d)-(?P<month>\d\d)-(?P<day>\d\d))?'
405
469
        )
406
470
 
407
471
    def _match_on(self, branch, revs):
408
 
        """
409
 
        Spec for date revisions:
 
472
        """Spec for date revisions:
410
473
          date:value
411
474
          value can be 'yesterday', 'today', 'tomorrow' or a YYYY-MM-DD string.
412
475
          matches the first entry after a given date (either at midnight or
413
476
          at a specified time).
414
477
 
 
478
          XXX: This doesn't actually work
415
479
          So the proper way of saying 'give me all entries for today' is:
416
480
              -r date:yesterday..date:today
417
481
        """
467
531
 
468
532
 
469
533
class RevisionSpec_ancestor(RevisionSpec):
 
534
    """Selects a common ancestor with a second branch.
 
535
 
 
536
    Supply the path to a branch to select the common ancestor.
 
537
 
 
538
    The common ancestor is the last revision that existed in both
 
539
    branches. Usually this is the branch point, but it could also be
 
540
    a revision that was merged.
 
541
 
 
542
    This is frequently used with 'diff' to return all of the changes
 
543
    that your branch introduces, while excluding the changes that you
 
544
    have not merged from the remote branch.
 
545
 
 
546
    examples:
 
547
      ancestor:/path/to/branch
 
548
      bzr diff -r ancestor:../../mainline/branch
 
549
    """
470
550
    prefix = 'ancestor:'
471
551
 
472
552
    def _match_on(self, branch, revs):
493
573
 
494
574
 
495
575
class RevisionSpec_branch(RevisionSpec):
496
 
    """A branch: revision specifier.
497
 
 
498
 
    This takes the path to a branch and returns its tip revision id.
 
576
    """Selects the last revision of a specified branch.
 
577
 
 
578
    Supply the path to a branch to select its last revision.
 
579
 
 
580
    examples:
 
581
      branch:/path/to/branch
499
582
    """
500
583
    prefix = 'branch:'
501
584