From: Boaz Harrosh <bharrosh@panasas.com>
To: Leevi Graham <info@leevigraham.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: Help planning a git repo layout
Date: Thu, 18 Sep 2008 16:25:08 +0300 [thread overview]
Message-ID: <48D256B4.90006@panasas.com> (raw)
In-Reply-To: <076A189D-66E9-4683-9C24-1C0A7A451892@leevigraham.com>
Leevi Graham wrote:
> 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
>
> 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
>>
>
prev parent reply other threads:[~2008-09-18 13:26 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-18 8:37 Help planning a git repo layout Leevi Graham
2008-09-18 11:48 ` Boaz Harrosh
[not found] ` <076A189D-66E9-4683-9C24-1C0A7A451892@leevigraham.com>
2008-09-18 13:25 ` Boaz Harrosh [this message]
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=48D256B4.90006@panasas.com \
--to=bharrosh@panasas.com \
--cc=git@vger.kernel.org \
--cc=info@leevigraham.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).