#26 Commit time

Closed
opened 2 years ago by fr33domlover · 2 comments

In Git and in other version control systems, commits and patches have timestamps attached to them:

  • The time a patch was created by its author
  • The time a patch was applied to the repo before being pushed

In Git, those are called "author date" and "committer date".

In AS2 and AP, as far as I can see, there aren't standard properties to indicate the time that something was created. The only relevant property is published, which indicates when something was, well, published. In our terms here, that would be the time that a commit got pushed to the repository, and a Push activity then produced automatically by the forge. But that time, as far as I understand, is not the time that a commit was originally written, or applied/merged before the push.

It's possible that Alice writes a patch in the year 2000. In 2004, Bob reviews that patch and applies it to his local copy of the repo, and pushes it. The project goes inactive, but after a few years, it gets revived by Cindy, who clones Bob's old repo and pushes it in 2019 to a repo hosted on a ForgeFed federating forge.

In that case, and please correct me if I'm wrong,

  • The default git log, which displays only the author date, would say "Date: 2000"
  • The full git log, which displays both dates, would say "Author Date: 2000" and "Committer Date: 2004"
  • The time of the push, yeah 2019, wouldn't be displayed in git log at all, but that would be the time the commit got published in Cindy's repo, and the value of the published property of the generated Push activity.

There is a possibility to abuse the published property, but even if we did, do we use it for the author date or the committer date? And which property do we use for the other?

As far as I can see, the most commonly used property is the author date, usually it's the only date displayed. But author date is a worse candidate for published because usually the commit date is very close to the push, while author date can be days, weeks, even years earlier.

Are there some created properties on the fediverse? I've seen a created property in the Security Vocabulary, which simply maps to the Dublin Core created property URL. I suppose we could use dc:created.

PROPOSAL: Use the Dublic Core created property, put it in the ForgeFed JSON-LD context so that it can be used as-is without a prefix.

But do we use it for the author date or the committer date? Technically if used with a Commit, the committer date would be a closer fit. On the other hand, author date is the more commonly displayed date. If we use created for author date, what do we use for commiter date? Maybe just not have a property for it? Does any existing forge/client need this property? If yes, what do we name it? committed? committedAt? And if we use created for the committer date, what do we use for the author date?

Relevant properties from Dublin Core:

  • date
  • dateSubmitted
  • dateAccepted
  • issued

Forum thread

In Git and in other version control systems, commits and patches have timestamps attached to them: - The time a patch was created by its author - The time a patch was applied to the repo before being pushed In Git, those are called "author date" and "committer date". In AS2 and AP, as far as I can see, there aren't standard properties to indicate the time that something was created. The only relevant property is `published`, which indicates when something was, well, published. In our terms here, that would be the time that a commit got **pushed** to the repository, and a `Push` activity then produced automatically by the forge. But that time, as far as I understand, is **not** the time that a commit was originally written, or applied/merged before the push. It's possible that Alice writes a patch in the year 2000. In 2004, Bob reviews that patch and applies it to his local copy of the repo, and pushes it. The project goes inactive, but after a few years, it gets revived by Cindy, who clones Bob's old repo and pushes it in 2019 to a repo hosted on a ForgeFed federating forge. In that case, and please correct me if I'm wrong, - The default git log, which displays only the author date, would say "Date: 2000" - The full git log, which displays both dates, would say "Author Date: 2000" and "Committer Date: 2004" - The time of the push, yeah 2019, wouldn't be displayed in `git log` at all, but that would be the time the commit got published in Cindy's repo, and the value of the `published` property of the generated `Push` activity. There is a possibility to *abuse* the `published` property, but even if we did, do we use it for the author date or the committer date? And which property do we use for the other? As far as I can see, the most commonly used property is the author date, usually it's the only date displayed. But author date is a worse candidate for `published` because usually the commit date is very close to the push, while author date can be days, weeks, even years earlier. Are there some `created` properties on the fediverse? I've seen a `created` property in the Security Vocabulary, which simply maps to the Dublin Core `created` property URL. I suppose we could use `dc:created`. PROPOSAL: Use the Dublic Core `created` property, put it in the ForgeFed JSON-LD context so that it can be used as-is without a prefix. But do we use it for the author date or the committer date? Technically if used with a `Commit`, the committer date would be a closer fit. On the other hand, author date is the more commonly displayed date. If we use `created` for author date, what do we use for commiter date? Maybe just not have a property for it? Does any existing forge/client need this property? If yes, what do we name it? `committed`? `committedAt`? And if we use `created` for the committer date, what do we use for the author date? Relevant properties from [Dublin Core](http://www.dublincore.org/specifications/dublin-core/dcmi-terms): - date - dateSubmitted - dateAccepted - issued [Forum thread](https://talk.feneas.org/t/version-control-commit-timestamps/110)
fr33domlover commented 2 years ago
Collaborator

PROPOSAL:

  • Use the Dublin Core created for the git "author date"
  • Use a custom committed property for the committer date
  • Use published for the time of the actual push / creation of the Commit object by the forge

Let's review the commit in Cindy's repo that was originally written by Alice. It was created in 2000 by Alice, then committed by Bob in 2004, and in 2019 it was published by Cindy.

PROPOSAL: - Use the Dublin Core `created` for the git "author date" - Use a custom `committed` property for the committer date - Use `published` for the time of the actual push / creation of the `Commit` object by the forge Let's review the commit in Cindy's repo that was originally written by Alice. It was `created` in 2000 by Alice, then `committed` by Bob in 2004, and in 2019 it was `published` by Cindy.
fr33domlover commented 1 year ago
Collaborator

Now in the spec: created for author date, committed for committer date. Closing this issue; reopen if you have objections/comments on decision.

Now in the spec: `created` for author date, `committed` for committer date. Closing this issue; reopen if you have objections/comments on decision.
Sign in to join this conversation.
Loading...
Cancel
Save
There is no content yet.