Skip to content

"Not a git repository: '.git'" when using git dependent versioning #29

@ecly

Description

@ecly

This is may not be directly related to the project, but I figure others could wind up in a similar pickle, and I haven't been able to find a solution to this yet, so I thought I'd reach out here.

For this umbrella-project using edeliver for deployment, I've had to implement auto revisioning inside each app's mix.exs. This is done as shown by the edeliver project here.

My pre_commit hook is configured to run test, format --check-formatted and credo,
and this works fine when I call mix pre_commit, however when the pre_commit is triggered by actually using git commit,
the following happens:

...
fatal: Not a git repository: '.git'
fatal: Not a git repository: '.git'
fatal: Not a git repository: '.git'
fatal: Not a git repository: '.git'
...

This basically causes the code:

  def auto_version() do
    {rev, _} = System.cmd("git", ["rev-parse", "--short", "HEAD"])
    "1.0.0+#{String.trim_trailing(rev)}"
  end

To cause an error, resulting in a bad formatting of the SemVer version, causing mix to throw the error:
** (Mix) Expected :version to be a SemVer version, got: "1.0.0+".
and for the pre_commit to fail.

Now the bit which I cannot wrap my head around, is that when I add an IO.inspect(File.cwd!()) to the auto_version/0 function, it returns the folder of the individual mix.exs-files, all of which should be under the git directory, and from which I can open IEx and call the function without error myself.

Similarly, if i manually run the hook sh .git/hooks/pre-commit from the directory from which I invoke the git commit, it also works.

Any ideas for a solution to this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions