Мерзавец: я могу подавить список 'измененного содержания '/dirty записи подмодуля в состоянии, разности, и т.д.?

Somewhen (вокруг 1.6.x выпуски, я думаю), мерзавец узнал изменения в подмодулях. Тот единственные подачи для раздражения меня:

$ git status vendor | grep modified:
#       modified:   vendor/rails (modified content)
$ git diff vendor/
diff --git a/vendor/rails b/vendor/rails
--- a/vendor/rails
+++ b/vendor/rails
@@ -1 +1 @@
-Subproject commit 046c900df27994d454b7f906caa0e4226bb42b6f
+Subproject commit 046c900df27994d454b7f906caa0e4226bb42b6f-dirty

Заставьте его остановиться?

Править:

Хорошо, таким образом, у меня есть ответ. Теперь у меня есть другой вопрос:

Я могу вставить это ~/.gitconfig? От моей начальной буквы кажется, что я не могу, и я не видел, что что-либо обещало путем просматривания патча. (Я предполагаю, что могу все еще сделать псевдоним.)

119
задан kch 13 July 2010 в 20:38
поделиться

3 ответа

Обновление: Посмотрите (и проголосуйте) nilshaldenwang's answer относительно возможности добавить в файл .gitmodules параметр конфигурации для игнорирования грязного состояния данного подмодуля.

ignore = dirty

Итак, git 1.7.2 вышел и включает опцию --ignore-submodules для status.

Из git help status:

--ignore-submodules[=<when>]
    Ignore changes to submodules when looking for changes.
    <when> can be either "untracked", "dirty" or "all", which
    is the default. When "untracked" is used submodules are
    not considered dirty when they only contain untracked
    content (but they are still scanned for modified content).
    Using "dirty" ignores all changes to the work tree of
    submodules, only changes to the commits stored in the
    superproject are shown (this was the behavior before
    1.7.0). Using "all" hides all changes to submodules (and
    suppresses the output of submodule summaries when the
    config option status.submodulesummary is set).

Значение, которое мне нужно - dirty.

git status --ignore-submodules=dirty

Я использую псевдоним, потому что я ленивый:

alias gst='git status --ignore-submodules=dirty'
51
ответ дан 24 November 2019 в 01:46
поделиться

Как вы упомянули, патч git submodule: игнорировать грязные подмодули для сводки и статуса находится в процессе разработки.

Также объявлено в выпуске Git 1.7.2-rc2 :

Git v1.7.2 Release Notes (draft)
================================

Updates since v1.7.1
--------------------

« git status « изучено » - ignore-submodules » опция.

Значение:

git config --global diff.ignoreSubmodules dirty

Относительно этой опции не совсем тот подход , выбранный на данный момент :

После этой серии я планирую добавить параметр конфигурации ' ignore .gitmodules , который может быть установлен для каждого подмодуля на «все», «грязный», «неотслеживаемый» или «нет» (по умолчанию).

« git diff » и « git status » будут использовать это значение конфигурации для каждого подмодуля.
Использование " - ignore-submodule " отменяет это значение по умолчанию (и новый параметр "none" будет добавлен туда, чтобы иметь возможность отменять настройки конфигурации).

И чтобы избежать необходимости выполнять « git submdule sync » каждый раз, когда этот параметр изменяется, я хотел бы сначала найти его в .git / config .
Если его там нет, он будет взят из .gitmodules , если он есть.

Таким образом, пользователи могут отменить настройку, но если они этого не сделают, восходящий поток может легко изменить ее (например, когда подмодули .gitignore были обновлены так, чтобы « ignore = untracked » больше не нужен, его можно удалить).
Также переключение ветвей будет иметь эффект мгновенно, если запись « ignore » в .gitmodules различается между ветвями.


Другой способ заставить git status (или любую команду git) игнорировать определенный подмодуль доступен в Git 2.13 (второй квартал 2017 г.):

git config submodule.<name>.active false

Подробнее см. « Игнорировать новые коммиты для подмодуля git » .

13
ответ дан 24 November 2019 в 01:46
поделиться

Итак, в git v1.7.2-rc2 есть то, что мне нужно:

$ git diff --ignore-submodules=dirty vendor
# no output
$ git status --ignore-submodules=dirty vendor
# On branch …
nothing to commit (working directory clean)

Создание собственного git howto:

# get git
git clone git://git.kernel.org/pub/scm/git/git.git git
cd git
git checkout v1.7.2-rc2

# make git. beware of setting prefix
make configure
./configure --prefix=/usr/local
make
sudo make install

# you REALLY don't want to `make doc`, use this instead
sudo make quick-install-man
sudo make quick-install-html
2
ответ дан 24 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: