forked from the-distro/infra
gerrit-one-way-sync: disallow auto-merging a staging iteration into master
This commit is contained in:
parent
3fa4a25d87
commit
d9809e1e78
|
@ -13,9 +13,9 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
mkSyncService = targetRef: { name, fromUri, fromRefspec, localRefspec, ... }: {
|
mkSyncService = targetRef: { name, fromUri, fromRefspec, localRefspec, ... }: {
|
||||||
path = [ pkgs.gitFull pkgs.openssh ];
|
path = [ pkgs.gitFull pkgs.openssh pkgs.lix ];
|
||||||
script = ''
|
script = ''
|
||||||
set -x
|
set -xe
|
||||||
trap "git worktree prune && git worktree remove -f ${name}" EXIT
|
trap "git worktree prune && git worktree remove -f ${name}" EXIT
|
||||||
|
|
||||||
if [ ! -d "/var/lib/onewaysync/nixpkgs" ]; then
|
if [ ! -d "/var/lib/onewaysync/nixpkgs" ]; then
|
||||||
|
@ -33,7 +33,15 @@ let
|
||||||
git config user.name Fork-o-Tron
|
git config user.name Fork-o-Tron
|
||||||
git config user.email noreply@forkos.org
|
git config user.email noreply@forkos.org
|
||||||
git fetch ${fromUri} ${fromRefspec}
|
git fetch ${fromUri} ${fromRefspec}
|
||||||
|
'' + lib.optionalString (!(lib.hasInfix "staging" localRefspec)) ''
|
||||||
|
OLD_STDENV=$(nix eval -f . stdenv.outPath --store /run/onewaysync)
|
||||||
|
'' + ''
|
||||||
git merge FETCH_HEAD
|
git merge FETCH_HEAD
|
||||||
|
'' + lib.optionalString (!(lib.hasInfix "staging" localRefspec)) ''
|
||||||
|
NEW_STDENV=$(nix eval -f . stdenv.outPath --store /run/onewaysync)
|
||||||
|
# Do not allow auto-merging a staging iteration
|
||||||
|
test "$OLD_STDENV" = "$NEW_STDENV"
|
||||||
|
'' + ''
|
||||||
GIT_SSH_COMMAND='ssh -i ${cfg.deployKeyPath}' git push ${cfg.pushUrl} HEAD:${targetRef}
|
GIT_SSH_COMMAND='ssh -i ${cfg.deployKeyPath}' git push ${cfg.pushUrl} HEAD:${targetRef}
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
Loading…
Reference in a new issue