Как «git status» без касания [дублировать]

В моем суматошном мнении и на основе §13.3.3 / 1 Наилучшая жизнеспособная функция [over.match.best] , оператор перегруженного преобразования без шаблона (т. е. operator int() const) имеет более высокий приоритет в отношении выбора разрешения перегрузки, чем его шаблонный аналог (т. е. template <typename T> operator T () const).

Таким образом, перегруженное разрешение правильно выбрало бы operator int() const по сравнению с template <typename T> operator T () const, поскольку является наилучшей жизнеспособной функцией.

Кроме того, поскольку версия без шаблона будет выбрана над шаблоном (т. е. шаблон не будет материализован / квалифицирован компилятором), class Var будет иметь одну функцию преобразования, и, следовательно, требование в §6.4.2 / 2 Оператор switch [stmt.switch] для единственного интегрального преобразования будет выполнен.

Следовательно, Clang прав, а GCC ошибочен.

10
задан Michael Krupp 9 January 2015 в 22:26
поделиться

2 ответа

Что связано с использованием переменной окружения «GIT_INDEX_FILE», чтобы заставить git использовать другой файл индекса?

Итак, чтобы создать новый индексный файл из HEAD, используйте

GIT_INDEX_FILE=.git/other-index git reset

и после этого вы могли бы просто

GIT_INDEX_FILE=.git/other-index git status

искать изменения.

Недостатком этого, вы не увидите реального статуса, если основной индекс будет изменен добавлением / rm. Но, по крайней мере, это позволит вам обнаружить факт изменения, а затем, вероятно, сделать еще кое-что, чтобы узнать реальную разницу.

Не могли бы вы также описать больше цели, которую вы пытаетесь достичь? Вероятно, мы могли бы выступить с некоторыми другими решениями.

Другая идея. Попробуйте это:

cp .git/index .git/other-index # or maybe just "ln" once, rather than copying everytime?
GIT_INDEX_FILE=.git/other-index git status

Не знаете, насколько это достоверно ... если команда cp будет выполняться во время выполнения git add/rm, вы можете иметь «поврежденный» индексный файл и, по-видимому, получить неудача, но для вашего использования я считаю, что это достаточно хорошо - вы можете просто проигнорировать сбой и повторить попытку.

9
ответ дан kan 22 August 2018 в 19:06
поделиться
  • 1
    Я добавил несколько изображений моей строки состояния tmux. Все, что я действительно хочу видеть в этой строке, - это то, что представляет собой текущее состояние репозитория. Информация автоматически обновляется каждые пару секунд. Поэтому теоретически я могу следить за изменениями в «реальном времени». – Michael Krupp 9 January 2015 в 22:27
  • 2
    @keks, я обновил свой ответ с идеей cp. Пожалуйста, попробуйте сказать, хорошо ли это работает, мне любопытно. – kan 10 January 2015 в 22:15
  • 3
    Похоже, cp-версия работает так, как ожидалось. До сих пор я не сталкивался с какими-либо проблемами. Даже если поврежденный индекс будет скопирован, это не так уж плохо. К тому времени, когда я заметил бы ошибку, статус уже был бы обновлен. – Michael Krupp 12 January 2015 в 17:54

Быстрая и грязная, но наиболее безопасно вы можете просто использовать пользователя с разрешениями только для чтения.

sudo -u nobody git status
4
ответ дан rudimeier 22 August 2018 в 19:06
поделиться
Другие вопросы по тегам:

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