Hi Stefan,
could you please split this up? I started to review but I guess the patch will have gone through some revisions before I'm done reading.
On 21.11.2016 01:19, Stefan Tauner wrote:
Drop support for Subversion in the getrevision script and Makefile.
Add .gitignore file
Restore modification dates of the exported files from the SCM.
Stop exporting SCM log dumps to CHANGELOG. This makes no sense.
Do not export the pre-"compiled" manpage. It can be generated like anything else from the code dump when we export the respective variable. The latter is added with this change.
Add some initial client-side git hooks
- When committing check for obvious stuff you never want anyway:
- white space errors
- duplicate sign-offs
- When pushing to the upstream repository check mandatory rules:
- existing signoffs and acks in all new commits
- no deletions or creation of branches
- do not rewrite history of the precious branches, even if forced
Change version string of flashrom as follows. Previously, we included the last stable version according to a hard- coded string in the Makefile and appended the subversion revision number.
With this patch the version string includes the last reachable git tag, number of commits since said tag in the upstream branches (if any), the name of said upstream branch, number of commits since that branch (if any), and the shortened git hash. In case there are uncommitted changes a "-dirty" indicator is also added. The case of unknown versions is explicitly handled in getrevision instead of simply appending "-unknown" to a hardcoded release number.
The version information is either taken from an existing git remote pointing to an upstream repository (or a known mirror), or if that is not available - with the user's consent - a shadow copy is fetched from the upstream repo that is updated on every build (usually takes less than a second).
In the following some examples of the version string changes are shown. Basically we print the distance to the last known upstream tag, which comprises any upstream commits since that tag as well as local commits on top of that. Additionally we handle upstream's stable and staging branches specially.
Old output: flashrom v0.9.7-r1716 on Linux 3.8.0-6-generic (x86_64)
New output variants:
Build of the 0.9.99 release without any changes: flashrom 0.9.99-e4f6643 on Linux 3.13.0-76-generic (x86_64)
Well, that's redundant. Why doesn't it just say 0.9.99? If somebody would forge the tag locally, he could also just override getrevision.sh.
Nico
5 commits since last tag in upstream's stable branch: flashrom 0.9.99-5-stable-e4f6643-dirty on Linux 3.13.0-76-generic (x86_64)
3 commits since last tag in upstream's staging branch and 4 local commits on top of that: flashrom 0.9.99-3-staging-4-e4f6643 on Linux 3.13.0-76-generic (x86_64)
3 commits since last tag in upstream's staging branch and 4 local commits on top of that, and some local uncommitted changes too: flashrom 0.9.99-3-staging-4-e4f6643-dirty on Linux 3.13.0-76-generic (x86_64)
3 commits since the last tag in an unrelated upstream branch (e.g., a stable release *branch* such as 0.9.99) or local branch: flashrom 0.9.99-3-e4f6643 on Linux 3.13.0-76-generic (x86_64)
No tags reachable from current commit (generic git fallback): flashrom d95935a version on Linux 3.13.0-76-generic (x86_64)
Not in a repository: flashrom unknown version on Linux 3.13.0-76-generic (x86_64)
Signed-off-by: Stefan Tauner stefan.tauner@alumni.tuwien.ac.at Acked-by: Stefan Tauner stefan.tauner@alumni.tuwien.ac.at