Получите последнее сообщение о фиксации, автора и хеш с помощью мерзавца ls-remote как команда

Я удалил нежелательные файлы библиотеки с:

find -mtime -1 -maxdepth 1 -exec rm -rf {} \;

который находит файлы и каталоги измененными в течение одного дня под текущим каталогом, и удаляет всех их.

4
29.05.2015, 17:09
2 ответа

В то время как нет никаких утилит, которые поставляются с Git, который позволяет вам делать то, что вы хотите, это , это , довольно легко написать сценарий Python, который анализирует объект Git, а затем выводит автор и совершать сообщение.

Вот образец один, который ожидает объекта Commit GIT на stdin , а затем печатает автор, а затем сообщение Commit:

from parse import parse
import sys, zlib

raw_commit = sys.stdin.buffer.read()

commit = zlib.decompress(raw_commit).decode('utf-8').split('\x00')[1]
(headers, body) = commit.split('\n\n')

for line in headers.splitlines():
    # `{:S}` is a type identifier meaning 'non-whitespace', so that
    # the fields will be captured successfully.
    p = parse('author {name} <{email:S}> {time:S} {tz:S}', line)
    if (p):
        print("Author: {} <{}>\n".format(p['name'], p['email']))
        print(body)
        break

, чтобы сделать полную утилиту, такую ​​как вы хотите, чтобы сервер должен поддерживать Транспортный протокол Dumb Git через HTTP, так как вы не можете получить один коммит с использованием Smart Protocol.

GitHub больше не поддерживает тупой транспортный протокол, поэтому я буду использовать свою самосоведующуюся копию дерева Линуса в качестве примера.

Если удаленный сервер поддерживает Dump HTTP Git Transport, вы можете просто использовать Curl, чтобы получить объект, а затем подержать его к вышеуказанному скрипту Python. Допустим, мы хотим видеть автора и совершить послание Commit C3FE5872EB , то мы выполним следующий скрипт оболочки:

baseurl=http://git.kyriasis.com/kyrias/linux.git/objects
curl "$baseurl"/c3/fe5872eb3f5f9e027d61d8a3f5d092168fdbca | python parse.py

, который будет распечатать следующий вывод:

Author: Sanidhya Kashyap <sanidhya.gatech@gmail.com>

bfs: correct return values

In case of failed memory allocation, the return should be ENOMEM instead
of ENOSPC.

...

полный фиксатор SHA Commit C3FE5872EB C3FE5872EB3F5F9E027D61D8A3F5D092168FDBCA , и, как вы можете видеть в приведенном выше скрипте оболочки, SHA разделен после второго символа с помощью косой. Это связано с тем, что GIT хранит объекты объектов, пространства, представленные под первыми двумя символами SHA, предположительно из-за устаревшей файловой системы, имеющей низкие ограничения на количество файлов, которые могут находиться в одном каталоге.


В то время как этот ответ не дает полной рабочей реализации удаленного команды Git-Show , она дает основные детали, необходимые для простых.

7
27.01.2020, 20:47

Как насчет использования Журнал Git :

git log -1

Пример:

$ git log -1
commit 4a3dfcc66ca76a19052a7c0d44d5e6c315d79e07
Author: LE Manh Cuong <example@example.com>
Date:   Fri Apr 17 01:54:10 2015 +0700

    Make yanking work in OSX.
4
27.01.2020, 20:47

Теги

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