[MEGOLDVA] git repo fájl lista olvasása

 ( jupiter2005ster | 2018. szeptember 27., csütörtök - 14:41 )

hello

tudja valaki, hogy hogyan lehet egy git repo állomány listáját elkészíteni anélkül, hogy pull/fetch/checkout tolnánk? a repo relatíve nagy és minden alkalommal törlődne ezért is szeretném elkerülni ezeket.

néztem a git ls-tree -r refs/heads/develop --name-only

de szimplán elhajt ezzel:
fatal: Not a valid object name refs/heads/develop

persze a kapcsolat jó, mert pullozni/fetchelni tudok, de ahogy írtam előbb nem szeretnék. nekem csak egy fájlistára van szükségem.

UPDATE
végül is a megoldás

git init
git remote add origin GITREPOSITORY
git archive --remote=GITREPOSITORY BRANCH:PATH > archive.tar

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

A file-ok listázásához mindenképpen szükség van repository-ra, bár a teljes history-ra és a worktree-re nem. Egy (nagyon) shallow clone jelentősen csökkentené a letöltendő adatmennyiséget, a bare pedig elkerülné a checkout-ot:

git clone --bare --depth=1 --branch=develop server.com/repo && git -C repo.git ls-tree -r --name-only HEAD

Az alternatíva a szerverhez való ssh és az ott lévő repository-hoz való közvetlen olvasási hozzáférés lenne...

én itt (https://stackoverflow.com/questions/1178389/browse-and-display-files-in-a-git-repo-without-cloning) az olvasom h ay ls-tree -nek működnie kéne, de nem :(
a clone-al az a gond, h feleslegesen huzza le a repot
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/

"én itt az olvasom h ay ls-tree -nek működnie kéne, de nem"

Mert nem neki van igaza, hanem nekem :)

"a clone-al az a gond, h feleslegesen huzza le a repot"

A --depth=1 --branch=<...> opciókkal nem húzza le "a repót", csak egy töredékét.

szerk.:

$ time git clone --bare https://github.com/torvalds/linux linux-full.git
[...]
Receiving objects: 100% (6246710/6246710), 2.16 GiB | 1.91 MiB/s, done.

real	29m48.086s
user	32m9.347s
sys	1m26.693s
$ time git clone --bare --depth=1 --no-tags --branch=master https://github.com/torvalds/linux linux-shallow-notags.git
[...]
Receiving objects: 100% (65530/65530), 174.87 MiB | 2.23 MiB/s, done.

real	0m48.874s
user	0m0.007s
sys	0m0.009s
$ du -hs linux-*
2.4G	linux-full.git
177M	linux-shallow.git

A git archive --remote nem működik minden szerverrel, pl. GitHub, de a web felületről letölthető .zip snapshot nagyobb, mint a shallow clone:

$ wget -q -O linux.zip https://codeload.github.com/torvalds/linux/zip/master
$ du -h linux.zip
191M	linux.zip

Erről a depth paraméterről nem is hallottam eddig, jó tudni. Mindig tanul az ember valamit.

Ha jól értem ezzel a megoldással is lejön a hálózaton az adott branch pillanatképének adott részfája, de legalább csak annyi. A fájlok listája mellett a tartalom is bekerül a tarba.