[swift-evolution] SPM support for branches and commits

Daniel Leping daniel at crossroadlabs.xyz
Tue Sep 6 09:31:52 CDT 2016


+1 here. It becomes much more crucial when you work with finely grained
projects with each module in its own repo. Making a new release when you
push a fix becomes too much of job to do.

On Tue, Sep 6, 2016 at 5:08 PM, Said Sikira via swift-evolution <
swift-evolution at swift.org> wrote:

> Yes, I agree that tags are far better option for production use, but
> development process stage would certainly benefit from possibility to track
> specific branch or commit. Having to rely completely on versioned tags in
> development stage would not be easy nor very productive.
>
> Said
>
> On September 6, 2016 at 3:49:06 PM, Guillaume DIDIER (
> guillaume.didier.2014 at polytechnique.org) wrote:
>
> I think that the ability to fetch a branch or a commit may be interesting
> (basically anything that git understands), would be nice,
> but with the caveat that for production use it is far better to use à
> fixed version (i.e. a tag).
> We do not want that most packages are used by specifying the master branch.
>
>
> *Guillaume DIDIER *
>> *ÉCOLE POLYTECHNIQUE*
> 91128 PALAISEAU CEDEX
> guillaume.didier at polytechnique.edu
> <guillaume.didier at polytechnique.edu?subject=>
> www.polytechnique.edu
>>
> PS : I am new here, do not hesitate to correct me.
>
> Le 6 sept. 2016 à 15:41, Said Sikira via swift-evolution <
> swift-evolution at swift.org> a écrit :
>
> Hi,
>
> Our code is almost always developed and pushed in small incremental
> changes. When we implement critical amount of changes in our code, we push
> new version.
>
> When adding dependencies to Package.swift file, we supply their repository
> url and version we want to use. However, differentiating code only by it’s
> version is not enough in some cases. When writing new code features, we use
> branches. They enable all the mechanisms one needs to create, test and
> deploy new features without polluting production environment.
>
> I think that Swift Package Manager should have support for branches (and
> commits). There are several reasons why this feature would greatly improve
> developer workflow:
>
>    1. Writing new features. Being able to specify branch in Package.swift
>    would make creating and testing new features easier. You wouldn’t need to
>    push new version to be able to use it in your Swift program. You would just
>    specify the branch you’re working on.
>    2. Differentiating between new Swift versions. This problem comes from
>    the current Swift 2.2 -> Swift 3.0 migration. Many framework developers use
>    specific branches (swift–3, swift3.0) to work on migration of their API’s
>    to Swift 3. However, you can’t use them in your Swift projects because they
>    don’t live in the master branch in the repository. I’m sure this will also
>    happen when Swift 3 starts migration to the Swift 4, until ABI becomes
>    stable.
>
> SPM should also have support for specifying commits. Specifying which
> commit you want to use in your project dependency is not always a good
> idea, but it’s necessary in some cases.
>
> This shouldn’t be very hard to implement. We would need to update
> PackageDescription and Get source from swift-package-manager repository to
> enable specifying branches or commits. Pulling the branch source would just
> be another parameter in git instruction.
>
> Example:
>
> // Specifying branch
> let package = Package(
>   name: "SomePackage",
>   dependencies: [
>     .Package(url: "https://repo-source.git", branch: "new-feature")
>   ]
> )
>
> // Specifying commits
> let package = Package(
>   name: "SomePackage",
>   dependencies: [
>     .Package(url: "https://repo-source.git", commit: "c336664020v4f94ed78cbe7447a39ae5ca0b6c11")
>   ]
> )
>
> What are your thoughts on this subject?
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160906/973a6d46/attachment.html>


More information about the swift-evolution mailing list