git: сохранить одну конкретную версию файла - PullRequest
0 голосов
/ 02 декабря 2018

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

Поскольку мы использовали flex для генерации кода для одной из задач, которые нам пришлось выполнить, мы должны гарантировать, что файл был сгенерированпо правильной flex-версии.(В противном случае сервер не может скомпилировать сгенерированный файл.)
Но моя система не поддерживает flex-версию своего сервера.Поэтому мне нужно создать другую версию файла, чтобы скомпилировать все в моей системе.Когда я закончу с кодированием, моя обычная процедура на данный момент такова:

git add --all
git reset generated-file1.c
git reset generated-file2.c
... (commit and push)

Так как это действует мне на нервы, я уже создал собственную команду, которая делает это для меня.Однако я хотел спросить, есть ли что-то похожее на .gitignore, чтобы «заблокировать» определенную версию (которая будет скомпилирована на сервере) наших сгенерированных файлов.Поэтому любому в нашей команде нужно будет использовать git add -all для добавления всего, кроме сгенерированных файлов.

Редактировать: Благодаря предложению phd здесь Я подошел немного ближе к тому, что хочу.Чего мне не хватает, так это части:

... кому-то из нашей команды нужно будет использовать git add -all ...

Используя git update-index --skip-worktree generated-file*.c, я исправлю это только для моей системы.То, что я искал, - это одноразовое изменение в нашем репо, которое затрагивает все системы.(У других участников тоже есть такая же проблема.)

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

Приветствия,
Pascal

1 Ответ

0 голосов
/ 02 декабря 2018

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

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