├── .tag ├── .gitreview ├── util └── normalize │ ├── normalize.pro │ ├── README │ └── main.cpp ├── bin ├── qt5_tool.bat ├── git-qt-grafts.bat ├── qt6_tool.bat ├── git-reshape ├── git-sync-to ├── .git-gpush-aliases ├── git-pasteapply ├── git-edit-commit ├── git-gpull ├── git-rewrite-author ├── git-note-review ├── git-pastebin ├── git-qt-grafts ├── git-split-ws ├── git-qt-cherry-pick ├── git-ppush ├── git-qt-merge-mainlines ├── git-ggc ├── ibmake.bat └── qt6_tool ├── LICENSES ├── LicenseRef-Qt-Commercial.txt ├── LGPL-3.0-only.txt └── GPL-2.0-only.txt └── git-hooks ├── gerrit-bot-cleanup ├── git_post_commit_hook ├── clang-format-pre-commit ├── qt-codereview-mirror ├── gerrit-bot-extras ├── gerrit_commit_msg_hook ├── gerrit-bot └── qdoc-bot /.tag: -------------------------------------------------------------------------------- 1 | e2bf9392470a0efa6ca4e8c1799eaaef9fe03d5f 2 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=codereview.qt-project.org 3 | project=qt/qtrepotools 4 | defaultbranch=master 5 | -------------------------------------------------------------------------------- /util/normalize/normalize.pro: -------------------------------------------------------------------------------- 1 | QT = core 2 | CONFIG -= moc 3 | CONFIG += console 4 | mac:CONFIG -= app_bundle 5 | 6 | SOURCES += main.cpp 7 | -------------------------------------------------------------------------------- /bin/qt5_tool.bat: -------------------------------------------------------------------------------- 1 | :: Copyright (C) 2016 The Qt Company Ltd. 2 | :: SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only 3 | 4 | @rem ***** This assumes PERL is in the PATH ***** 5 | @perl.exe %~dp0qt5_tool %* 6 | -------------------------------------------------------------------------------- /bin/git-qt-grafts.bat: -------------------------------------------------------------------------------- 1 | :: Copyright (C) 2016 The Qt Company Ltd. 2 | :: SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only 3 | 4 | @rem ***** This assumes PERL is in the PATH ***** 5 | @perl.exe %~dp0git-qt-grafts %* 6 | -------------------------------------------------------------------------------- /bin/qt6_tool.bat: -------------------------------------------------------------------------------- 1 | :: Copyright (C) 2020 The Qt Company Ltd. 2 | :: SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only 3 | 4 | @rem ***** This assumes Python 3 is in the PATH ***** 5 | @python.exe %~dp0qt6_tool %* 6 | -------------------------------------------------------------------------------- /bin/git-reshape: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Copyright (C) 2019 Oswald Buddenhagen 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | 8 | # This script provides a convenient way to reshape the local branch 9 | # without accidentally rebasing it even if the remote was fetched 10 | # meanwhile. 11 | 12 | b=$(git merge-base @{u} HEAD) || exit 13 | exec git rebase -i $b "$@" 14 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-Qt-Commercial.txt: -------------------------------------------------------------------------------- 1 | Licensees holding valid commercial Qt licenses may use this software in 2 | accordance with the the terms contained in a written agreement between 3 | you and The Qt Company. Alternatively, the terms and conditions that were 4 | accepted by the licensee when buying and/or downloading the 5 | software do apply. 6 | 7 | For the latest licensing terms and conditions, see https://www.qt.io/terms-conditions. 8 | For further information use the contact form at https://www.qt.io/contact-us. 9 | -------------------------------------------------------------------------------- /bin/git-sync-to: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | while [ ! -f cmake/QtSynchronizeRepo.cmake ] 4 | do 5 | cd .. 6 | if [ $? -gt 0 ] 7 | then 8 | >&2 echo "This git command needs to be run within a Qt supermodule clone" 9 | exit 1 10 | fi 11 | done 12 | 13 | module="$1" 14 | shift 15 | revision="$1" 16 | shift 17 | 18 | if [ ! -d $module ] 19 | then 20 | >&2 echo "Can't find worktree for the reference module '$module'" 21 | exit 2 22 | fi 23 | 24 | cmake -DSYNC_TO_MODULE="$module" -DSYNC_TO_BRANCH="$revision" "$@" -P cmake/QtSynchronizeRepo.cmake 25 | -------------------------------------------------------------------------------- /util/normalize/README: -------------------------------------------------------------------------------- 1 | This tool greps through files for SIGNAL() or SLOT() macros and pipes the signals/slots 2 | through QMetaObject::normalizedSignature(). 3 | 4 | Rationale: In connect statements, you'll get a micro-speed update when passing in normalized 5 | signatures for signals and slots. 6 | 7 | Run it without any arguments to see the command line parameters. 8 | 9 | Typical usage on Qt: 10 | 11 | # find all files with non-normalized signal/slot connections 12 | normalize $QTDIR/src 13 | # replace all non-normalized signal/slots 14 | normalize --modify $QTDIR/src 15 | # "git diff" and/or "git gui" to see that everything is OK then submit :) 16 | cd $QTDIR/src 17 | git commit -a -m "Normalize signal/slot signatures" 18 | -------------------------------------------------------------------------------- /git-hooks/gerrit-bot-cleanup: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # Copyright (C) 2015 The Qt Company Ltd. 4 | # Contact: http://www.qt.io/licensing/ 5 | # 6 | # You may use this file under the terms of the 3-clause BSD license. 7 | # See the file LICENSE from this package for details. 8 | # 9 | 10 | # Run this once a day (from a cron job) to keep the sanity bot's 11 | # git clones performing well. 12 | 13 | instance=sanitybot 14 | test -n "$1" && instance=$1 15 | 16 | root=$(git config $instance.gitbasedir) 17 | if test -z "$root"; then 18 | echo "Error: $instance.gitbasedir not set" >&2 19 | exit 1 20 | fi 21 | cd "$root" || exit 22 | find -name '*.git' -type d -prune | while read dir; do ( 23 | # use "git config --global gc.packrefs notbare" to make sure this works 24 | test -d $dir/refs/changes || exit 25 | echo "Entering $dir ..." 26 | cd "$dir" || exit 27 | find refs/changes -mindepth 1 -mtime +10 -delete 28 | git gc 29 | ); done 30 | -------------------------------------------------------------------------------- /git-hooks/git_post_commit_hook: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Copyright (C) 2015 The Qt Company Ltd. 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | # 8 | 9 | # Usage: in every repository you want to have checked: 10 | # cd .git/hooks 11 | # ln -s /path/to/git_post_commit_hook post-commit 12 | # 13 | 14 | makeAbsolute() { 15 | case $1 in 16 | /*) 17 | # already absolute, return it 18 | echo "$1" 19 | ;; 20 | *) 21 | # relative, prepend $2 made absolute 22 | echo `makeAbsolute "$2" "$PWD"`/"$1" | sed 's,/\.$,,' 23 | ;; 24 | esac 25 | } 26 | 27 | me=$0 28 | if test -L "$me"; then 29 | # Try GNU readlink(1) 30 | nme=`readlink -nf "$me" 2>/dev/null` 31 | if test -n "$nme"; then 32 | me=$nme 33 | else 34 | # No GNU readlink(1), so let's try ls -l 35 | base=`dirname "$me"` 36 | me=`ls -l "$me" | sed 's/^.*-> //'` 37 | me=`makeAbsolute "$me" "$base"` 38 | fi 39 | fi 40 | 41 | sha1=${1-HEAD} # just for debugging 42 | exec `dirname "$me"`/sanitize-commit $sha1 strict >&2 43 | -------------------------------------------------------------------------------- /bin/.git-gpush-aliases: -------------------------------------------------------------------------------- 1 | # Global configuration file for the 'git gpush' script. 2 | 3 | # This section contains a mapping of #qt-labs et al. IRC nicks to Gerrit 4 | # usernames, allowing for easy listing of reviewers. 5 | [aliases] 6 | aalpert=416365416c 7 | alcroito=alexandru.croitor 8 | andre=apoenitz 9 | anshaw=andysh 10 | bhughes-mpd=bhughes 11 | bnilsen=bjnilsen 12 | bogdan=taipan 13 | carewolf=allan.jensen 14 | danimo=dmolkent 15 | ddenis=dzyubenk 16 | dfaure=dfaure_kdab 17 | eike=con 18 | fkleint=kleint 19 | fregl=frederik 20 | girishr=girish 21 | guruz=mgoetz2 22 | harryf=fernenge 23 | iieklund=iknd 24 | jaheikki3=janihe 25 | jasmacdon=macadder 26 | jbache=bachewii 27 | jbarron=jabarron 28 | jlind=jolind 29 | jobor=jbornema 30 | khansen=kenthans 31 | kkoehne=kkohne 32 | lars=laknoll 33 | lqi=liaqi 34 | mariusso,mstormo=stormols 35 | msorvig=sorvig 36 | ossi,ossi|tt=buddenha 37 | paulot=tvete 38 | rloehning=rlohning 39 | roberto__=raggi 40 | rohanpm=rohan@mcgovern.id.au 41 | shanek=shkearns 42 | sroedal=rodal 43 | steveire=stephen.kelly 44 | torarne=vestbo 45 | tronical=shausman 46 | 47 | # Keys from this section will be mapped to gpush. git config keys, 48 | # allowing for easy configuration of site-wide defaults. 49 | [config] 50 | addbase = no 51 | -------------------------------------------------------------------------------- /git-hooks/clang-format-pre-commit: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Copyright (C) 2018 The Qt Company Ltd. 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | # 8 | 9 | # Usage: in every repository you want to have checked: 10 | # cd .git/hooks 11 | # ln -s ../../../qtrepotools/git-hooks/clang-format-pre-commit pre-commit 12 | # mklink pre-commit ..\..\..\qtrepotools\git-hooks\clang-format-pre-commit 13 | # 14 | 15 | CLANG_FORMAT=$(which git-clang-format 2>/dev/null) 16 | if [ -z "$CLANG_FORMAT" -a -d "$LLVM_INSTALL_DIR" ]; then 17 | export PATH=$PATH:$LLVM_INSTALL_DIR/bin 18 | CLANG_FORMAT=$(which git-clang-format 2>/dev/null) 19 | fi 20 | 21 | if test -z "$CLANG_FORMAT"; then 22 | echo "Please install clang-format and make sure git-clang-format is in the path." 23 | exit 0 24 | fi 25 | 26 | CLANG_FORMAT_DIFF=`git clang-format -q --diff` 27 | if [ "$CLANG_FORMAT_DIFF" = "no modified files to format" ]; then 28 | exit 0 29 | fi 30 | if test -n "$CLANG_FORMAT_DIFF"; then 31 | echo "clang-format output:" 32 | echo "$CLANG_FORMAT_DIFF" 33 | echo "clang-format suggests changes in the format. You can run:" 34 | echo " git clang-format HEAD~1" 35 | echo "and amend the commit with those changes that you agree with." 36 | exit 0 37 | fi 38 | -------------------------------------------------------------------------------- /bin/git-pasteapply: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # Copyright (C) 2015 The Qt Company Ltd. 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | # 8 | 9 | use strict; 10 | use WWW::Mechanize; 11 | use Config; 12 | 13 | unless (scalar @ARGV) { 14 | print "Usage: git pasteapply [options] [...]\n" . 15 | "Fetches the paste from pastebin.ca numbered and applies\n" . 16 | "Options are passed directly to git am\n" . 17 | "\n" . 18 | "Useful options:\n" . 19 | " -s, --signoff Add Signed-off-by: line to the commit message\n" . 20 | " -3, --3way When the patch does not apply cleanly, fall back on 3-way merge\n" . 21 | " -p Strip elements of the paths (default 1)\n" . 22 | " --whitespace=\n"; 23 | exit 0; 24 | } 25 | my @pastes; 26 | my @args; 27 | 28 | for (@ARGV) { 29 | if (m/^-/) { 30 | push @args, $_; 31 | } else { 32 | push @pastes, $_; 33 | } 34 | } 35 | 36 | open GIT_AM, "|-", "git", "am", @args, "-" 37 | or die "Cannot start git-am: $!"; 38 | 39 | my $www = WWW::Mechanize->new(); 40 | foreach my $paste (@pastes) { 41 | my $url = pastebin_url($paste); 42 | print "Applying $url\n"; 43 | $www->get($url); 44 | my $content = $www->content(); 45 | $content =~ s/\r\n/\n/g; 46 | print GIT_AM $content; 47 | } 48 | 49 | close GIT_AM; 50 | exit $?; 51 | 52 | sub pastebin_url($) { 53 | my $arg = $_[0]; 54 | return "http://pastebin.ca/raw/$3" 55 | if ($arg =~ m,^(https?://)?(.*\.)?pastebin\.ca/([0-9]+),); 56 | return "http://pastebin.com/download.php?i=$3" 57 | if ($arg =~ m,^(https?://)?(.*\.)?pastebin.com/([a-zA-Z0-9]+)$,); 58 | 59 | return $arg if ($arg =~ m,^http://,); # Assume it's plain text... 60 | 61 | # No http:// prefix 62 | return "http://pastebin.ca/raw/$arg" if ($ENV{PASTEBIN} =~ /pastebin\.ca/); 63 | return "http://pastebin.com/download.php?i=$arg"; # Fallback, assume pastebin.com 64 | } 65 | -------------------------------------------------------------------------------- /git-hooks/qt-codereview-mirror: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (C) 2015 The Qt Company Ltd. 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | # 8 | 9 | set -e # exit on any error 10 | 11 | # FIXME: use git config for that 12 | MIRROR_ROOT=/data/repos 13 | GIT_BIN=/usr/bin/git 14 | UPDATE_LOCK=$HOME/.update_codereview_lock 15 | 16 | # don't retry; pronounce 1h+ old locks as dead 17 | lockfile -r 0 -l 3600 $UPDATE_LOCK 18 | trap 'rm -f $UPDATE_LOCK' EXIT 19 | 20 | cd $MIRROR_ROOT 21 | 22 | # first mark all mirrors as deletable 23 | for i in `find -type d -name '*.git' -prune | cut -c3-`; do 24 | touch $i/delete-me 25 | done 26 | 27 | # then get a current list of projects 28 | rawproj=`ssh -p 29418 codereview.qt-project.org gerrit ls-projects` 29 | allproj=`echo "$rawproj" | grep -v '^\{graveyard\}/'` 30 | # this test ensures that the list is complete, identified by the trailing graveyard projects 31 | if test x"$allproj" = x"$rawproj"; then 32 | echo "List of projects from gerrit is incomplete." >&2 33 | exit 1 34 | fi 35 | 36 | # then create the respective mirrors 37 | for i in `echo "$allproj" | grep -v '^All-'`; do ( 38 | mkdir -p $i.git 39 | cd $i.git 40 | rm -f delete-me 41 | test -f config || $GIT_BIN init --bare 42 | $GIT_BIN config remote.origin.fetch '+refs/heads/*:refs/heads/*' heads 43 | $GIT_BIN config remote.origin.fetch '+refs/staging/*:refs/staging/*' staging 44 | $GIT_BIN config remote.origin.url "ssh://codereview.qt-project.org:29418/$i.git" 45 | ); done 46 | 47 | # then update all active mirrors and purge the orphaned ones 48 | for i in `find -type d -name '*.git' -prune | cut -c3-`; do ( 49 | if test -f $i/delete-me; then 50 | rm -rf $i 51 | else 52 | cd $i 53 | if ! test -s HEAD; then 54 | echo "Note: HEAD of $i is bogus." >&2 55 | echo "ref: refs/heads/master" > HEAD 56 | fi 57 | $GIT_BIN remote show origin | sed -n 's,^ HEAD branch: ,ref: refs/heads/,p' > new-HEAD 58 | test -s new-HEAD && mv new-HEAD HEAD || echo "Cannot obtain HEAD for $i" >&2 59 | $GIT_BIN fetch -p -q -u origin 60 | # $GIT_BIN gc 61 | chown -R --reference $MIRROR_ROOT . 62 | fi 63 | ); done 64 | -------------------------------------------------------------------------------- /bin/git-edit-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (C) 2015 The Qt Company Ltd. 3 | # Contact: http://www.qt.io/licensing/ 4 | # 5 | # You may use this file under the terms of the 3-clause BSD license. 6 | # See the file LICENSE from this package for details. 7 | # 8 | 9 | if test "x$EDITOR" = "x$0" ; then 10 | # The script was launched as an $EDITOR from git rebase -i. 11 | # Modify the pick line to an edit line and just exit. 12 | sed -e '1,$s/^pick '"$SHORT_SHA1 /edit $SHORT_SHA1 /" < "$1" >/tmp/editcommit$$ 13 | mv /tmp/editcommit$$ "$1" 14 | exit 0 15 | fi 16 | 17 | # Extract the SHA-1 from the command-line and validate it. 18 | MODE=message 19 | if test "x$1" = "x--source" ; then 20 | MODE=source 21 | shift 22 | fi 23 | if test -z "$1" ; then 24 | echo "Usage: $0 [--source] sha-1" 25 | echo "" 26 | echo "git-edit-commit allows you to edit a git commit to change" 27 | echo "the commit message, even if it is several hundred changes back." 28 | echo "It is equivalent to 'git rebase -i', but slightly safer." 29 | echo "" 30 | echo "The --source option specifies that you want to edit the source" 31 | echo "as well as the commit message. This starts a 'git rebase -i'" 32 | echo "which you will then have to perform manually." 33 | exit 1 34 | fi 35 | SHA1="$1" 36 | if ! git merge-base "$SHA1" HEAD >/dev/null 2>/dev/null ; then 37 | echo "$SHA1 does not appear to be in the current branch" 38 | exit 1 39 | fi 40 | 41 | # Get the current branch. 42 | CURRENTBRANCH=`git branch | grep '^\*' | awk '{print $2}' -` 43 | if test "$CURRENTBRANCH" = "(no" ; then 44 | echo "Not on a valid branch - please check out the correct branch" 45 | exit 1 46 | fi 47 | 48 | if test -n "`git diff HEAD`" ; then 49 | echo "You have uncommited changes. Please commit or stash them first." >&2 50 | exit 1 51 | fi 52 | 53 | # Replace aliases like HEAD and HEAD^ with the actual SHA-1. 54 | SHA1=`git rev-parse "$SHA1"` 55 | SHORT_SHA1=`git rev-parse --short "$SHA1"` 56 | 57 | # Check that the change hasn't already been pushed. 58 | COMMON=`git merge-base "$SHA1" "origin/$CURRENTBRANCH" 2>/dev/null` 59 | if test "$COMMON" = "$SHA1" ; then 60 | echo "$SHA1 has already been pushed - cannot edit it" 61 | exit 1 62 | fi 63 | 64 | EDITOR="$0" 65 | export EDITOR 66 | export SHORT_SHA1 67 | if ! git rebase --preserve-merges -i "${SHA1}^" ; then 68 | exit 1 69 | fi 70 | unset EDITOR 71 | 72 | # If doing a source rebase, then just start it up at the right point. 73 | if test "$MODE" = "source" ; then 74 | echo "To make the source for your chosen commit editable, run:" 75 | echo "" 76 | echo " git reset HEAD^" 77 | echo "" 78 | exit 0 79 | fi 80 | 81 | git commit --amend 82 | 83 | git rebase --continue 84 | 85 | exit 0 86 | -------------------------------------------------------------------------------- /bin/git-gpull: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # Copyright (C) 2018 The Qt Company Ltd. 3 | # Copyright (C) 2019 Oswald Buddenhagen 4 | # Contact: http://www.qt.io/licensing/ 5 | # 6 | # You may use this file under the terms of the 3-clause BSD license. 7 | # See the file LICENSE from this package for details. 8 | # 9 | 10 | use v5.14; 11 | use strict; 12 | use warnings; 13 | no warnings qw(io); 14 | 15 | our ($script, $script_path); 16 | BEGIN { 17 | use Cwd qw(abs_path); 18 | if ($^O eq "msys") { 19 | $0 =~ s,\\,/,g; 20 | $0 =~ s,^(.):/,/$1/,g; 21 | } 22 | $script_path = $script = abs_path($0); 23 | $script_path =~ s,/[^/]+$,,; 24 | unshift @INC, $script_path; 25 | } 26 | use git_gpush; 27 | 28 | sub usage() 29 | { 30 | print << "EOM"; 31 | Usage: 32 | git gpull [-- ] 33 | 34 | This command should be used instead of 'git pull --rebase' 35 | when git-gpush is being used. 36 | 37 | In addition to updating the local branch with upstream, it 38 | will also call git-ggc at regular intervals (default 30 days, 39 | configurable with gpush.gcInterval). 40 | 41 | Copyright: 42 | Copyright (C) 2018 The Qt Company Ltd. 43 | Copyright (C) 2019 Oswald Buddenhagen 44 | Contact: http://www.qt.io/licensing/ 45 | 46 | License: 47 | You may use this file under the terms of the 3-clause BSD license. 48 | EOM 49 | } 50 | 51 | while (@ARGV) { 52 | my $arg = $ARGV[0]; 53 | if ($arg eq "--debug") { 54 | $debug = 1; 55 | shift @ARGV; 56 | } elsif ($arg eq "-n" || $arg eq "--dry-run") { 57 | $dry_run = 1; 58 | shift @ARGV; 59 | } elsif ($arg eq "-?" || $arg eq "--?" || $arg eq "-h" || $arg eq "--help") { 60 | usage(); 61 | exit; 62 | } elsif ($arg eq "--") { 63 | shift @ARGV; 64 | last; 65 | } else { 66 | fail("Unrecognized command line argument '$arg'.\n"); 67 | } 68 | } 69 | 70 | goto_gitdir(); 71 | load_config(); 72 | my $gc_interval = git_config('gpush.gcinterval', 30); 73 | if ($gc_interval != 0) { 74 | load_state_file(); # No load_state(), and thus no load_refs(). 75 | my $next_gc = $last_gc + $gc_interval * 24 * 60 * 60; 76 | if ($next_gc < time()) { 77 | # It's seems backwards that we do this *before* pulling (which 78 | # is likely to release more garbage), but chaining to the pull 79 | # would be unreliable (the post-rewrite hook is not invoked when 80 | # no local commits remain, and relying on the user to remember 81 | # to use gpull instead of rebase with --continue is suboptimal). 82 | # In the big picture the delay doesn't matter, as the gc interval 83 | # is likely much bigger than the pull frequency anyway. 84 | run_process(FWD_OUTPUT | DRY_RUN, $script_path."/git-ggc"); 85 | } else { 86 | printf("Next gc date %d not reached yet (now is %d).\n", $next_gc, time()) 87 | if ($debug); 88 | } 89 | } else { 90 | print "gpull auto-gc is disabled.\n" if ($debug); 91 | } 92 | 93 | exec("git", "pull", "--rebase", @ARGV) or fail("Cannot exec git: $!\n"); 94 | -------------------------------------------------------------------------------- /git-hooks/gerrit-bot-extras: -------------------------------------------------------------------------------- 1 | #! /usr/bin/perl 2 | 3 | # Copyright (C) 2017 The Qt Company Ltd. 4 | # Contact: http://www.qt.io/licensing/ 5 | # 6 | # You may use this file under the terms of the 3-clause BSD license. 7 | # See the file LICENSE from this package for details. 8 | # 9 | 10 | use strict; 11 | use warnings; 12 | use JSON; 13 | 14 | # Usage: $0 [instance] 15 | # - default instance is 'sanitybot' 16 | # - configure git: git config --global .