commit:     796958efa2be317ea6f412f6299c5ed45c1373b3
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 19 15:12:54 2022 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon Nov 21 17:47:48 2022 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/pkgdev.git/commit/?id=796958ef

push: add option `--pull`

Add a new option `--pull` to `pkgdev push` to pull all changes before
starting the scan & push. This is very useful for most normal usage for
developers.

This can be also set in config, but adding the line:

    push.pull =

Resolves: https://github.com/pkgcore/pkgdev/issues/102
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 data/share/bash-completion/completions/pkgdev | 1 +
 data/share/zsh/site-functions/_pkgdev         | 1 +
 src/pkgdev/scripts/pkgdev_push.py             | 6 ++++++
 3 files changed, 8 insertions(+)

diff --git a/data/share/bash-completion/completions/pkgdev 
b/data/share/bash-completion/completions/pkgdev
index 1408292..9094ab1 100644
--- a/data/share/bash-completion/completions/pkgdev
+++ b/data/share/bash-completion/completions/pkgdev
@@ -134,6 +134,7 @@ _pkgdev() {
             subcmd_options="
                 -A --ask
                 -n --dry-run
+                --pull
             "
 
             COMPREPLY+=($(compgen -W "${subcmd_options}" -- "${cur}"))

diff --git a/data/share/zsh/site-functions/_pkgdev 
b/data/share/zsh/site-functions/_pkgdev
index f2c95bc..32b927f 100644
--- a/data/share/zsh/site-functions/_pkgdev
+++ b/data/share/zsh/site-functions/_pkgdev
@@ -77,6 +77,7 @@ case $state in
           $base_options \
           {'(--ask)-A','(-A)--ask'}'[confirm pushing commits with QA errors]' \
           {'(--dry-run)-n','(-n)--dry-run'}'[pretend to push commits]' \
+          '--pull[run git pull --rebase before scanning]' \
           && ret=0
         ;;
       (showkw)

diff --git a/src/pkgdev/scripts/pkgdev_push.py 
b/src/pkgdev/scripts/pkgdev_push.py
index d33f8da..facba8d 100644
--- a/src/pkgdev/scripts/pkgdev_push.py
+++ b/src/pkgdev/scripts/pkgdev_push.py
@@ -32,6 +32,9 @@ push_opts.add_argument(
 push_opts.add_argument(
     '-n', '--dry-run', action='store_true',
     help='pretend to push the commits')
+push_opts.add_argument(
+    '--pull', action='store_true',
+    help='run `git pull --rebase` before scanning')
 
 
 @push.bind_final_check
@@ -45,6 +48,9 @@ def _commit_validate(parser, namespace):
 
 @push.bind_main_func
 def _push(options, out, err):
+    if options.pull:
+        git.run('pull', '--rebase', cwd=options.repo.location)
+
     # scan commits for QA issues
     pipe = scan(options.scan_args)
     with reporters.FancyReporter(out) as reporter:

Reply via email to