From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Jean-Marie Lemetayer <jeanmarie.lemetayer@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [RFC] new subcommand: git sync
Date: Fri, 26 Feb 2021 16:25:09 +0100 [thread overview]
Message-ID: <87tupy7sx6.fsf@evledraar.gmail.com> (raw)
In-Reply-To: <CAAdc0hwmR7BF53_66LNaceLrkFPDphU-y2sLEGB_1YoR5ErQsg@mail.gmail.com>
On Fri, Feb 26 2021, Jean-Marie Lemetayer wrote:
> Hi folks,
>
> I created a new "git sync" sub-command a few months ago to deal with the pull
> request workflow.
>
> Its goals are to:
> - keep all configured branches synchronized with the remotes (--set-upstream)
> - do not touch your wip feature branches (which has diverged from upstream)
> - prune the remotes
>
> As I use it on a daily basis, to synchronize the remotes and then be able to
> quickly rebase my pull requests. I think it's worth sharing. What do you think?
>
> For now it is a simple shell script available here:
> https://github.com/jmlemetayer/one-time-setup/blob/main/git-sync
>
> If you think it's a good idea, I'll propose a series of patches with the new
> sub-command, the manual page and the associated tests.
Have you seen 'git branch -v' and 'git branch -v --format=*'? There
seems to be a high amount of overlap between this wrapper you've written
and it.
I suspect most of what you have here could be turned into an %(if:*)
directive where you emit the pull/push command as appropriate.
If you search the internet for "git-sync" there's dozens of such command
(and I've personally observed at least two of them being written by
co-workers in real time, not sure if either of those is in the Google
results).
So I think there's probably a worthwhile problem to be solved here that
could be turned into patches to git.git, something between "git
[clone|push] --mirror" and "git branch -v".
I don't think there's any interest in getting new shellscript built-ins
in the future. We've been actively migrating away from those.
But most of the logic in your script is just calling the ref-filter.c
API behind the scenes.
B.t.w. you can probably speed up & simplify your script a lot by making
use of IFS="" in the shell and not calling N for-each-ref commands when
it seems to me that one invocation would do. Just dump the N fields you
need split on some token, and split on that token in your loop.
next prev parent reply other threads:[~2021-02-26 15:25 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-26 9:08 [RFC] new subcommand: git sync Jean-Marie Lemetayer
2021-02-26 15:25 ` Ævar Arnfjörð Bjarmason [this message]
2021-02-26 16:42 ` Randall S. Becker
2021-03-01 9:48 ` Jean-Marie Lemetayer
2021-03-01 13:55 ` Randall S. Becker
2021-02-26 22:31 ` Junio C Hamano
2021-02-26 23:20 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87tupy7sx6.fsf@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=jeanmarie.lemetayer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).