Git несоответствие LFS? - PullRequest
       18

Git несоответствие LFS?

0 голосов
/ 15 января 2020

У меня есть несколько (двоичных) файлов, которые я недавно добавил (как файлы LFS) в проект, все зафиксировано и отправлено (в GitLab, не уверен, что это актуально) с моей домашней машины. Там я запускаю git status и вижу, что все обновлено. Затем я синхронизирую c (через rsync через s sh) весь репо на другой машине, но обнаруживаю, что git status сообщает, что файлы различаются:

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   pkg/site-cs/src/cs-dem.grd

и для git diff

diff --git a/pkg/site-cs/src/cs-dem.grd b/pkg/site-cs/src/cs-dem.grd
index 9d52a1f..1c86687 100644
Binary files a/pkg/site-cs/src/cs-dem.grd and b/pkg/site-cs/src/cs-dem.grd differ

Запуск md5sum для файла дает одинаковый результат на обеих машинах. Если я запускаю

git revert pkg/site-cs/src/cs-dem.grd

на удаленном компьютере, то md5sum больше не совпадает с этим на моем домашнем компьютере, но git на удаленном компьютере сообщает, что этот файл теперь не изменен.

Я немного сбит с толку этой кажущейся непоследовательностью. У кого-нибудь есть объяснение (даже лучше, исправление).

[править]

О, даже странно, на удаленной машине после syn c

> ls -l pkg/site-cs/src/cs-dem.grd
-rw-rw-r-- 1 jjg jjg 652304 Jan 13 00:09 pkg/site-cs/src/cs-dem.grd

> hd pkg/site-cs/src/cs-dem.grd | head
00000000  43 44 46 01 00 00 00 00  00 00 00 0a 00 00 00 02  |CDF.............|
00000010  00 00 00 01 78 00 00 00  00 00 01 e1 00 00 00 01  |....x...........|
00000020  79 00 00 00 00 00 01 51  00 00 00 0c 00 00 00 05  |y......Q........|

> git checkout pkg/site-cs/src/cs-dem.grd

> ls -l pkg/site-cs/src/cs-dem.grd
-rw-rw-r-- 1 jjg jjg 131 Jan 15 12:03 pkg/site-cs/src/cs-dem.grd

> cat pkg/site-cs/src/cs-dem.grd
version https://git-lfs.github.com/spec/v1
oid sha256:8ccf1b5183566dd44d05bcec97940bc70c0a7b348a07c2e659c0d64db0db253e
size 652304

это файл указателя LFS, и теперь ls-files неправильно сообщает размер файла.

> git lfs ls-files -d
filepath: pkg/site-cs/src/cs-dem.grd
    size: 652304
checkout: false
download: true
     oid: sha256 8ccf1b5183566dd44d05bcec97940bc70c0a7b348a07c2e659c0d64db0db253e
 version: https://git-lfs.github.com/spec/v1

Что меня удивляет, так это то, как две идентичные копии репо ведут себя по-разному, как если бы к ним было какое-то внешнее состояние.

На обеих машинах установлен исполняемый файл git-lsf путь.

...