git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[ITCH] Redundant rebuilds when rebasing outdated branch

From
Ramkumar Ramachandra <r@artagnon.com>
Date
Apr 1, 2025, 10:54 UTC
Message-ID
<4f142817-49a7-4079-b7b1-e54de36a6242@app.fastmail.com>
Hi,
I've noticed a common pattern in my everyday work, and thought I should ask if I'm doing something stupid. I work on upstream LLVM, and develop patches on different branches based off 'main'. Due to the nature of our collaboration, I often need to update 'main' and rebase patches, when some patches land. As a consequence, different patches are based on different points of 'main', and I find myself checking out an outdated branch, rebasing it on top of 'main' (which often doesn't result in conflicts), and this triggers a rebuild because the timestamps changed. Since LLVM is a huge project, I use ccache to speed up my builds, but this doesn't solve the problem of redundant rebuilds, since CMake often needs to be reconfigured, and several built artifacts are generated using home-grown tools.
I think it would be preferable to have something like 'git rebase-checkout', which in principle, creates a new branch based off 'main', cherry-picks commits off the outdated branch, and renames the fresh branch into the outdated branch's name. It should be possible to script this using the existing plumbing, but I was wondering if something like this would be useful to have in core git?
Thanks.
Ram
Next: brian m. carlson
Message 1 of 2 in “[ITCH] Redundant rebuilds when rebasing outdated branch”
  1. Ramkumar RamachandraApr 1, 2025
  2. brian m. carlsonApr 1, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.