Thread overview
Dub, Git, Mercurial, Bazaar
Apr 11, 2017
Russel Winder
Apr 11, 2017
drug
Apr 11, 2017
Russel Winder
Apr 11, 2017
drug
Apr 11, 2017
Russel Winder
Apr 11, 2017
drug
Apr 11, 2017
rikki cattermole
Apr 11, 2017
Guillaume Piolat
April 11, 2017
Go only uses Git, Mercurial, or Bazaar for dependency handling. Rust (via Cargo) allows for a central repository, and Git (, and Mercurial ?) repositories. Dub appears only to allow for central repository, or have I missed it's ability to work with DVCS repositories?

If Dub cannot handle DVCS repositories, it needs to be able to.

The rationale is that people can access dependencies that are available but not yet, or never will be, in the central repository. The use case that matters is working with a dependency that is not yet, but definitely will be in the central repository.

Experience of Rust, and Herd with Ceylon, shows this to be very valuable to community activity.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

April 11, 2017
11.04.2017 07:59, Russel Winder via Digitalmars-d-learn пишет:
> Go only uses Git, Mercurial, or Bazaar for dependency handling. Rust
> (via Cargo) allows for a central repository, and Git (, and Mercurial
> ?) repositories. Dub appears only to allow for central repository, or
> have I missed it's ability to work with DVCS repositories?
>
> If Dub cannot handle DVCS repositories, it needs to be able to.
>
> The rationale is that people can access dependencies that are available
> but not yet, or never will be, in the central repository. The use case
> that matters is working with a dependency that is not yet, but
> definitely will be in the central repository.
>
> Experience of Rust, and Herd with Ceylon, shows this to be very
> valuable to community activity.
>
You can use local repository if you want
April 11, 2017
On Tue, 2017-04-11 at 09:55 +0300, drug via Digitalmars-d-learn wrote:
> […]
> You can use local repository if you want

But that implies something very manual, go and cargo handle all that.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

April 11, 2017
11.04.2017 14:15, Russel Winder via Digitalmars-d-learn пишет:
> On Tue, 2017-04-11 at 09:55 +0300, drug via Digitalmars-d-learn wrote:
>> […]
>> You can use local repository if you want
>
> But that implies something very manual, go and cargo handle all that.
>
How go and cargo know where the local repository is to handle that?
April 11, 2017
On Tue, 2017-04-11 at 14:21 +0300, drug via Digitalmars-d-learn wrote:
> 11.04.2017 14:15, Russel Winder via Digitalmars-d-learn пишет:
> > On Tue, 2017-04-11 at 09:55 +0300, drug via Digitalmars-d-learn wrote:
> > > […]
> > > You can use local repository if you want
> > 
> > But that implies something very manual, go and cargo handle all that.
> > 
> 
> How go and cargo know where the local repository is to handle that?

I fear we may well have started talking at cross purposes. At the risk of doing the wrong thing I'll reset this thread with:

Go allows for any Git, Mercurial or Bazaar repository as a dependency. It fetches the source into the workspace and compiles into the workspace. The go language uses URIs to specify the import so the DVCS nature is up front – and leads to lots of vendoring problems. There is only the Go distribution and DVCS repositories.

Cargo fetches source from the central crate repository or from a DVCS repository depending on the contents of the Cargo.toml file. The crate names are the only thing the application source code knows about. There is a central repository and DVCS repositories.

Dub cannot get from a DVCS repository but has a sequence of repositories it can reach. It is feasible that these local Dub repositories could have been got by DVCS, but this is a manual thing not something Dub handles, unlike Go and Cargo. I feel that Dub should behave more like Cargo.

-- 
Russel. ============================================================================= Dr Russel Winder      t: +44 20 7585 2200   voip: sip:russel.winder@ekiga.net 41 Buckmaster Road    m: +44 7770 465 077   xmpp: russel@winder.org.uk London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

April 11, 2017
11.04.2017 15:12, Russel Winder via Digitalmars-d-learn пишет:
> On Tue, 2017-04-11 at 14:21 +0300, drug via Digitalmars-d-learn wrote:
>> 11.04.2017 14:15, Russel Winder via Digitalmars-d-learn пишет:
>>> On Tue, 2017-04-11 at 09:55 +0300, drug via Digitalmars-d-learn
>>> wrote:
>>>> […]
>>>> You can use local repository if you want
>>>
>>> But that implies something very manual, go and cargo handle all
>>> that.
>>>
>>
>> How go and cargo know where the local repository is to handle that?
>
> I fear we may well have started talking at cross purposes. At the risk
> of doing the wrong thing I'll reset this thread with:
>
> Go allows for any Git, Mercurial or Bazaar repository as a dependency.
> It fetches the source into the workspace and compiles into the
> workspace. The go language uses URIs to specify the import so the DVCS
> nature is up front – and leads to lots of vendoring problems. There is
> only the Go distribution and DVCS repositories.
>
> Cargo fetches source from the central crate repository or from a DVCS
> repository depending on the contents of the Cargo.toml file. The crate
> names are the only thing the application source code knows about. There
> is a central repository and DVCS repositories.
>
> Dub cannot get from a DVCS repository but has a sequence of
> repositories it can reach. It is feasible that these local Dub
> repositories could have been got by DVCS, but this is a manual thing
> not something Dub handles, unlike Go and Cargo. I feel that Dub should
> behave more like Cargo.
>
I see. Thanks for clarification.
April 11, 2017
On 11/04/2017 5:59 AM, Russel Winder via Digitalmars-d-learn wrote:
> Go only uses Git, Mercurial, or Bazaar for dependency handling. Rust
> (via Cargo) allows for a central repository, and Git (, and Mercurial
> ?) repositories. Dub appears only to allow for central repository, or
> have I missed it's ability to work with DVCS repositories?
>
> If Dub cannot handle DVCS repositories, it needs to be able to.
>
> The rationale is that people can access dependencies that are available
> but not yet, or never will be, in the central repository. The use case
> that matters is working with a dependency that is not yet, but
> definitely will be in the central repository.
>
> Experience of Rust, and Herd with Ceylon, shows this to be very
> valuable to community activity.

FYI, if we wanted a user configurable interfacing to any source of projects we would need some complicated "scripting" to allow for it.

E.g. I have a little bit of code that can help with this[0].
I'm currently designing a UI for it but ugh, it would be a lot of work to get this working for dub.

[0] https://gist.github.com/rikkimax/4718740223748256d94b3b1474525012

April 11, 2017
On Tuesday, 11 April 2017 at 04:59:27 UTC, Russel Winder wrote:
> Go only uses Git, Mercurial, or Bazaar for dependency handling. Rust (via Cargo) allows for a central repository, and Git (, and Mercurial ?) repositories. Dub appears only to allow for central repository, or have I missed it's ability to work with DVCS repositories?
>

https://github.com/dlang/dub/issues/632