Как объединить содержимое файлов, отслеживаемых Git LFS

У меня есть XML-модель (100 МБ) в Git, которая часто меняется и увеличивается в размерах. Я рассматривал возможность использования Git LFS для решения этой проблемы.

Проверяя документацию, я не уверен, поддерживает ли Git LFS фактическое слияние файлов, или когда возникают конфликты, следует использовать «наш» или «их» подход.

Поддерживает ли Git LFS фактическое слияние «реального» содержимого отслеживаемых файлов?

---- ОБНОВЛЕНИЕ 1 ----

Я установил Git LFS на свой компьютер, чтобы отслеживать файлы .xml. Следовательно, содержимое моей XML-модели больше не является XML-содержимым, а является указателем на сервер Git LFS. Вот как теперь выглядит мой XML-файл.

 version https://git-lfs.github.com/spec/v1
 oid sha256:0e23dcebda1977c424e5d0f25fda57d6eff9c2a5bbb6df7dd4985b64cf437d20
 size 53

Следовательно, если я изменю этот XML-файл в двух ветвях и попытаюсь объединиться, это вызовет конфликт. И когда я открываю файл XML для разрешения конфликта, мне нужно выбирать между одним oid и другим:

<<<<<<< HEAD
oid sha256:0e23dcebda1977c424e5d0f25fda57d6eff9c2a5bbb6df7dd4985b64cf437d20
size 53
=======
oid sha256:cbe18ff9b73fad7d5b9cdcd177f9be9cf25bc88db279f3136aed5bfdec7eb0f7
size 91554569
>>>>>>> refs/heads/LFSbr1

---- ОБНОВЛЕНИЕ 2---

Вот что я получаю при выполнении "git lfs env":

WARNING: Reading LFS config from ".gitconfig", not ".lfsconfig". Rename to    ".lfsconfig" before Git LFS v2.0 to remove this warning.
git-lfs/1.3.1 (GitHub; darwin amd64; go 1.6.3; git 9c9dffb)
git version 2.9.0

LocalWorkingDir=
LocalGitDir=
LocalGitStorageDir=
LocalMediaDir=lfs/objects
LocalReferenceDir=
TempDir=lfs/tmp
ConcurrentTransfers=3
TusTransfers=false
BasicTransfersOnly=false
BatchTransfer=true
SkipDownloadErrors=false
FetchRecentAlways=false
FetchRecentRefsDays=7
FetchRecentCommitsDays=0
FetchRecentRefsIncludeRemotes=true
PruneOffsetDays=3
PruneVerifyRemoteAlways=false
PruneRemoteName=origin
AccessDownload=none
AccessUpload=none
DownloadTransfers=basic
UploadTransfers=basic
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f"

Что-то не так в этом?


person letimome    schedule 19.01.2017    source источник


Ответы (2)


Да, это так. Нет никакой разницы, связанной с операцией слияния, между содержимым LFS и не-LFS. Git будет управлять слиянием, а не Git LFS.

Я думаю, что в вашем "git lfs env" отсутствует следующая строка:

git config filter.lfs.process = "git-lfs filter-process"

Убедитесь, что ваш $HOME/.gitconfig содержит следующие строки:

[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
person Marcelo Ávila de Oliveira    schedule 20.01.2017
comment
Да, но поскольку содержимое этого XML-файла теперь является указателем (git-lfs), я объединяю не модель, а указатели. Я не знаю, объясняю ли я себя... Проверьте обновление - person letimome; 21.01.2017
comment
Вы установили git-lfs на свой локальный компьютер? Если вы его установили, вы должны увидеть настоящий файл XML (а не файл-указатель). Я запускаю тест на своей машине, и git merge работает, как и ожидалось, разрешая конфликт довольно хорошо. - person Marcelo Ávila de Oliveira; 23.01.2017
comment
Да, я установил его .... Есть другие предположения, почему я не могу на самом деле объединить содержимое моей модели? - person letimome; 26.01.2017
comment
Проверьте, выполняете ли вы env git lfs env - person Marcelo Ávila de Oliveira; 26.01.2017
comment
Хм... интересно... Я обновил ответ некоторой информацией об окружении. - person Marcelo Ávila de Oliveira; 28.01.2017

Насколько я знаю, Git LFS предназначен для двоичного содержимого (изображения, PDF) или больших сгенерированных файлов (zip, скомпилированные файлы). Если XML-файлы создаются каким-либо процессом, его запуск должен восстановить файл с самыми последними данными. В противном случае, если эти файлы создаются и изменяются несколькими пользователями, я думаю, вам нужно отслеживать их как код, чтобы иметь возможность разрешать конфликты слияния.

person Leonardo Molina    schedule 13.03.2020