mirror of
https://github.com/godotengine/godot-builds.git
synced 2026-01-01 01:48:13 +03:00
69 lines
2.3 KiB
Python
Executable File
69 lines
2.3 KiB
Python
Executable File
### This script has been used to generate initial data for this repository
|
|
### and is preserved as a reference. DO NOT USE IT.
|
|
|
|
### Generate commit history adding each official release in order.
|
|
###
|
|
### Make sure JSON metadata files are put into the releases folder.
|
|
### Using these files this script recreates the commit history,
|
|
### placing each release at their approximate time and date of
|
|
### publication. Each commit is tagged with the release identity.
|
|
###
|
|
### Make sure you do not rebase or otherwise change the history
|
|
### afterwards, as that destroys git tags (they remain assigned
|
|
### to old commits).
|
|
|
|
|
|
import json
|
|
import os
|
|
import subprocess
|
|
from datetime import datetime
|
|
|
|
|
|
releases = []
|
|
|
|
# Read JSON files and generate correct release history.
|
|
|
|
releases_path = "./releases"
|
|
|
|
dir_contents = os.listdir(releases_path)
|
|
for filename in dir_contents:
|
|
filepath = os.path.join(releases_path, filename)
|
|
if not os.path.isfile(filepath):
|
|
continue
|
|
|
|
with open(filepath, 'r') as json_data:
|
|
release_data = json.load(json_data)
|
|
|
|
print(f"Reading release '{release_data['name']}' data.")
|
|
releases.append({
|
|
"file": filepath,
|
|
"data": release_data
|
|
})
|
|
|
|
# Sort by release date so we can create commits in order
|
|
releases.sort(key=lambda x: x['data']['release_date'])
|
|
|
|
# Generate a commit for each release, spoof the commit date to
|
|
# match the release date.
|
|
|
|
for release_data in releases:
|
|
commit_datetime = datetime.fromtimestamp(release_data['data']['release_date'])
|
|
# Thu, 07 Apr 2005 22:13:13 +0200
|
|
commit_date = commit_datetime.strftime('%a, %d %b %Y %H:%M:%S +0000')
|
|
release_tag = f"{release_data['data']['version']}-{release_data['data']['status']}"
|
|
|
|
cmd_add_file = f"git add {release_data['file']}"
|
|
cmd_commit_release = f"git commit -m \"Add Godot {release_tag}\""
|
|
cmd_amend_time = f"git commit --amend --no-edit --date \"{commit_date}\""
|
|
cmd_tag_release = f"git tag {release_tag}"
|
|
|
|
extra_env = os.environ.copy()
|
|
extra_env['GIT_COMMITTER_DATE'] = commit_date
|
|
|
|
subprocess.run(cmd_add_file)
|
|
subprocess.run(cmd_commit_release, env=extra_env)
|
|
subprocess.run(cmd_amend_time, env=extra_env)
|
|
subprocess.run(cmd_tag_release, env=extra_env)
|
|
|
|
print(f"Committed release '{release_data['data']['name']}'.")
|