On Aug 9, 2016, at 1:25 PM, Ali Al-Shabibi <
ali.al-...@onlab.us> wrote:
>
>> 3. We automate the process of updating submodules to match branch head versions
>
> This can be done in gerrit but we decided that we would not want that because nasty things could happen behind a developers back.
That's the tradeoff - automation and possible automated error vs. manual process and possible user error.
A goal of reducing error in general and human interaction at the same time seems like the right course of action, as it has benefits in either case.
>> 4. We do away with submodules and unified repos and have scripts that handle the checkouts, which could then be programmatically defined by tag/branch/etc.
>
> This scares me. First, it creates confusion as to which metadata (.git) applies to which repo.
I'm not quite clear on what you mean by this - each repo will retain it's own metadata, correct? Or is this being stripped out somehow in the current scenario?
> Second, how does a developer/user know where one repo ends and the other starts.
A directory per repo seems like a fairly straightforward mapping.
> Finally, managing an extra layer of scripting for this seems unnecessary given that there a many tools out there (repo, submodule, subtree, etc.)
repo is just another script, and after reading it, appears to have a lot of Android-specific stuff in it like their certificates, etc. that we don't need.
I'm not trying to be "Not Invented Here" on this - adding even more required tooling to make a build seems like poor precedent to set. What gets checked out is two elements:
- The repo to use
- The commit/branch within that repo
All these systems are variants on that basic concept with a variety of limitations.
I'm leaning toward #3 (continuing to use submodules, automation), with work to make that less error prone and reduce human interaction to a minimum. Maybe everything up until the application of final release tags is made automatic?
- Zack