Есть ли логи, чтобы увидеть команды git из bundler? - PullRequest
1 голос
/ 17 апреля 2019

Я использую bundle install для установки некоторых драгоценных камней Ruby из набора общедоступных и закрытых репозиториев git.

Проблема заключается в том, что после установки одного конкретного гема через git локальный каталог загрязняется этимИсходный код драгоценного камня.Это похоже на то, как репозиторий git полностью изменился.

Есть ли способ записать в журнал все команды git, которые выполняет bundler, и убедиться, что он помещает git-репозитории gems в правильный путь?

  1. добавить новый гем в Gemfile
  2. run bundle install
  3. проверить README.markdown, и теперь в нем совершенно другой текст:

    # activerecord-import [![Build Status](https://travis-ci.org/zdennis/activerecord-import.svg?branch=master)](https://travis-ci.org/zdennis/activerecord-import)
    

Чтобы восстановить репо, я запускаю git reflog, а затем git reset --hard, чтобы вернуть правильный коммит.Похоже, что во время установки пакета команда git выполняет проверку определенной ветви, которая перезаписывает все файлы в моем репозитории git.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2019

Я не знаю, поможет ли это вам решить вашу реальную проблему, но ответ на ваш вопрос заключается в том, что вы можете увидеть все выполняемые git команды, установив переменную окружения GIT_TRACE.На macOS, Linux и т. Д. Это выглядит как GIT_TRACE=1 bundle install.Метод будет отличаться в Windows.

Вот вывод для совершенно нового Gemfile с одной зависимостью:

$ cat Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem 'rack', git: 'https://github.com/rack/rack'

$ GIT_TRACE=1 bundle install
Fetching https://github.com/rack/rack
12:43:02.753769 git.c:415               trace: built-in: git clone https://github.com/rack/rack /Users/jordanr/.rbenv/gems/2.6.0/cache/bundler/git/rack-02d63969ed912ff0486a199e1ea3aa78127fbb67 --bare --no-hardlinks --quiet
12:43:02.800426 run-command.c:637       trace: run_command: unset GIT_DIR; ssh git@github.com 'git-upload-pack '\''rack/rack'\'''
12:43:06.059759 run-command.c:637       trace: run_command: git index-pack --stdin --fix-thin '--keep=fetch-pack 23789 on jordanr.local' --check-self-contained-and-connected
12:43:06.067881 git.c:415               trace: built-in: git index-pack --stdin --fix-thin '--keep=fetch-pack 23789 on jordanr.local' --check-self-contained-and-connected
12:43:06.945711 run-command.c:637       trace: run_command: git rev-list --objects --stdin --not --all --quiet
12:43:06.951101 git.c:415               trace: built-in: git rev-list --objects --stdin --not --all --quiet
12:43:06.974513 git.c:415               trace: built-in: git rev-parse --verify master
12:43:06.991681 git.c:415               trace: built-in: git fetch --force --quiet --tags /Users/jordanr/.rbenv/gems/2.6.0/cache/bundler/git/rack-02d63969ed912ff0486a199e1ea3aa78127fbb67
12:43:06.993341 run-command.c:637       trace: run_command: unset GIT_PREFIX; 'git-upload-pack '\''/Users/jordanr/.rbenv/gems/2.6.0/cache/bundler/git/rack-02d63969ed912ff0486a199e1ea3aa78127fbb67'\'''
12:43:07.000949 git.c:415               trace: built-in: git upload-pack /Users/jordanr/.rbenv/gems/2.6.0/cache/bundler/git/rack-02d63969ed912ff0486a199e1ea3aa78127fbb67
12:43:07.012806 run-command.c:637       trace: run_command: git rev-list --objects --stdin --not --all --quiet
12:43:07.022792 run-command.c:637       trace: run_command: git rev-list --objects --stdin --not --all --quiet
12:43:07.027701 git.c:415               trace: built-in: git rev-list --objects --stdin --not --all --quiet
12:43:07.034718 run-command.c:1553      run_processes_parallel: preparing to run up to 1 tasks
12:43:07.034753 run-command.c:1585      run_processes_parallel: done
12:43:07.034796 run-command.c:637       trace: run_command: git gc --auto --quiet
12:43:07.039832 git.c:415               trace: built-in: git gc --auto --quiet
12:43:07.050538 git.c:415               trace: built-in: git reset --hard 23580211825877c7ed3be5dd4f2996e67aa40a4e
12:43:07.074736 git.c:415               trace: built-in: git version
12:43:07.085179 git.c:659               trace: exec: git-submodule deinit --all --force
12:43:07.086081 run-command.c:637       trace: run_command: git-submodule deinit --all --force
12:43:07.124885 git.c:659               trace: exec: git-sh-i18n--envsubst --variables 'usage: $dashless $USAGE'
12:43:07.125490 run-command.c:637       trace: run_command: git-sh-i18n--envsubst --variables 'usage: $dashless $USAGE'
12:43:07.138222 git.c:659               trace: exec: git-sh-i18n--envsubst 'usage: $dashless $USAGE'
12:43:07.138930 run-command.c:637       trace: run_command: git-sh-i18n--envsubst 'usage: $dashless $USAGE'
12:43:07.158914 git.c:415               trace: built-in: git rev-parse --git-dir
12:43:07.166961 git.c:415               trace: built-in: git rev-parse --git-path objects
12:43:07.173881 git.c:415               trace: built-in: git rev-parse -q --git-dir
12:43:07.187418 git.c:415               trace: built-in: git rev-parse --show-prefix
12:43:07.193585 git.c:415               trace: built-in: git rev-parse --show-toplevel
12:43:07.203435 git.c:415               trace: built-in: git submodule--helper deinit --force --all
Fetching gem metadata from https://rubygems.org/
Resolving dependencies...
Using bundler 2.0.1
Using rack 2.1.0 from https://github.com/rack/rack (at master@2358021)
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 голос
/ 17 апреля 2019

Похоже, что проблема была когда-то с гемом и с компоновщиком, рекомендовавшим использовать git ls-files для получения списка всех файлов, принадлежащих гему, для файла gemspec.

Решение вопроса - изменить gemspec.files на использование Dir.glob.

Более подробная информация о репозитории github: https://github.com/bundler/bundler/issues/2287

...