Как изменить режим файлов на GitHub? - PullRequest
37 голосов
/ 27 января 2012
$ git add test-file

$ git commit -m 'first commit'
 create mode 100644 test-file

$ git push

$ git update-index --add --chmod=+x test-file

$ git commit -m 'change mode'
 mode change 100644 => 100755 test-file

$ git push

После этого, если вы перейдете на GitHub, он все равно будет отображаться как 100644, несмотря ни на что.

Ответы [ 2 ]

31 голосов
/ 27 января 2012

MSYS не проблема.Даже если MSYS chmod не работает (не работает), Git имеет встроенный способ обойти эту проблему, то есть git update-index --chmod=+x.Пусть будет ясно, что git update-index только портит индекс (область подготовки), а не локальный репозиторий (рабочий каталог).

Я убежден, что проблема с GitHub.На GitHub, если файл изначально выдвинут в режиме 100775, все хорошо.Если файл изначально выдан как 100644, это вызывает проблему.Попытки изменить режим файла будут успешными с git add, с git commit, с git push и даже будут отображаться в истории файлов GitHub, но не будет отражено в "blob /главная страница на GitHub.

Обновление

От: Petros Amiridis (персонал GitHub)

Тема: Как изменить режим файлов на GitHub?

У меня есть хорошие новости.Наша потрясающая команда только что подтвердила, что это ошибка кеширования с нашей стороны.Наша команда развернула исправление.

12 голосов
/ 27 января 2012

Мне кажется, проблема в том, что MSYS , на котором основана реализация git для Windows, не обрабатывает chmod должным образом.

(РЕДАКТИРОВАТЬ: другой ответ говорит, что MSYS не проблема, что, безусловно, кажется правдоподобным.)

Я предполагаю, что команда

git update-index --add --chmod=+x test-file

работает путем обновления метаданных в локальном репозитории (который должен работать) и изменения разрешений для файла (который не работает), переводя локальный репозиторий в несогласованное состояние.

Вы должны быть в состоянии отказаться от этого, отменив update-index:

git update-index --add --chmod=-x test-file
git commit -m 'change mode back'
git push

чтобы вернуть хранилище в согласованное состояние, а затем внести изменения в копию хранилища, отличную от Windows. Если у вас нет доступа к Linux или другой Unix-подобной системе, Cygwin включает git (не по умолчанию, но вы можете установить его через setup.exe) и предоставляет среду, в которой chmod на самом деле работает. Оболочкой по умолчанию для Cygwin является bash, поэтому среда должна быть знакома, если вы использовали git bash.

Файл все равно не будет казаться исполняемым, если вы посмотрите на него из оболочки git bash, но он должен отображаться как 100755 в веб-интерфейсе GitHub.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...