Что является источником многострочных записей журнала изменений?

Подход grep(требуется поддержка PCRE):

s="This is a test some stuff I want string junk string end"
grep -Po 'te.*?ng' <<< $s

Альтернативный подходperl :

perl -ne 'print "$&\n" if /te.*?ng/' <<< $s

Вывод (для обоих подходов):

test some stuff I want string

  • .*? - ?вот нежадныймодификатор, указывает соответствие в минимальном моде
1
08.06.2017, 01:13
1 ответ

RCS предшествует Linux, поддерживает несколько -изменение строки -комментарии (Я использую эту функцию с 1988 года ). CVS унаследовал это от RCS. rcs2log существует с 1992 года и отображает журналы RCS --, включая многострочные комментарии.

RCSciзапрашивает комментарий к изменению -с нулем или более строк, заканчивающихся строкой, содержащей только.(например mail ). Я использую rcs2log с 2003 года для форматирования журналов RCS в удобочитаемые журналы изменений, такие как дляded.

Между прочим, SCCS также поддерживает многострочные -комментарии, но я нашел его менее удобным для пользователя -в этом отношении, когда начал использовать его в начале 1986 г. (см. обсуждение).

Одним из аспектов комментариев с несколькими -сменами строк -, который, по-видимому, был упущен из виду, является ввод их и, возможно, исправление их. Самая старая версия CVS, которую вы можете найти (1.3 в апреле 1992 года ), использовала для этой цели текстовый редактор.Эта функция присутствует во всех последующих выпусках CVS. Вы можете просмотреть исходники здесь или получить -копию только для чтения . Похоже, репозиторий начинается в конце ноября 1994 года, то есть между версиями 1.3 и 1.4 (1.5 была выпущена в июле 1995 года ). Чтобы увидеть 1.3, вам нужно получить архив.

Линус, безусловно, знал об этом, потому что первый запрос, отраженный в истории изменений -BitKeeper, относился к этой функции :

.
commit e1dc29195bd72a9a4c8f1e817e08b8c0358ee88b
Author: Larry McVoy <lm@bitkeeper.com>
Date:   Thu Jan 31 23:29:46 2002 -0800

    Add a bk comment interface so that Linus can edit the comments after
    the fact.

    bk: 3c5a43eabhI7oSce6C4ms5U-kIcEv

Чтобы увидеть, что было реализовано, вы можете прочитать исходный -код . Вот небольшая часть изменения, произошедшего примерно месяц спустя (это изменение -комментарий намекает на то, что первоначальное решение было неудовлетворительным):

+/*
+ * Prompt the user with a set of comments, returning
+ * 0 if they want to use them,
+ * -1 for an error or an abort.
+ */
+int
+comments_prompt(char *file)
+{
+       char    buf[10];
+       extern  char *editor;
+
+       unless (editor || (editor = getenv("EDITOR"))) editor = "vi";
+       while (1) {
+               printf("\n-------------------------------------------------\n");
+               fflush(stdout);
+               if (cat(file)) return (-1);
+               printf("-------------------------------------------------\n");
+               printf("Use these comments: (e)dit, (a)bort, (u)se? ");

Опять же, вопрос опроисхождении. Я помню, что DEC CMS (, предшествующая CVS 1.3 ), предоставляла свою информацию в полноэкранном -экранном (режиме терминала ). Я использовал это в период времени 1988 -1989. Тем не менее, происхождение Git связано с CVS, а CVS, в свою очередь, может быть оригинальным (в том смысле, что на него не повлияло воздействие более ранних инструментов ), а может и нет.

6
27.01.2020, 23:14

Теги

Похожие вопросы