dwyl / dwyl/elixir-pre-commit

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

Offen
#29 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Elixir
Sterne
46
Forks
11
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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](https://github.com/BuddyGG/buddy_matching/tree/umbrella_conversion) 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](https://github.com/edeliver/edeliver/wiki/Umbrella-Projects#autoversioning).

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:
```elixir
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?

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit dem auto_version/0-Code in der mix.exs jeder App und dem .git/hooks/pre-commit-Einstiegspunkt. Vergleiche das funktionierende mix pre_commit und den manuell aufgerufenen Hook mit einem tatsächlichen Git-Commit und überprüfe dabei das Arbeitsverzeichnis und den Git-Kontext. Als erledigt gilt, dass der Hook ohne die '.git'-Fehler läuft und eine gültige SemVer-Revision erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
elixir, git
Bereich
developer-experience, tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.