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 >> > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html