git: исключить каталог из «неотслеживаемых файлов», не удаляя его из хранилища - PullRequest
0 голосов
/ 07 июля 2011

ТЛ; др : Есть ли способ заставить Git навсегда исключить все изменения рабочей копии в подкаталоге репозитория Git, из списка «неотслеживаемые файлы» и «удаленные файлы» в git status и друзьях, без удалить их из удаленного источника?

Я нахожусь в системе, которая неизбежно переименовывает определенные файлы, но их не следует переименовывать в хранилище. Я не работаю с этими файлами, но они загромождают мои git status и git diff выходные данные. Добавление их в .gitignore решает проблему неотслеживаемых файлов, но все равно говорит, что файлы были удалены.

Скучное объяснение любопытных, и чтобы люди не говорили, что мне не следует задавать этот вопрос:

Моя рабочая копия находится в общей папке, к которой я пытаюсь получить доступ как с виртуальной машины (Ubuntu в VMware Fusion), так и с хоста (Mac OS X); Я сделал клон на стороне VM. Функция общих папок виртуальной машины заменяет : на &% в любом имени файла, как только оно записывается в файловую систему, и именно так OS X видит это. Проблема в том, что репозиторий Git моего рабочего места содержит сотни критически важных файлов с : в имени файла, все в одном большом каталоге. Мне не нужно редактировать или использовать эти файлы или каталог, в котором они находятся, но они отображаются как удаленные и неотслеживаемые файлы всякий раз, когда я хочу использовать GitX или утилиты командной строки со стороны Mac (что позволило бы мне заниматься разработкой без использования всей моей оперативной памяти для ВМ,). Кроме этого, git на Mac правильно видит мои другие изменения, и он отлично работал бы, если бы не этот каталог. Я не могу переименовать файлы обратно в двоеточие, поскольку это недопустимо в OS X (и прерывает ls, если вы попытаетесь mv it, FWIW). Любое другое решение, кроме упомянутого мной, приветствуется! Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Можно пометить пути в рабочей области git как "неизмененные", так что git status и git diff не увидят, что файл / путь был изменен. E.g.:

$ echo "default_value=Foo" > local.properties
$ git add local.properties
$ git commit -m'Default local.properties'

$ git update-index --assume-unchanged local.properties
$ echo "default_value=Bar" > local.properties
$ git status
# On branch master
nothing to commit (working directory clean)

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

0 голосов
/ 07 июля 2011

Попробуйте найти другой способ обмена файлами между вашей виртуальной машиной и хост-системой, потому что и Ubuntu, и Mac OS X допускают двоеточия в именах файлов.

Я не рекомендую AFP (протокол совместного использования файлов Mac), потому что клиент Linux не работает и преобразует двоеточия в косые черты, что делает файлы с двоеточиями полностью недоступными, поскольку косые черты будут интерпретироваться как разделители каталогов. (Да, я подал ошибку против afpfs.)

Я также не рекомендую SAMBA, я подозреваю, что имена файлов для SAMBA довольно ограничены.

Но NFS работает. Это очень легко установить в Mac OS X, серверные программы уже установлены, вам просто нужно отредактировать файл экспорта (/etc/exports, см. man 5 exports) и включить сервер (nfsd enable). Из Linux смонтируйте общий ресурс NFS (mount host:/absolute/path). Готово.

Есть пара проблем, которые вам нужно решить, чтобы это работало гладко. В идеале, ваш идентификатор пользователя идентичен в обеих системах - вероятно, 500 на вашем Mac и 1000 на Ubuntu. Отредактируйте /etc/passwd в Linux, чтобы исправить это, а затем chown -R username /home/username. (Я сделал обратное и изменил UID на моем Mac на 1000, но моя учетная запись исчезла из окна входа в систему. C'est la vie.) Вероятно, у вашего компьютера будет зияющая дыра в безопасности, если вы не будете осторожны с exports файл - помните, что NFS не только не зашифрована, но и NFS-серверы доверяют своим клиентам почти полностью и не запрашивают аутентификацию (если вы не используете GSS, которая доступна в NFSv3 и стандартна в NFSv4, но GSS является много работы).

Вы также можете сделать наоборот - экспортировать NFS из Ubuntu и смонтировать его на Mac. Выберите «подключиться к серверу» в Finder и введите nfs://host/absolute/path, он будет отображаться как том.

...