какова первая строка вывода git format-patch?

при запуске git format-patch цель состоит в том, чтобы создать электронное представление кода, который вы написали. Все идет нормально. Я не эксперт по электронной почте, но мне кажется, что первая строка этого вывода исправления формата не соответствует стандартному формату заголовка электронной почты...

From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001
Message-Id: 
From: Christopher Harvey 
Date: Wed, 3 Apr 2013 10:17:52 -0400
Subject: [PATCH 0/3] *** SUBJECT HERE ***
To: Christopher Harvey 

*** BLURB HERE ***

Christopher Harvey (3):
  commit 2
  commit 3
  commit 4

 data | 3 +++
 1 file changed, 3 insertions(+)

-- 
1.7.12.4

что такое From de8d128fb520416e0b029c913b3a5ce900d0320c Mon Sep 17 00:00:00 2001? для чего дата? Мне это кажется произвольным, и это также мешает мне передать его в sendmail. Мне приходится вручную удалять эту строку каждый раз, когда я хочу отправить патч.

Спасибо.


person Chris H    schedule 03.04.2013    source источник
comment
git log -S 'Mon Sep 17 00:00:00 2001' --all -p --source --reverse -- . ':(exclude)t' показывает, что именно Хамано сделал фиксацию, которая ввела магическую дату, но ничего не говорит, почему она была выбрана. Временная метка UNIX тоже не кажется каким-то особенным числом: 1000677600, хотя она более аккуратна, чем строка.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 25.07.2015
comment
Кроме того, SHA-1 — это тот же самый коммит, но он немного бесполезен, так как SHA-1 изменится, как только он будет применен к новому коммитеру и родительскому коммиту.   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 25.07.2015


Ответы (5)


От 1_

ОБСУЖДЕНИЕ Патч, созданный git format-patch, имеет формат почтового ящика UNIX с фиксированной «волшебной» отметкой времени, указывающей, что файл выводится из format-patch, а не из реального почтового ящика, например:

       From 8f72bad1baf19a53459661343e21d6491c3908d3 Mon Sep 17 00:00:00 2001
       From: Tony Luck <[email protected]>
       Date: Tue, 13 Jul 2010 11:42:54 -0700
       Subject: [PATCH] =?UTF-8?q?> > [IA64]=20Put=20ia64=20config=20files=20on=20the=20?=
        =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?=
       MIME-Version: 1.0
       Content-Type: text/plain; charset=UTF-8
       Content-Transfer-Encoding: 8bit
person Fredrik Pihl    schedule 03.04.2013
comment
Было бы полезно отметить, что первая версия ядра Linux была выпущена Linux Torvalds 17 сентября (но в 1991 году). - person sidcha; 18.04.2021

В качестве приложения к ответу Фредрика приводятся некоторые соответствующие комментарии Джунио Хамано:

"Mon Sep 17 00:00:00 2001" — это просто фальшивая случайная дата, чтобы строка Unix-From распознавалась обычным MUA и не не имеют ничего общего с вашими объектами фиксации. Настоящая дата указана в заголовке Date:.

I actually once tried to change it to git's birthday (Thu Apr 7 15:13:13 2005 -0700) and I recall that it turned out that some people's scripts (or perhaps MUA) were broken and cared what was before "7" ... on the Unix-From line and discarded that update.

The "From $SHA1 $magic_timestamp" line and other header lines are there to make it look like a mbox

Ссылки: 1, 2, 3 .

person TachyonVortex    schedule 18.11.2014
comment
+1 за цитату Хамано. Но я бы хотел, чтобы кто-нибудь объяснил, почему была выбрана эта волшебная дата или она была случайной. - person Ciro Santilli 新疆再教育营六四事件ۍ 24.07.2015
comment
«Оказалось, что скрипты некоторых людей (или, возможно, MUA) были сломаны и заботились о том, что было до 7 » -- Основываясь на предоставленной вами дате, вы нарушили формат mbox, где дата должна быть в стандартном формате C asctime. Поле дня месяца представляет собой заполненное пробелом двузначное число (%2d), выровненное по правому краю, что делает его двумя пробелами между месяцем и днем ​​для однозначного числа дня. См. Формат электронной почты MBOX и asctime для справки. - person Thomas Guyot-Sionnest; 29.07.2021

Вывод в формате mbox. Вы можете легко удалить первую строку с помощью:

git format-patch --stdout <range> | sed 1d

а потом делай что хочешь с результатом.

В качестве альтернативы вы можете использовать git для отправки электронной почты. Пытаться:

git send-mail --smtp-server=<your server> *.patch

Все варианты см. на справочной странице GIT Send-Mail.

person GoZoner    schedule 03.04.2013

из википедии (https://en.wikipedia.org/wiki/September_17)

2001 - Нью-Йоркская фондовая биржа вновь открывается для торгов после терактов 11 сентября, самого длительного закрытия со времен Великой депрессии.

может просто совпадение!

person glen    schedule 06.08.2015

Git 2.32 (второй квартал 2021 г.) фактически объясняет части вывода исправления формата заранее, прежде чем остальная часть документации начнет ссылаться на них.

См. commit 28e29ee (24 марта 2021 г.) от Хунио С. Хамано (gitster).
(объединено Хунио С Хамано -- gitster -- в коммит 5c2f7ff, 30 марта 2021 г.)

format-patch: дайте обзор сообщения об исправлении.

В тексте говорится, что нечто, называемое патчем, готовится по одному для каждого коммита, оно подходит для отправки по электронной почте, и am — это команда для его использования, но не говорится, что такое патч на самом деле.

Описание на странице также относится к линии с тремя пунктирами, но неясно, что это такое, если только читателю не будет предоставлен более подробный обзор того, что представляет собой патч.

Добавьте краткий абзац, чтобы дать представление о том, как выглядит результат.

git format-patch теперь включает в свою справочную страницу< /а>:

Подготовьте каждую фиксацию с ее исправлением в одном сообщении на фиксацию, отформатированном так, чтобы он напоминал почтовый ящик UNIX.

Сообщение, формируемое командой, состоит из трех частей:

Сообщение журнала и патч разделены линией с тремя пунктирными линиями.

person VonC    schedule 02.04.2021