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

Re: Help planning a git repo layout

From
Boaz Harrosh <bharrosh@panasas.com>
Date
Sep 18, 2008, 13:25 UTC
Message-ID
<48D256B4.90006@panasas.com>
In-Reply-To
<076A189D-66E9-4683-9C24-1C0A7A451892@leevigraham.com>
Leevi Graham wrote:
Show 21 quoted lines
> Thanks for the advice Boaz,
> 
> So to clarify:
> 
> Create a new git repo in the root of the EE install. This will be the  
> master branch.
> 
> Then create branches (from the master branch) for each addon (product  
> branches) that only shows the files that relate to that addon. How do  
> I filter out the files I don't want to see?
> 
> Work on each product branch independently merging as I go.
> 
> Occasionally merge everything back into the master branch so I know  
> that there are no conflicts with the product branches.
> 
> I think I have it pretty clear in my head.
> 
> Thanks for your patience and help
> 
> Leevi

NP. Please don't top-post when on a mailing list. It's good when chatting with individuals, but it is a mess, for people that need to view it on a mailing list archives.

Basically yes. You start with master and commit some basic/common files like: $ git add .gitignore; git-commit ... $ git tag BEGIN then create a branch $ git checkout -b foo selectively add files $ git add foo/ include/foo doc/foo $ git-commit You might want to add all these in a set of patches for readability. Then $ git-checkout -b bar BEGIN Note that all foo's files vanished $ git add bar/ include/bar ... $ git-commit ... and so on...

Then at the end $ git-checkout master Note that all files have vanished $ git-merge foo $ git-merge bar All the files are back

then you can clone locally to trees, one with foo checked-out, one with bar, if you need to commit to both at once. Then push and merge at master

Good luck Boaz

Show 115 quoted lines
> 
> On 18/09/2008, at 9:48 PM, Boaz Harrosh wrote:
> 
>> Leevi Graham wrote:
>>> Hey everyone,
>>>
>>> I'm after some advice on how to layout my git repo(s).
>>>
>>> Here's my current situation:
>>>
>>> I am developing 10 different ExpressionEngine addons that all live
>>> inside one ExpressionEngine installation. A simplified EE  
>>> installation
>>> has the following folders (all cruft removed):
>>>
>>> |-root
>>>   |-ee-admin
>>>   |---extensions
>>>   |---language
>>>   |---modules
>>>   |-themes
>>>   |---site_themes
>>>
>>> My addons are a combination of files located in the extensions,
>>> language, modules and themes folders. An simple extension may look  
>>> like:
>>>
>>> |-root
>>>   |-ee-admin
>>>   |---extensions
>>>   |-----ext.lg_data_matrix.php
>>>   |---language
>>>   |-----english
>>>   |---------lang.lg_data_matrix.php
>>>   |---modules
>>>   |-themes
>>>   |---site_themes
>>>
>>> The extension above contains two files:
>>>
>>> - /ee-admin/extensions/ext.lg_data_matrix.php
>>> - /ee-admin/language/english/ext.lg_data_matrix.php
>>>
>>> I will be developing multiple extensions in the one EE install to  
>>> make
>>> sure they all work with the core and do not conflict with each other.
>>> So my directory will have more than one addon in it:
>>>
>>> |-root
>>>   |-ee-admin
>>>   |---extensions
>>>   |-----ext.lg_data_matrix.php
>>>   |-----ext.lg_minify.php
>>>   |-----ext.lg_better_meta_ext.php
>>>   |---language
>>>   |-----english
>>>   |---------lang.lg_data_matrix.php
>>>   |---------lang.lg_minify.php
>>>   |---------lang.lg_better_meta.php
>>>   |---------lang.lg_better_meta_ext.php
>>>   |---modules
>>>   |-----lg_better_meta
>>>   |---------mcp.lg_better_meta.php
>>>   |---------mod.lg_better_meta.php
>>>   |-themes
>>>   |---site_themes
>>>
>>> My problem comes when I want to tag and release an individual addon
>>> which is a collection of files in multiple folders.
>>>
>>> Just say I wanted to tag and release LG Better Meta. Ideally I would
>>> like to export a folder structure like:
>>>
>>> - /ee-admin/extensions/ext.lg_better_meta.php
>>> - /ee-admin/language/english/ext.lg_better_meta.php
>>> - /ee-admin/language/english/ext.lg_better_meta_ext.php
>>> - /ee-admin/modules/lg_better_meta/mcp.lg_better_meta.php
>>> - /ee-admin/modules/lg_better_meta/mod.lg_better_meta.php
>>>
>>> I would also like to give people the ability to clone each of the
>>> addons either as a full repo or part thereof.
>>>
>>> Any advice would be greatly appreciated.
>>>
>>> Cheers Leevi
>>>
>> Have branches with individual views of files like the above
>> LG-Better-Meta starts from a clean tree and only adds
>> - /ee-admin/extensions/ext.lg_better_meta.php
>> - /ee-admin/language/english/ext.lg_better_meta.php
>> - /ee-admin/language/english/ext.lg_better_meta_ext.php
>> - /ee-admin/modules/lg_better_meta/mcp.lg_better_meta.php
>> - /ee-admin/modules/lg_better_meta/mod.lg_better_meta.php
>>
>> Other branches with other individual views of files.
>> Commits will have to be on the individual branches.
>> Lets call these product-branches
>>
>> Then you have integration branches that merge from time
>> to time the product-branches, master been the merge of
>> all.
>>
>> Users that only need a single product-branch will checkout
>> that one. Users needing all will checkout master.
>>
>> For your convenience, you can locally clone the master
>> git, and have checkouts of single product-branches so
>> you can commit patches in parallel. Then push and merge.
>>
>> Don't forget to give all empty branches at least one
>> common ancestor before adding files. Like with .gitignore
>>
>> Boaz
>>
> 
Previous: Boaz Harrosh
Message 3 of 3 in “Help planning a git repo layout”
  1. Leevi GrahamSep 18, 2008
  2. Boaz HarroshSep 18, 2008
  3. Boaz HarroshSep 18, 2008

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.