Как объединить содержимое файлов, отслеживаемых 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"

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

1 ответ

Да, это так. Нет никакой разницы, связанной с операцией слияния, между содержимым 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

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

Другие вопросы по тегам