GitHub утверждает, что получил коммит до своего родителя, возможно ли это? - PullRequest
0 голосов
/ 08 ноября 2019

Сервер GitHub сообщает «отложенную дату», связанную с некоторыми коммитами, отправленными на его сервер. Предполагается, что это «дата и время, когда этот коммит был перенесен». Интересно, если это правда, или если в этом процессе отметки времени есть ошибка.

Запустив следующий запрос в проводнике графиков, я замечаю, что сообщение о подтверждении 4016 было выдвинуто в 2018-08-21T18: 29: 00Z, то есть, до того, как его родительский элемент - коммит 21af, сообщалось, что он был перенесен в 2018-08-22T10: 45: 40Z. Возможно ли использовать git для отправки коммита перед его родителем?

Невозможно изменить коммит. Таким образом, коммит 4016 уже имел свой родительский набор, сам по себе уже имеющий свой родительский набор, в тот момент, когда он был отправлен в GitHub. (Действительно, временные метки разработки и фиксации предполагают это, предполагая, что они правильные.) И я не вижу способа отправить коммит на удаленный компьютер, не отправив при этом также его предков (чтение книги git или страницы руководства git push). Отсюда мой вопрос.

Вот запрос.

{
  repository(owner: "oliviercailloux", name: "CLut") {
    object(oid: "4016d7b1b09e2a188fb99d30d1ca5b0f726a4a3d") {
      ... on Commit {
        history(first: 3) {
          totalCount
          nodes {
            oid
            message
            parents(first: 100) {
              nodes {
                oid
              }
            }
            authoredDate
            committedDate
            pushedDate
          }
        }
      }
    }
  }
}

А вот и ответ.

{
  "data": {
    "repository": {
      "object": {
        "history": {
          "totalCount": 13,
          "nodes": [
            {
              "oid": "4016d7b1b09e2a188fb99d30d1ca5b0f726a4a3d",
              "message": "Intro",
              "parents": {
                "nodes": [
                  {
                    "oid": "c145866575e55309f943ad2c2b4d547b926f38d0"
                  }
                ]
              },
              "authoredDate": "2018-08-21T18:28:49Z",
              "committedDate": "2018-08-21T18:28:49Z",
              "pushedDate": "2018-08-21T18:29:00Z"
            },
            {
              "oid": "c145866575e55309f943ad2c2b4d547b926f38d0",
              "message": "Refactored into a short article",
              "parents": {
                "nodes": [
                  {
                    "oid": "21af8bffc747eaee04217b9c8bb9e3e4a3a6293d"
                  }
                ]
              },
              "authoredDate": "2018-08-21T18:25:52Z",
              "committedDate": "2018-08-21T18:25:52Z",
              "pushedDate": null
            },
            {
              "oid": "21af8bffc747eaee04217b9c8bb9e3e4a3a6293d",
              "message": "Minor (wording and a ref)",
              "parents": {
                "nodes": [
                  {
                    "oid": "f63a7c3a01123b266274728179c9cd46b41b69a5"
                  }
                ]
              },
              "authoredDate": "2018-08-21T14:35:14Z",
              "committedDate": "2018-08-21T14:35:14Z",
              "pushedDate": "2018-08-22T10:45:40Z"
            }
          ]
        }
      }
    }
  }
} 

Вот соответствующий бит истории:

21af [reported pushed at 22 aug 10h45m40s; authored at 21 aug 14h35m14s] <- c145 [authored 21 aug 18h25m52s] <- 4016 [reported pushed at 21 aug 18h29m00; authored at 21 aug 18h28m49s]

Обратите внимание, что мой вопрос отличается от этого , так как мой вопрос касается временных меток дат, заданных сервером GitHub, а не дат коммитов и авторов, сохраненных в коммитах.

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

Справочная информация (взято с здесь .)

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

Я знаю, что классная комната GitHub (которой я являюсь счастливым пользователем) предоставляет некоторую возможность отметки времени, ноон не позволяет получить временную метку для нескольких коммитов, как мне хотелось бы.

Мне также известно, что GitHub не будет предоставлять события старше трех месяцев через свой API. Я не против. Моя цель - получить временные метки последних событий (например, один месяц назад или более поздний).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...