On 17 June 2015 at 14:21, Gao, Liming <liming....@intel.com> wrote: > Ard: > Subtree model requires to be kept in sync by automation. And, Subtree Repo > is still not upstream repo. Developer is required to move his change to > upstream repo and push it. >
Indeed. Btw you never responded to my question below: >> For submitting your patches, note that git format-patch supports src-prefix >> and dst-prefix options, which perhaps we may use to convert your subtree >> patches to core patches? I haven't tried it myself but it looks promising. >> > Yes. We can have multiple Repos like you. EDKII, SctPkg, InternalPkgs. > Developer needs to manually combine them together. For example, to build > SctPkg, you need EDKII Pkg. If you use submodule to link EDKII, you require > single package Repo. I am thinking another solution. Could I merge EDKII Repo > and SctPkg Repo in my local? If so, I will have the full code bases. > > -----Original Message----- > From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] > Sent: Wednesday, June 17, 2015 1:53 AM > To: edk2-devel@lists.sourceforge.net; Gao, Liming > Subject: Re: [edk2] Proposal of Git Repo Layout for EDKII project > > On 16 June 2015 at 19:39, Olivier Martin <olivier.mar...@arm.com> wrote: >> Most EDK2 users uses MS Windows host machine & GUI tool. I am not sure 'git >> subtree' that is not part of the default git tool fits with the EDK2 >> community requirements. >> > > That may be true, but the suggestion is not for every user to use git subtree > individually, but to maintain a number of subtree mirrors that are kept in > sync by automation. That way, you can compose your own workspace with various > EDK2 packages as before. The only unsolved issue is how to convert your > patches against those subtrees into patches that can be applied to the core > upstream version. > >> Having a main/unique EDK2 repository is not incompatible with the inclusion >> of third-party/private components in your development environment. >> In my working tree, I have: >> - EDK2 as a git repository >> - SctPkg as a git repository >> - Some private platforms as separate git repository If really you want >> to get a set of EDK2 and third-party/private components nothing prevent you >> to create a branch based on 'master' that would add your external components >> as git submodules. >> > > Perhaps Liming can comment on whether or not his use case is comparable? > >> -----Original Message----- >> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] >> Sent: 08 June 2015 10:09 >> To: edk2-devel@lists.sourceforge.net >> Subject: Re: [edk2] Proposal of Git Repo Layout for EDKII project >> >> On 5 June 2015 at 18:59, Gao, Liming <liming....@intel.com> wrote: >>> Thanks for your all comments. Those gives me more concept of Git. >>> >>> I want to clarify my usage model. My daily work bases on internal project >>> to develop features for external and internal packages both. So, I expect I >>> have one git repo (one GIT URL) to get all required packages (internal and >>> external), then base on it to pull the update, create patch, review patch, >>> and push my changes for internal and external. I also hope I can use Git >>> advantage usage for EDKII and my internal project. But, I find no obvious >>> way to support this usage. Submodule is a little complex. Repo tool is not >>> easy to be used in Windows. And, even if we use Repo tool, we still need to >>> separate internal Package as single Repo, then combine them one by one into >>> EDKII as my internal project. git filter-branch can split Package from >>> EDKII Repo. But, this ways need script to update code. And, I am not sure >>> whether I can base on filter-branch to push my changes. After compare them, >>> I think submodule is the simplest way to support my usage model. So, I >>> propose to separate Package as Repo, keep Package Repo as upstream Repo and >>> EDKII Repo as read only. If Package Repo is read only, EDKII Repo is >>> upstream Repo, it will bring a little burden for me. But, it is also an >>> acceptable solution. >>> >> >> Git submodules may be the simplest way to support /your/ particular use >> case, but I think the pushback in this thread against it comes mostly from >> people who have actually used git submodules, so I suggest we take those >> comments seriously. >> >> It seems that you are already in the situation where you need to push your >> changes to multiple repositories at the same time, and those repositories >> are not tightly coupled. I don't think this applies to many of us, so it >> doesn't seem fair to me to force others to adopt that mode of development >> while not strictly necessary. >> >> I think the subtree approach is reasonable, where we have a single >> read-write core EDK2 repo (probably just the existing one at GitHub) and use >> some automation to keep a collection of subtree mirrors in sync. As Roy has >> confirmed, git subtree is repeatable, i.e., it produces the exact same >> commit IDs when invoked several times, so the subtree repositories would be >> stable as well. >> >> For submitting your patches, note that git format-patch supports src-prefix >> and dst-prefix options, which perhaps we may use to convert your subtree >> patches to core patches? I haven't tried it myself but it looks promising. >> >>> Last, I don't understand why GIT not smoothly supports my usage model, >>> because it is just designed for Linux project? >>> >> >> Git was obviously not designed for maintaining a mix of open and closed >> source software. Mind you, I don't think there is anything wrong with that, >> it just wasn't on any of the Git developers' radar. >> >> -- >> Ard. >> >> >> >>> -----Original Message----- >>> From: Roy Franz [mailto:roy.fr...@linaro.org] >>> Sent: Friday, June 5, 2015 12:34 AM >>> To: edk2-devel@lists.sourceforge.net >>> Subject: Re: [edk2] Proposal of Git Repo Layout for EDKII project >>> >>> On Thu, Jun 4, 2015 at 8:58 AM, Brian J. Johnson <bjohn...@sgi.com> wrote: >>>> On 06/03/2015 08:53 PM, Jordan Justen wrote: >>>>> Yet another idea that I've considered is trying to leverage git >>>>> subtree. My idea was that the unified EDK II would remain the main >>>>> upstream. >>>>> >>>>> I would setup an automated process to split each package off using >>>>>git subtree, and push the separate repos. >>>>>... >>>>> >>>>> I never got the time to investigate if git subtree could work as >>>>> required, but this text from the help page seems promising: >>>>> >>>>> " >>>>> split >>>>> >>>>> Extract a new, synthetic project history from the history of the >>>>> <prefix> subtree. The new history includes only the commits >>>>> (including merges) that affected <prefix>, and each of those >>>>> commits now has the contents of <prefix> at the root of the >>>>> project instead of in a subdirectory. Thus, the newly created >>>>> history is suitable for export as a separate git repository. >>>>> >>>> >>>> I experimented with git subtree a couple years ago for managing a >>>> project composed of multiple sub-projects. I'm trying to remember >>>> what I thought about it.... It works, but it tends to produce a >>>> confusing git log, IIRC. And if you're going to push to the >>>> subtrees, you should be careful to limit each commit to files in a >>>> single (sub)tree. That requires developer discipline, or a good >>>> pre-commit hook. >>>> >>>> But for extracting packages into separate read-only repos, it should >>>> be perfect. Note that in that mode, it's very similar (or >>>> completely >>>> equivalent?) to "git filter-branch --subdirectory-filter". >>>> -- >>>> >>>> Brian J. Johnson >>>> >>> >>> If git subtree can be used to create and maintain read-only "modules" based >>> on the single master git repo, this sounds like a good solution. This >>> keeps the single git repo as the master, and avoids the complications of >>> commits that cross module boundaries in the sub-module case. If git >>> subtree can support this usage model, would read-only git subtrees for the >>> modules meet the requirements for those who want to use "modules" >>> individually? Note that only the upstream subtree repos are read-only, >>> various other groups could still have internal read/write repos cloned from >>> those, it's just that changes pushed upstream would need to go through the >>> master git tree. >>> If this is a generally acceptable plan, then I guess a next step is to >>> verify that git subtree works as desired. >>> >>> Roy >>> >>> >>>> -------------------------------------------------------------------- >>>> >>>> My statements are my own, are not authorized by SGI, and do not >>>> necessarily represent SGI’s positions. >>>> >>>> -------------------------------------------------------------------- >>>> -- >>>> -------- _______________________________________________ >>>> edk2-devel mailing list >>>> edk2-devel@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/edk2-devel >>> >>> --------------------------------------------------------------------- >>> --------- _______________________________________________ >>> edk2-devel mailing list >>> edk2-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/edk2-devel >>> --------------------------------------------------------------------- >>> --------- _______________________________________________ >>> edk2-devel mailing list >>> edk2-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/edk2-devel >> >> ---------------------------------------------------------------------- >> -------- _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/edk2-devel >> >> -- IMPORTANT NOTICE: The contents of this email and any attachments are >> confidential and may also be privileged. If you are not the intended >> recipient, please notify the sender immediately and do not disclose the >> contents to any other person, use it for any purpose, or store or copy the >> information in any medium. Thank you. >> >> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, >> Registered in England & Wales, Company No: 2557590 ARM Holdings plc, >> Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in >> England & Wales, Company No: 2548782 >> ---------------------------------------------------------------------- >> -------- _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel