Выполнение команды оболочки git на Heroku - PullRequest
0 голосов
/ 30 января 2020

Я использую git для сравнения строк (я написал, почему ниже). Он работает в разработке на моей машине, но не на Heroku.

`git diff $(echo "hi" | git hash-object -w --stdin) $(echo  "hello" | git hash-object -w --stdin)  --word-diff`

Я получаю следующую ошибку:

fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Not a git repository
To compare two paths outside a working tree:
usage: git diff [--no-index] <path> <path>

Кто-нибудь знает, как я могу заставить эту команду работать на Heroku? (кстати, подсказка usage: не решает проблему).

Обновление

Поддержка Heroku направила меня к этому buildpack , чтобы я мог вручную установить git на своих серверах. Решение в моем ответе ниже.

1 Ответ

0 голосов
/ 03 февраля 2020

Решение было:

Сводка

Сначала попробуйте git init в консоли Heroku (шаги 5 и 6), возможно, git уже установлен. Если нет:

  1. Установите этот buildpack
  2. Добавьте Aptfile (txt) к root, аналогично Procfile
  3. Добавьте последний git исходный URL в Aptfile
  4. Deploy
  5. heroku run rails c
  6. `git init` в консоли

Более подробно

  1. Heroku направил меня к этому buildpack . Прост в установке. Но изначально дал мне эту ошибку, без особых объяснений:
remote: -----> App not compatible with buildpack: https://github.com/heroku/heroku-buildpack-apt.git
remote:        More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure

Это потому, что я еще не добавил Aptfile, поэтому сделайте это перед развертыванием, потому что без него работать не будет. Aptfile - это просто txt file в root вашего rails приложения, как Procfile. Пустой Aptfile и успешное развертывание. Теперь нам нужно добавить git.

Установить git, найдя последнюю версию и скопировав ссылку из этой папки и добавив ее в свой Aptfile. Мой Aptfile выглядит так:

https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.25.0.tar.gz

Развернуть, все должно работать.

Запустить heroku run rails c

Попробуйте приведенный ниже код еще раз, и вы обратите внимание, что вы получаете похожую ошибку:

`git diff $(echo "hi" | git hash-object -w --stdin) $(echo  "hello" | git hash-object -w --stdin)  --word-diff`
=> fatal: not a git repository (or any parent up to mount point /)
=> Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
=> fatal: not a git repository (or any parent up to mount point /)
=> Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
=> Not a git repository
=> To compare two paths outside a working tree:
=> usage: git diff [--no-index] <path> <path>
Но теперь у нас установлено git, поэтому просто сделайте репо:
`git init`
=> "Initialized empty Git repository in /app/.git/\n"
Успех:
`git diff $(echo "hi" | git hash-object -w --stdin) $(echo  "hello" | git hash-object -w --stdin)  --word-diff`
=> "diff --git a/45b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/ce013625030ba8dba906f756967f9e9ca394464a\nindex 45b983b..ce01362 100644\n--- a/45b983be36b73c0788dc9cbcb76cbb80fc7bb057\n+++ b/ce013625030ba8dba906f756967f9e9ca394464a\n@@ -1 +1 @@\n[-hi-]{+hello+}\n"

Надеюсь, это поможет кому-то еще.

...