Skip to content

Commit

Permalink
version: include version information for tarballs from git
Browse files Browse the repository at this point in the history
Embed the git commit hash as well as the tag information for tarballs
produced by 'git archive' (this includes the Github tarball). Example:

    TShark (Wireshark) 3.0.1 (Git commit ea351cd)

Note that the embedded git ref names can include branch information, see
for example `git log -n1 -s --format=%D v3.0.1`:

    tag: wireshark-3.0.1, tag: v3.0.1
    HEAD -> bug/15544, tag: v99.99
    HEAD, origin/master, origin/HEAD, master

Thus, when creating release tarballs, I would recommend using the above
command to see whether unnecessary branch information is present. If so,
create a new post-release commit first on the same branch. This way, the
release tarballs should be reproducible.

While at it, increase the commit abbreviation length from 8 to 12.
Currently git describe abbreviates to 10 by default. The default length
is at minimum 7 and is dependent on the number of objects:

    git count-objects -v | perl -lne 'print int(log($1)/log(2)/2)+1 if /^in-pack: (\d+)/'

Bug: 15544
Change-Id: Ifd1ed636b69f7687a7272775686f51387040a596
Reviewed-on: https://code.wireshark.org/review/33214
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Dario Lombardo <lomato@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
  • Loading branch information
Lekensteyn authored and alagoutte committed May 16, 2019
1 parent 1ee7c11 commit a68627a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitattributes
Expand Up @@ -5,3 +5,4 @@
.gitattributes export-ignore
.gitignore export-ignore
.gitreview export-ignore
tools/make-version.pl export-subst
29 changes: 28 additions & 1 deletion tools/make-version.pl
Expand Up @@ -80,17 +80,36 @@ sub read_repo_info {
my $do_hack = 1;
my $info_source = "Unknown";
my $is_git_repo = 0;
my $git_abbrev_length = 12;
my $git_cdir;
my $vcs_tag;
my $repo_branch = "unknown";
my $info_cmd = "";

# Tarball produced by 'git archive' will have the $Format string
# substituted due to the use of 'export-subst' in .gitattributes.
my $git_archive_commit = '$Format:%H$';
my @git_refs = split(/, /, '$Format:%D$');
if (substr($git_archive_commit, 0, 1) eq '$') {
# If $Format is still present, then this is not a git archive.
$git_archive_commit = undef;
} else {
foreach my $git_ref (@git_refs) {
if ($git_ref =~ /^tag: (v[1-9].+)/) {
$vcs_tag = $1;
$is_tagged = 1;
}
}
}

$package_string = $untagged_version_extra;

# For tarball releases, do not invoke git at all and instead rely on
# versioning information that was provided at tarball creation time.
if ($git_description) {
$info_source = "Forced via command line flag";
} elsif ($git_archive_commit) {
$info_source = "git archive";
} elsif (-e "$src_dir/.git" && ! -d "$src_dir/.git/svn") {
$info_source = "Command line (git)";
$git_client = 1;
Expand Down Expand Up @@ -148,6 +167,10 @@ sub read_repo_info {
$do_hack = 0;
# Assume format like v2.3.0rc0-1342-g7bdcf75
$commit_id = ($git_description =~ /([0-9a-f]+)$/)[0];
} elsif ($git_archive_commit) {
$do_hack = 0;
# Assume a full commit hash, abbreviate it.
$commit_id = substr($git_archive_commit, 0, $git_abbrev_length);
} elsif ($git_client) {
eval {
use warnings "all";
Expand All @@ -159,7 +182,7 @@ sub read_repo_info {
}

# Commits since last annotated tag.
chomp($line = qx{git --git-dir="$src_dir"/.git describe --abbrev=8 --long --always --match "v[1-9]*"});
chomp($line = qx{git --git-dir="$src_dir"/.git describe --abbrev=$git_abbrev_length --long --always --match "v[1-9]*"});
if ($? == 0 && length($line) > 1) {
my @parts = split(/-/, $line);
$git_description = $line;
Expand Down Expand Up @@ -577,6 +600,10 @@ sub new_version_h
return "#define VCSVERSION \"$line-$vcs_name-$num_commits\"\n";
}

if ($commit_id) {
return "#define VCSVERSION \"$vcs_name commit $commit_id\"\n";
}

return "#define VCSVERSION \"$vcs_name Rev Unknown from unknown\"\n";
}

Expand Down

0 comments on commit a68627a

Please sign in to comment.