У меня есть существующий проект, развернутый на героку и под контролем git. Я регулярно добавляю и фиксирую код.
Я недавно восстановил компьютер, на котором я работаю (OSX, 10.6), и теперь, когда я вызываю
git status
Я вижу свои изменения, но когда я пытаюсь добавить измененные файлы для фиксации, я получаю
Dans-iMac-335:[app-name-obscured] apple$ git add public/javascripts/*
fatal: Unable to write new index file
Я клонировал проект из репозитория heroku git и могу добавить туда. Владение файлами в двух проектах одинаково. Что может быть причиной этого? Мой вариант - добавить каждый из измененных файлов во вновь клонированную версию и реконструировать его таким образом, но изменений много, и, похоже, здесь есть какое-то исправление.
Кто-нибудь испытал это, и есть идеи, с чего начать?
Крис: спасибо за исчерпывающий ответ.
Я могу запустить Git с помощью sudo. В этом смысле кажется, что проблема связана с разрешениями, хотя каталог принадлежит 755 и принадлежит мне, а вложенные файлы 644 снова принадлежат мне (тот же пользователь, которому принадлежат файлы проекта). На диске много места, и предположение о том, что каталог доступен для записи, является хорошим, но я запускал git из каталога, в котором находится проект - нужно ли ему тогда создавать путь?
Я не нахожу в своей системе ktrace, и я не очень разбираюсь в терминальных манипуляциях, но я попытался запустить dtruss. Это не показало никаких проблем, но мне пришло в голову, что из-за того, что мне пришлось использовать sudo для запуска dtruss, это означало, что процесс, за которым следил dtruss, также выполнялся как суперпользователь. В любом случае, в тот момент он мог добавлять элементы в git, а также с помощью sudo я смог зафиксировать их только сейчас. Проблема заключается в добавлении нового элемента, а не измененного. Если бы я сделал что-то вроде
sudo dtruss su <my_username> git add some/file/name/*
смог бы я запустить git как свое обычное имя? Я подумал об этом после того, как взломал свой путь к достижению желаемого результата.
Я могу жить с использованием sudo для операций, где элементы добавляются и фиксируются на данный момент. Что я хочу сделать, так это сделать репо «Герою» встроенным в текущую работу: тогда я подумаю, что смогу клонировать это и посмотреть, исчезнет ли проблема. В противном случае я вернусь ...