Hi Derrick,

This use case can be solved using `pin --branch`.

If you really wanted to, you could also simply add B as a direct dependency of 
P to specify a branch; there's no need to "nest" the dependency. If P really 
does depend on B being on a branch, the manifest for P may be the right place 
to express that. In general, however, I'd expect that the case you're 
describing is a workflow use-case, and thus should be accomplished with 
pinning; it seems uncommon that a package would truly depend on one of its 
indirect dependencies being on a branch.

If you'd like to discuss this further, please reply on the "Package Manager 
Support for branches" thread, as (if I understand you correctly) your question 
is about that proposal, not the "Top of Tree development" proposal.

Thanks,

        - Rick

> On Jan 27, 2017, at 6:42 PM, Derrick Ho via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Boris,
> 
> My Intent is to make it easier to develop dependency B. I may want to develop 
> on a feature branch for dependency B so I'd like to use PM to force that to 
> happen. 
> 
> I don't want to have to cd into the A folder and then cd into B to make that 
> change. I want to control the whole thing from the root git repo

>> On Jan 25, 2017, at 10:40 AM, Boris Buegling via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Hi Derrick,
>> 
>> I think you meant to send this as a reply to SE-0149 Package Manager Support 
>> for branches, correct?
>> 
>> I’m not quite sure about the use case for your described behaviour, can you 
>> elaborate a bit more why you would want to override a dependency of A from 
>> the manifest of P? 
>> 
>> If the goal is a temporary override, the proposal already allows that by 
>> utilising `pin --branch`.
>> 
>> Cheers,
>> Boris
>> 
>>> On 25 Jan 2017, at 01:50, Derrick Ho via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> It probably is a good idea.
>>> 
>>> Perhaps the changes can be done in the Package.swift file but allow nesting 
>>> of dependencies.
>>> 
>>> Suppose your dependency is like this where P is your current project
>>> 
>>> P --> A --> B
>>> 
>>> Normally P we would describe its dependency on A while B would be 
>>> abstracted away. In A, there would be another Package.swift file describing 
>>> its dependency on B.
>>> 
>>> However if we add the ability to NEST the dependency graph in P's 
>>> Package.swift it could serve as an override to the default behavior.
>>> 
>>> import PackageDescription
>>> 
>>> let package = Package(
>>> name: "P",
>>> targets: [],
>>> dependencies: [
>>> .Package(url: "https://blah.com/A.git";,
>>> majorVersion: 1, depdencies: [
>>> .Package(url: "https://blahblah.com/B.git, branch: "test")
>>> ]),
>>> 
>>> ]
>>> )

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to