compute a repository ID

And try to disable upload when there are local modifications.
This commit is contained in:
Dietmar Maurer 2011-09-15 14:54:42 +02:00
parent 3eaa25db0b
commit ffb1b69bb0
3 changed files with 46 additions and 2 deletions

View File

@ -44,6 +44,7 @@ ${DEB} deb:
.PHONY: upload
upload: ${DEB}
./repoid.pl .git check
umount /pve/${RELEASE}; mount /pve/${RELEASE} -o rw
mkdir -p /pve/${RELEASE}/extra
rm -f /pve/${RELEASE}/extra/${PACKAGE}_*.deb

View File

@ -11,8 +11,11 @@ PERLSOURCE = \
all: pvecfg.pm ${SUBDIRS}
REPOID=`../repoid.pl ../.git`
pvecfg.pm: pvecfg.pm.in
sed -e s/@VERSION@/${VERSION}/ -e s/@PACKAGE@/${PACKAGE}/ $< >$@
sed -e s/@VERSION@/${VERSION}/ -e s/@PACKAGE@/${PACKAGE}/ -e s/@REPOID@/${REPOID}/ $< >$@.tmp
mv $@.tmp $@
%:
set -e && for i in ${SUBDIRS}; do ${MAKE} -C $$i $@; done
@ -24,7 +27,7 @@ distclean: clean
.PHONY: clean
clean:
set -e && for i in ${SUBDIRS}; do ${MAKE} -C $$i $@; done
rm -rf *~ pvecfg.pm
rm -rf *~ pvecfg.pm pvecfg.pm.tmp
.PHONY: install
install: pvecfg.pm ${PERLSOURCE}

40
repoid.pl Executable file
View File

@ -0,0 +1,40 @@
#!/usr/bin/perl -w
# use use the first 8 characters from the master commit ID
# git status --porcelain
use strict;
use lib qw(.);
use PVE::Tools qw(run_command);
my $gitdir = shift;
die "no repository" if !$gitdir;
my $path = "$gitdir/refs/heads/master";
die "master branch does not exists" if ! -f $path;
my $arg1 = shift;
if ($arg1) {
die "unknown parameter '$arg1'" if $arg1 ne 'check';
my $testfunc = sub {
my $line = shift;
next if $line =~ m/^#/;
next if $line =~ m/^\?\?/;
die "detected modified content: $line\n";
};
my $cmd = ['git', '--git-dir', $gitdir ,'status', '--porcelain'];
run_command($cmd, outfunc => $testfunc);
}
my $repoid = `cat $path`;
chomp $repoid;
die "invalid commit format" if $repoid !~ m/^[0-9a-f]{40}$/;
my $res = substr $repoid, 0, 8;
print "$res\n";