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

Re: Workflow for templates?

From
JWJosef Wolf <jw@raven.inka.de>
Date
Oct 31, 2012, 10:44 UTC
Message-ID
<20121031104403.GC28437@raven.wolf.lan>
In-Reply-To
<3190de06-2eaf-4a39-91aa-9cc34c20fc8e@zcs>
On Sat, Oct 27, 2012 at 08:45:45PM +0200, Enrico Weigelt wrote:
Show 17 quoted lines
> I'd suggest a 3 level branch hierachy (IOW: the lower level
> is rebased ontop of the next higher level):
> 
> * #0: upstream branch
> * #1: generic local maintenance branch
> * #2: per-instance cutomization branches
> 
> Normal additions go to the lowest level #2. When you've got
> some generic commit, you propagate it to the next level
> (cherry-pick) and rebase layer #2 ontop of it.
> Now you can send your layer #1 to upstream for integration.
> 
> When upstream updated his branch, you simply rebase #1
> ontop of it, do your checks etc, then proceed to rebasing #3.
> 
> You could also introduce more intermediate layers (eg when you've
> got different groups of similar instance that share certain changes)
Thanks for the suggestion, Enrico!

I am somewhat unsure whether it would work this way. After all, there seems to be an unbreakable rule with git: never rebase published branches.

Thus, once I have published my work to other people who also need to work on the same localizations as I do, I have no longer the option of rebasing to get rid of the localizations and put the generic template stuff for upstream.

I guess, my concern is because I have not yet fully understood the problems of rebasing, and how to recover from them.

Maybe I should try to explain the problem in terms of repository hierarchy. Let's assume, there is this hierarchy of repositories:

upstream: central repository, containing the generic template
foo-site: repository for site foo. Here we have localizations for a specific
          administrative entity named foo (say, google).
          This is where clones for production are made from, and production
          boxes pull from here to be kept up-to-date.
foo-prodA: A clone of foo-site, put in production and pulling from a specific
           branch on foo-site to receive released, blessed updates.
foo-prodB: Similar to foo-prodA, but on another box.
           
foo-devA: A clone of foo-site to make development, releases, and whatever for
          foo.
foo-devB: One more clone of foo-site, Developer B is working here.

Then, we might have more administrative entities: bar-site, bar-prodA, bar-prodB, bar-devA, bar-devB, for example. This might be Microsoft, for example.

Further, foo-devA might be the same person as bar-devA.

So when foo-devA pulls from foo-devB, then foo-devB will create problems when he rebases after that pull.

I think I have some kind of misunderstanding here, but I just can't figure what it is.

Maybe I should try to explain the problem in yet other words:

What I am trying to achieve, is to extend the workflow from development to deployment across multiple administrative entities. As a picture:

  upstream     (templates only).
     ^
     |
     v
  development  (configured, might contain experimental changes)
     ^
     |
     v
  deployment   (configured)

This workflow should not stop at administrative borders. Just replace foo by google and bar by Microsoft to get an idea of what I am trying to achieve.

Previous: Enrico WeigeltNext: Josef Wolf
Message 3 of 12 in “Workflow for templates?”
  1. Josef WolfOct 25, 2012
  2. Enrico WeigeltOct 27, 2012
  3. Josef WolfOct 31, 2012
  4. Josef WolfNov 6, 2012
  5. Pyeron, Jason J CTR (US)Nov 6, 2012
  6. Josef WolfNov 6, 2012
  7. Holger Hellmuth (IKS)Nov 7, 2012
  8. Enrico WeigeltNov 10, 2012
  9. Enrico WeigeltNov 10, 2012
  10. Philip OakleyNov 10, 2012
  11. Enrico WeigeltNov 10, 2012
  12. Philip OakleyNov 10, 2012

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.