On Fri, Jan 3, 2014 at 1:42 PM, <david_pater...@dell.com> wrote:

> Is it worthwhile to look at octokit and writing a dev tool replacement in
> Ruby?  Octokit is the github supported Ruby toolkit for the github API.
>
>
>
> https://github.com/octokit/octokit.rb
>

I did that once.  The startup overhead that using bundler and gems imposed
at the time made it painful, as in 10 - 30 seconds for the tool to start
doing anything.




>
>
> Thanks,
>
> dp
>
>
>
>
>
>
>
> *From:* crowbar-bounces *On Behalf Of *Victor Lowther
> *Sent:* Friday, January 03, 2014 10:49 AM
> *To:* Adam Spiers
> *Cc:* crowbar
> *Subject:* Re: [Crowbar] Resolving inter-repository dependencies for CB
> 2.0
>
>
>
> On Fri, Jan 3, 2014 at 8:52 AM, Adam Spiers <aspi...@suse.com> wrote:
>
> Victor Lowther (victor.lowt...@gmail.com) wrote:
> > On Fri, Jan 3, 2014 at 5:33 AM, Adam Spiers <aspi...@suse.com> wrote:
> > > Victor Lowther (victor.lowt...@gmail.com) wrote:
> > > > This is intended to work as a starting point for a discussion of
> what tool
> > > > we should use to use to track inter-repository dependencies for
> CB2.0 in
> > > > the opencrowbar org.
> > >
> > > Before evaluating the tools I think it would be worth trying to
> > > clarify the requirements.  For example, all the approaches you list
> > > seem to assume that there will only be dependencies from a single
> > > superproject repository onto multiple slave repositories, but why is
> > > it safe to exclude the possible need to track dependencies between
> > > slave repositories?
> >
> > Then you are assuming too much.  None of the tools I mentioned enforce
> such
> > a relationship between git repositories
>
> OK, maybe I didn't express myself clearly enough then, or maybe we
> are talking about different types of dependencies.
>
> I assumed that by "inter-repository dependencies" you were talking
> about dependencies at the version control layer, e.g. one of the
> following:
>
>   - "commit X in repository A requires commit Y in repository B"
>   - "commit X in repository A requires commit Y or newer in repository B"
>   - "branch X in repository A requires commit Y in repository B"
>   - "branch X in repository A requires commit Y or newer in repository B"
>   - "tag    X in repository A requires commit Y in repository B"
>   - "tag    X in repository A requires commit Y or newer in repository B"
>   - "commit X in repository A requires branch Y in repository B"
>   - "branch X in repository A requires branch Y in repository B"
>   - "tag    X in repository A requires branch Y in repository B"
>   - "commit X in repository A requires tag    Y in repository B"
>   - "branch X in repository A requires tag    Y in repository B"
>   - "tag    X in repository A requires tag    Y in repository B"
>
> (Probably not all of these would be useful, but I'm just listing them
> now for clarity, to help us avoid talking at cross-purposes.)
>
> These types of dependencies are obviously very different in nature to
> the crowbar.yml types of dependencies such as "barclamp-nova requires
> barclamp-keystone".
>
> So are you talking about the first type of dependency or the second,
> or both, or something else?
>
>
>
> The first type of dependency.  However, that all the tools express their
> relations in terms of parent/child relationships does not mean that we are
> restricted to a one superproject -> many subprojects structure -- I am
> leaning towards a one-superproject-per-release structure myself, and the
> superprojects would pick and choose whatever subset of the slaves were
> appropriate.
>
>
>
> With regards to the first type of dependency listed above
> (i.e. version control layer):
>
> ./dev, git submodule, and git subtree, and gitslave *all* assume a
> topology which involves a single parent repository and one or more
> child repositories.  I'm not sure about gitslave, but for the other
> three, version control layer dependencies can only be expressed from
> the parent ("superproject" as gitslave calls it) onto children
> (e.g. to define a "snapshot" representing a particular release), not
> between children.  So my question was: is this limitation safe, or
> might it get in the way later on?  The answer may well be "yes, it's
> safe"; I just wanted to raise awareness that adoption of any of the
> tools you proposed will impose that limitation.
>
>
>
> That is an area I would like to discuss -- what sort of restrictions are
> we willing to live with here?
>
>
>
>
> > > What do these repositories contain?
> >
> > Source code, docs, and metadata.
> >
> > > Multiple barclamps in the superproject and one per slave?
> >
> > Doesn't matter for the purposes of this conversation.
>
> It does, because ./dev currently assumes no barclamps in the
> superproject and one per slave whereas the other tools you proposed
> don't, so if you want to achieve something different to the current
> layout then that will certainly impact the decision whether to
> continue using ./dev or not.
>
>
>
> Or splitting ./dev into several smaller tools, one of which would be the
> bit that handles git repo interdependencies.
>
>
>
>
> > >  Where do tools live?
> >
> > Wherever we want them to.
>
> Will the superproject be release-specific or not?  Development of
> ./dev and its associated files was held back by the fear of breaking
> reproducible builds for older releases.  But then keeping any future
> repository "meta" tool in a separate repository to the build toolchain
> should alleviate this problem.
>
>
>
>
>
> One of the things I am interested in talking about.
>
> > > I have a strong preference for reusing existing technology over
> > > rolling custom tools.  For example, packaging barclamps as gems would
> > > provide the functionality of the whole gem/bundler ecosystem for free,
> > > which AFAICS would in one stroke solve the whole problem.
> >
> > I don't see how introducing a packaging conversation here is useful,
> unless
> > you prefer downloading a gem over cloning a repo when you want to hack on
> > some random ruby project (as opposed to just using it)
>
> Yes, I *hugely* prefer that - that's the whole point!  If dependencies
> are available as gems then this whole discussion becomes a non-issue.
>
> Example advantages:
>
>   - Any barclamp repo could easily be unit-tested standalone in Travis
>     simply by ensuring its Gemfile expressed the right dependencies
>     (e.g. on the core framework and barclamp gems), rather than the
>     awful https://github.com/crowbar/travis-ci-crowbar tree flattening
>     hack we were forced to build previously, which was never able to
>     automatically test pull requests.
>
>   - Dependencies could be expressed using version numbers adhering to
>     semantic versioning, which gives much more flexibility during
>     testing than a monolithic approach which insists git cloning an
>     exact set of commits/branches/tags from a set of remotes chosen
>     by an opinionated tool.
>
>   - Doesn't reinvent any wheels.
>
>   - Proven technology already adopted by the whole Ruby community.
>
>   - Everyone already knows bundler / Gemfile etc. very well => very
>     shallow learning curve => more welcoming for newbies
>
>
>
> OK.
>
>
>
> Packaging and dependency handling are NOT mutually orthogonal problems.
>
>
>
> True, but I wish to focus on dependencies at the VCS level for the
> purposes of this conversation, not the packaging level.  If you want to do
> otherwise, please start a new thread.
>
> _______________________________________________
> Crowbar mailing list
> Crowbar@dell.com
> https://lists.us.dell.com/mailman/listinfo/crowbar
> For more information: http://crowbar.github.com/
>
_______________________________________________
Crowbar mailing list
Crowbar@dell.com
https://lists.us.dell.com/mailman/listinfo/crowbar
For more information: http://crowbar.github.com/

Reply via email to