Git clone a získání starší verze

Git clone a získání starší verze
« kdy: 17. 11. 2014, 15:54:59 »
Zdravím.

Jakožto pouhý uživatel Linuxu se ve vývojářských nástrojích nevyznám a potřebuji radu.

Pro svůj USB DVB-T tuner jsem si dosud úspěšně překládal ovladač/modul sekvencí příkazů:

git clone --depth=1 git://linuxtv.org/media_build.git
cd media-build
./build
sudo make instal


Jenže po posledním udate jádra jsem provedl totéž a zjistil, že modul který potřebuji není (na rozdíl od jiných) překládán. Nevěděl jsem proč. Až na chatu mi poradili, že mám dost staré jádro (3.2).
Zdá se, že problém je v tom, že vývojáři V4L udělali v "mém" ovladači změnu, která vyžaduje jádro min v. 3.4.

Ale já nechci upgrade distribuce - tudíž se snažím marně zjistit, jak získat verzi V4L zdrojáků před tou změnou.
Čili něco místo toho:
git clone --depth=1 git://linuxtv.org/media_build.git
co by stáhlo verzi např. před 4 měsíci.

viz: http://linuxtv.org/

Díky za rady :-)
« Poslední změna: 17. 11. 2014, 22:17:16 od Petr Krčmář »


dkghjv

Re:GIT CLONE - jak získat starší verzi zdrojáků ?
« Odpověď #1 kdy: 17. 11. 2014, 16:06:56 »
git checkout _hash commitu_

hash mozes najst cez git log alebo si vycheckoutuj nejaky tag (git checkout _tag_), najdi tag cez git tag -l

Děkuji za možnost editace příspěvku.

Re:GIT CLONE - jak získat starší verzi zdrojáků ?
« Odpověď #3 kdy: 17. 11. 2014, 16:32:10 »
Díky, ale potřeboval bych detailní postup "pro blbý".

Na http://git.linuxtv.org/cgit.cgi/media_build.git/log/
si zvolím třeba 2014-09-23:
http://git.linuxtv.org/cgit.cgi/media_build.git/commit/?id=66f40303e5fb32f8a8ed83cce3ffd0d5d725495e

tam je commit:    66f40303e5fb32f8a8ed83cce3ffd0d5d725495e

A teď co. Co, odkud, jakým příkazem mám stáhnout ?

Kód: [Vybrat]
git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495e mi těžko něco stáhne.
A git clone --depth=1 git://linuxtv.org/media_build.git mi stáhne jen nejnovější verzi, ne ?
A bez "--depth=1" to stahovat nemohu - nemám místo na disku.

MartinP

Re:GIT CLONE - jak získat starší verzi zdrojáků ?
« Odpověď #4 kdy: 17. 11. 2014, 16:53:21 »
Musíš to stáhnout bez --depth=1. Klidně na jiném počítači, kde máš místo.

Kód: [Vybrat]
git clone git://linuxtv.org/media_build.git
cd media-build
Stáhne všechny verze
Kód: [Vybrat]
git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495ePřepne se na vybranou verzi.

Teď můžeš zkopírovat všechny soubory z té složky (kromě složky .git) třeba na flashku a přenést je do počítače, kde chceš kompilovat.
Tam je z flashky zkopíruješ na disk a použiješ
Kód: [Vybrat]
./build
make install


Re:GIT CLONE - jak získat starší verzi zdrojáků ?
« Odpověď #5 kdy: 17. 11. 2014, 19:02:19 »
Děkuji. Jakmile budu moci, vyzkouším.

Re:Git clone a získání starší verze
« Odpověď #6 kdy: 17. 11. 2014, 23:14:23 »
vono bez toho depth te to vo moc mista vic stat ani nebude, git to komprimuje

soyo

Re:Git clone a získání starší verze
« Odpověď #7 kdy: 18. 11. 2014, 07:40:34 »
Zdar,
malo by fungovat
Kód: [Vybrat]
git fetch <origin url> <sha>[:remoteBranch]
git fetch --depth=1 git://linuxtv.org/media_build.git 66f40303e5fb32f8a8ed83cce3ffd0d5d725495e

Re:Git clone a získání starší verze
« Odpověď #8 kdy: 18. 11. 2014, 12:22:26 »
1. - MartinP Tak to nepomohlo - stahuje totéž, co bez "--depth=1".
git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495e

sice nezahlásí chybu, ale je bez efektu - stejný průběh překladu - dez modulu, co potřebuji.

2. Zkusil jsem stáhnout (asi celý ?) git dle instrukcí:
http://linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers

Po několika hodinách stahování ...

tedy:
Kód: [Vybrat]
~ $ git clone git://linuxtv.org/media_build.git
~ $ cd media_build
~/media_build $./build --main-git


ale už u patchů to skončilo s chybami, s nimiž si nevím rady.
git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495e ani ruční odebrání patchů nepomohlo.

Kód: [Vybrat]
:/mnt/x/media_build$ make all
make -C /mnt/x/media_build/v4l all
make[1]: Entering directory `/mnt/x/media_build/v4l'
perl scripts/make_config_compat.pl /lib/modules/3.2.0-70-generic/build ./.myconfig ./config-compat.h
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/mnt/x/media_build/v4l/firmware'
make[2]: Leaving directory `/mnt/x/media_build/v4l/firmware'
make -C firmware
make[2]: Entering directory `/mnt/x/media_build/v4l/firmware'
  CC  ihex2fw
Generating vicam/firmware.fw
Generating ttusb-budget/dspbootcode.bin
Generating cpia2/stv0672_vp4.bin
Generating av7110/bootcode.bin
make[2]: Leaving directory `/mnt/x/media_build/v4l/firmware'
Kernel build directory is /lib/modules/3.2.0-70-generic/build
make -C ../linux apply_patches
make[2]: Entering directory `/mnt/x/media_build/linux'
Syncing with dir ../media/
Patches for 3.2.0-70-generic already applied.
make[2]: Leaving directory `/mnt/x/media_build/linux'
make -C /lib/modules/3.2.0-70-generic/build SUBDIRS=/mnt/x/media_build/v4l  modules
make[2]: Entering directory `/usr/src/linux-headers-3.2.0-70-generic'
  CC [M]  /mnt/x/media_build/v4l/altera-lpt.o
In file included from <command-line>:0:0:
/mnt/x/media_build/v4l/compat.h: In function 'prandom_u32_max':
/mnt/x/media_build/v4l/compat.h:1473:9: error: implicit declaration of function 'prandom_u32' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[3]: *** [/mnt/x/media_build/v4l/altera-lpt.o] Error 1
make[2]: *** [_module_/mnt/x/media_build/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-3.2.0-70-generic'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/mnt/x/media_build/v4l'
make: *** [all] Error 2


3. - soyo Také bohužel nefunguje.

Kód: [Vybrat]
$ git fetch --depth=1 git://linuxtv.org/media_build.git 033fe939a61944e8af546f7912829889ce2a935c
fatal: Not a git repository (or any parent up to mount parent /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Kdybych tušil, co může vzejít za problémy, tak bych si schoval zdrojáky V4L z dob, kdy pro jádro 3.2.0 fungovaly.
Jak je ksakru mám teď vydolovat.

Nějaké další nápady ?

Díky.

Re:Git clone a získání starší verze
« Odpověď #9 kdy: 18. 11. 2014, 12:28:46 »
ad 2.

ta chybová hlášení původně vypadala jinak - to vložené je až po novém pokusu po make clean.

Čili se navíc ten strom nějak pokazil.

Jde to tím git příkazem nějak opravit ? Tedy aby se stáhlo jen to, co je na serveru jiné, než na lokální kopii ?

(Raději to totiž celé vykopnu z baráku, než bych to celé ještě jednou stahoval :-) !! )

Re:Git clone a získání starší verze
« Odpověď #10 kdy: 18. 11. 2014, 13:08:50 »
Udělal jsem si clone a ten checkout normálně prošel. Zabalil jsem ti to, má to pár kilo. Netuším, co jsi na tom stahoval celé hodiny.

https://dl.dropboxusercontent.com/u/21634266/dvb-t.tgz

Postup byl takový:

Kód: [Vybrat]
git clone git://linuxtv.org/media_build.git
cd media_build/
git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495

Re:Git clone a získání starší verze
« Odpověď #11 kdy: 18. 11. 2014, 13:18:47 »
Petr Krčmář:

díky, ale to vlastní stahování zdrojáků, FW, ... dělá až ten příkaz ./build. Pak teprve začne ta legrace.

Re:Git clone a získání starší verze
« Odpověď #12 kdy: 18. 11. 2014, 13:23:39 »
Aha, v tom případě už to ale nemá s Gitem nic společného a je zřejmě chyba v tom skriptu nebo přestaly existovat cesty pro staré verze nebo čert ví proč. Ale Git v tom už namočený není.

Re:Git clone a získání starší verze
« Odpověď #13 kdy: 18. 11. 2014, 13:42:18 »
otázkou je, jak vlastně o tu starou verzi "požádat".

Ten ./buld to stáhne a pak začne překládat. Proto jsem to na začátku překladu přerušil (pokud to neskončilo chybou samo) a po make clean jsem začal zakazovat patche, ..., a zkoušel i zde zadat  to: git checkout 66f40303e5fb32f8a8ed83cce3ffd0d5d725495

... a on to bral - znal ten checkout (protože když jsem jsem zadal místo toho 66f40303e5fb32f8a8ed83cce3ffd0d5d725495 cokoli jiného, tak skončil s chybou).

Čili ten git s tím stromem nějak pracovat umí.

Jak říkám, nejsem vývojář a proto se zde ptám.
Odmítám uvěřit tomu, že takovýto velký SW projekt (určitě spravovaný v git-u) neumožňuje získání nějaké určité dřívější verze.

To musí jít - jen vědět jak. A pro mě jsou tyhle věci španělská vesnice a metodou pokusů/omylů je nemožné se něčeho dobrat.

Re:Git clone a získání starší verze
« Odpověď #14 kdy: 18. 11. 2014, 13:47:21 »
Ty mícháš dohromady dvě věci: jedna je získání podoby toho repozitáře ve stavu, v jakém byl v září. To uděláš pomocí toho checkoutu. Objeví se ti tam nějaké zdrojáky a nějaký build skript. Tím s Gitem končíš a musíš přijít na to, proč ti nefunguje ten skript a proč se to nechce sestavit. Ale v tu chvíli používáš skutečně stav z 23. září, tohle se ti podařilo.