Skip to content

Conversation

christhekeele
Copy link
Contributor

@christhekeele christhekeele commented Nov 9, 2023

When using git dependencies, a branch/ref/tag specifier is passed verbatim to System.cmd/3. This can lead to intimidating error messages when they are not provided as a binary (for instance, an atom like tag: :stable):

** (ArgumentError) all arguments for System.cmd/3 must be binaries
    (elixir 1.15.6) lib/system.ex:1083: System.cmd/3
    (mix 1.15.6) lib/mix/scm/git.ex:287: Mix.SCM.Git.git!/2
    (mix 1.15.6) lib/mix/scm/git.ex:136: Mix.SCM.Git.checkout/2
    (elixir 1.15.6) lib/file.ex:1624: File.cd!/2
    (mix 1.15.6) lib/mix/dep/fetcher.ex:64: Mix.Dep.Fetcher.do_fetch/3
    (mix 1.15.6) lib/mix/dep/converger.ex:229: Mix.Dep.Converger.all/8
    (mix 1.15.6) lib/mix/dep/converger.ex:162: Mix.Dep.Converger.init_all/8
    (mix 1.15.6) lib/mix/dep/converger.ex:110: Mix.Dep.Converger.all/4

This PR adds a check during git opts verification time to provide better feedback, earlier.

When using git dependencies, a branch/ref/tag specifier
is passed verbatim to `System.cmd/3`. This can lead to
intimidating error messages when they are not provided
as a binary (for instance, an atom like `tag: :stable`):

```
** (ArgumentError) all arguments for System.cmd/3 must be binaries
    (elixir 1.15.6) lib/system.ex:1083: System.cmd/3
    (mix 1.15.6) lib/mix/scm/git.ex:287: Mix.SCM.Git.git!/2
    (mix 1.15.6) lib/mix/scm/git.ex:136: Mix.SCM.Git.checkout/2
    (elixir 1.15.6) lib/file.ex:1624: File.cd!/2
    (mix 1.15.6) lib/mix/dep/fetcher.ex:64: Mix.Dep.Fetcher.do_fetch/3
    (mix 1.15.6) lib/mix/dep/converger.ex:229: Mix.Dep.Converger.all/8
    (mix 1.15.6) lib/mix/dep/converger.ex:162: Mix.Dep.Converger.init_all/8
    (mix 1.15.6) lib/mix/dep/converger.ex:110: Mix.Dep.Converger.all/4
```

This PR adds a check during git opts verification time to provide
better feedback.
@christhekeele christhekeele force-pushed the better-errors-for-mix-git-dep-nonstring-refspecs branch 3 times, most recently from 224d4a9 to f1f7c68 Compare November 9, 2023 04:41
@josevalim josevalim merged commit 09b4177 into elixir-lang:main Nov 11, 2023
@josevalim
Copy link
Member

💚 💙 💜 💛 ❤️

josevalim pushed a commit that referenced this pull request Nov 11, 2023
…13088)

When using git dependencies, a branch/ref/tag specifier
is passed verbatim to `System.cmd/3`. This can lead to
intimidating error messages when they are not provided
as a binary (for instance, an atom like `tag: :stable`):

```
** (ArgumentError) all arguments for System.cmd/3 must be binaries
    (elixir 1.15.6) lib/system.ex:1083: System.cmd/3
    (mix 1.15.6) lib/mix/scm/git.ex:287: Mix.SCM.Git.git!/2
```

This PR adds a check during git opts verification time to provide
better feedback.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants