Какие другие системы хранилищ имеют опцию -D (дата) в cvs? - PullRequest
0 голосов
/ 01 августа 2010

Недавно я наткнулся на замечательную функцию в CVS, в которой вы можете называть ревизии по дате, например:

# List changes made between the latest revision 24 hours ago and now
cvs diff -D "1 day ago"

Есть ли в других системах репозитория (например, Git, SVN, Bazaar, Mercurial и т. Д.)такой вариант?

Ответы [ 3 ]

2 голосов
/ 01 августа 2010

Subversion имеет аналогичную функцию.Например:

svn diff -r {2010-07-31}

Синтаксис объясняется в http://svnbook.red -bean.com / ru / 1.5 / svn.tour.revs.specifiers.html # svn.tour.revs.dates

1 голос
/ 01 августа 2010

Mercurial имеет широкий диапазон форматов дат: http://www.selenic.com/mercurial/hg.1.html#date-formats,, хотя, возможно, и не "1 день назад".

Этот отчет об ошибках Subversion указывает, что Subversion не может сделатьэто изначально, но предлагает совет по использованию date для этого:

(2) Хотя Subversion не понимает -r "{3 дня назад}", дата может помочь тамтоже: -r "{date -Is -d '3 days ago'}".

0 голосов
/ 02 августа 2010

(отвечает на мой вопрос)

Журнал Git поддерживает фильтрацию дат до или после заданного времени.Пример:

git log --after='july 17 2010' --before='july 31 2010'

Вот скрипт оболочки, который немного упрощает перечисление диапазонов коммитов, но он также использует более короткий формат, чем по умолчанию в git log:

#!/bin/sh
# git-changes

FORMAT='%cd%x09%h%n%x09%s%n'
CMD="git log --format=format:$FORMAT"

case $# in
    0 )
        $CMD ;;
    1 )
        $CMD "--after=`date -d "$1"`" ;;
    2 )
        $CMD "--after=`date -d "$1"`" --before="`date -d "$2"`";;
esac

Примечание:Я обернул аргументы даты командой date, поскольку git по какой-то причине обрабатывает 'July 17' как несколько часов от 'July 17 2010'.

Использование:

git-changes                  # Same as git log, but more terse
git-changes 'yesterday'      # List all commits from 24 hours ago to now
git-changes 'jul 17' 'aug 1' # List all commits after July 17 at midnight
                             #              and before August 1 at midnight.

Пример вывода git-changes 'jul 17' 'aug 1':

Sat Jul 31 23:43:47 2010 -0400  86a6727
        * Moved libcurl into project directory as static lib.

Sat Jul 31 20:04:24 2010 -0400  3a4eb10
        * Added configuration file support.

Sat Jul 31 17:44:53 2010 -0400  aa2046b
        * Fixed truncation bug in bit parser.

Sat Jul 17 00:10:57 2010 -0400  99e8124
        * Added support for more bits.

Теперь, чтобы увидеть все изменения, внесенные коммитом 99e8124, введите git show 99e8124.Чтобы увидеть все изменения, внесенные после ревизии 99e8124 (не включая сам коммит), введите git diff 99e8124.

...