Portál AbcLinuxu, 29. dubna 2024 00:27


Dotaz: Jak získat starší verzi git repozitáře

otula avatar 25.12.2009 15:25 otula | skóre: 45 | blog: otakar | Adamov
Jak získat starší verzi git repozitáře
Přečteno: 578×
Odpovědět | Admin
Asi jsem úplný magor, ale nedokážu stáhnout starší verzi git repozitáře GIMPu. S SVN to bylo snadné, ale tady jsem z toho jelen.

Aby to nebyl úplně teoretický dotaz, stažení aktuální verze vypadá takto:
$ git clone git://git.gnome.org/gimp gimp
A chtěl bych se dopracovat k těmto verzím, abych našel, kde rozbili základ malovacího nástroje, a k tomu zjistit, zda důvod, proč mi teď kompilace neprojde ani přes počáteční autogen.sh, je u mne, nebo jinde:
commit b7ae59e9a470fa6e7cfdade1613729c94c3e3a5e
Author: Nils Philippsen <nils@redhat.com>
Date:   Wed Dec 9 17:11:21 2009 +0100

    SGI: allocate memory more consistently

    Allocate memory for both pixels and rows in the same way to make the
    code easier understandable.

commit 4d9724f2f67bca4005ca50c22afccd7bf30cc2e8
Author: Simon Budig <simon@gimp.org>
Date:   Wed Dec 9 16:05:05 2009 +0100

    SGI: fix out of bounds writes

    The functions read_rle8() and read_rle16() didn't check if the addresses
    to which they wrote are in bounds when expanding runlength encoded data.

commit 838be627be38d3ff25fddf7af16f0c98ddf4cc04
Author: Nils Philippsen <nils@redhat.com>
Date:   Mon Dec 7 16:21:44 2009 +0100

    SGI: cast allocation calculations

    In order to avoid overflows when calculating needed memory, cast the
    first variable used into a large enough type so the whole calculation is
    done in that type.

commit daaf1d2b97c74271d9f8cc517f16b53d0089e094
Author: Nils Philippsen <nils@redhat.com>
Date:   Wed Dec 9 15:43:28 2009 +0100

    SGI: sanitize input data

    Refuse nonsensical xsize, ysize, zsize values.

commit 5aa82f3b6d55280012efc6973c799a46b2ad5d75
Author: Nils Philippsen <nils@redhat.com>
Date:   Tue Dec 8 17:44:54 2009 +0100

    PAT: sanitize input data

    Guard against bogus values of ph.width, ph.height and document why there
    are no allocation overflows.


commit b053021a2938d5967edfc966470bfac9257fc03a
Author: Nils Philippsen <nils@redhat.com>
Date:   Tue Dec 8 16:36:10 2009 +0100

    GBR: more input data sanitation

    Guard against bh.width or bh.height > GIMP_MAX_IMAGE_SIZE, only allow
    valid values of bh.bytes.

commit 869dcd7be1c1ec991256ba079f670574f1e57b90
Author: Nils Philippsen <nils@redhat.com>
Date:   Fri Dec 4 11:17:21 2009 +0100

    GBR: sanitize input data

    Guard against bogus zero width, height, bytes and allocation overflows.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (otula (tazatel))
25.12.2009 15:33 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skús niečo ako
git checkout b7ae59e9
(prípadne sa môžeš pozrieť aj na git-bisect a git-blame)
otula avatar 25.12.2009 15:49 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
To už jsem zkoušel. Na to dostanu takovouto odpověď:
Note: moving to '869dcd7be1c1ec991256ba079f670574f1e57b90' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at 869dcd7... GBR: sanitize input data
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
25.12.2009 16:32 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Keď to chceš len otestovať, tak novú vetvu vytvárať nemusíš.

Práve teraz som si ten repozitár naklonoval a autogen.sh prebehne bez problémov. Nemám gtk-doc, tak som to musel zakázať, ale žiadny ný problém sa tam nevyskytol. Akú chybu ti to vlastne písalo?
otula avatar 25.12.2009 17:03 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Hm, mně skončí autogen.sh tímto:
plug-ins/common/Makefile.am:204: `%'-style pattern rules are a GNU make extension
a dál se nic neděje, configure se nevytvoří.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
25.12.2009 17:27 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
To je len upozornenie, že to bude potrebovať gmake.

Skús
automake-1.9 --add-missing --verbose
autoconf --verbose
intltoolize --automake
(možno uvidíš, v čom je problém)
otula avatar 25.12.2009 18:05 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Děkuji.

Uvedené příkazy mi vypsaly spoustu hlášek, které mně toho moc neřeknou, ze začátku mi to hlásilo takovéto věci:
...
configure.ac: no proper invocation of AM_INIT_AUTOMAKE was found.
configure.ac: You should verify that configure.ac invokes AM_INIT_AUTOMAKE,
configure.ac: that aclocal.m4 is present in the top-level directory,
configure.ac: and that aclocal.m4 was recently regenerated (using aclocal).
configure.ac:265: installing `./install-sh'
automake-1.11: thread 0: reading /usr/share/automake-1.11/am/header-vars.am
automake-1.11: thread 0: reading app/Makefile.am
app/Makefile.am:43: ENABLE_GIMP_CONSOLE does not appear in AM_CONDITIONAL
app/Makefile.am:84: OS_WIN32 does not appear in AM_CONDITIONAL
app/Makefile.am:88: USE_BINRELOC does not appear in AM_CONDITIONAL
...
vytvořil se pak i soubor configure, ale stejně to dál neprojde:
configure.ac:71: error: possibly undefined macro: AM_INIT_AUTOMAKE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:72: error: possibly undefined macro: AM_CONFIG_HEADER
configure.ac:128: error: possibly undefined macro: AM_CONDITIONAL
configure.ac:149: error: possibly undefined macro: AM_PROG_CC_C_O
configure.ac:152: error: possibly undefined macro: AM_DISABLE_STATIC
configure.ac:153: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
configure.ac:154: error: possibly undefined macro: AM_PROG_LIBTOOL
configure.ac:156: error: possibly undefined macro: AM_PROG_AS
configure.ac:159: error: possibly undefined macro: AM_MAINTAINER_MODE
configure.ac:410: error: possibly undefined macro: AM_BINRELOC
configure.ac:430: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT
configure.ac:459: error: possibly undefined macro: AM_PATH_GLIB_2_0
configure.ac:460: error: possibly undefined macro: AC_MSG_ERROR
configure.ac:488: error: possibly undefined macro: AM_PATH_GTK_2_0
configure.ac:1473: error: possibly undefined macro: AM_PATH_ALSA
configure.ac:1656: error: possibly undefined macro: AM_PATH_PYTHON
configure.ac:1658: error: possibly undefined macro: AM_CHECK_PYTHON_HEADERS
./configure: line 2320: syntax error near unexpected token `no-define'
./configure: line 2320: `AM_INIT_AUTOMAKE(no-define dist-bzip2)'

Chjo...
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
25.12.2009 18:54 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Ak si predtým nespúšťal ten autogen.sh musíš najskôr spustiť
aclocal-1.9
libtoolize --force
autoheader
Potom by už automake nemal písať tie chyby.
otula avatar 25.12.2009 19:29 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Andreji, mockrát díky, prošlo to o pořádný kus dál, nakonec to ale stejně skončilo během configure na tomto:
config.status: error: cannot find input file: `tools/Makefile.in'
Nechci tě trápit mým rozbitým systémem, něco se muselo podělat během některé aktualizace (občas mi rolling-updates docela žere nervy) po 15. 12. Zkusím projít, co vše se aktualizovalo a kdyžtak vyzkouším downgrade, jestli se mi to podaří dostat do funkčního stavu.

Hezký večer, Ota
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
25.12.2009 20:00 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Ten súbor sa generuje takmer až ako posledný, takže problém je pri tom automake.

Jediná zaujímavejšia vec, čo tam je je niečo s python. Zobrazuje sa mi tam niečo ako:
automake-1.9: thread 0: reading /usr/share/automake-1.11/am/python.am
plug-ins/pygimp/Makefile.am:118: installing `./py-compile'
(ten prvý riadok len ak použijem parameter --verbose, ten druhý tam je aj keď spustím autogen.sh)
Marián Kyral avatar 25.12.2009 15:36 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
git checkout a git bisect je to co hledáš.
otula avatar 25.12.2009 15:51 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
U checkout právě netuším, jak ho použít, takže si právě připadám jak magor. A bisect asi není úplně to, co bych dokázal využít.
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Marián Kyral avatar 25.12.2009 20:00 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
git-checkout toho umí docela dost:


# vytvoření nové větve z aktuální větve
git checkout -b "test_branch"

# vytvoření nové větve z tagu ver-1.1
git checkout -b "test_branch_v1.1" ver-1.1

# přepnutí do větve "test_branch"
git checkout "test_branch"

# smažeme soubor
rm test.txt

# a zase jej obnovíme
git checkout test.txt

# můžeme jej obnovit z libovolného commitu
git checkout test.txt 124457412

# a vrátíme se zpátky do hlavní větve
git checkout master 
gitmagic - základní triky

git-bisect je taky mocný nástroj, ale předpokládá to, že se ti povede alespoň jedna verze přeložit ;-) (git bisect: A practical example with yum)
otula avatar 25.12.2009 20:58 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Ono nakonec fungovalo přesně to, co psal Andrej. Přitom jsem to (pitomec) zkoušel, ale čekal jsem, že se mi zobrazí něco podobného, jako při stáhnutí aktuálního stromu (teda že uvidím nějaký seznam s plusy a mínusy zobrazujícími, kolik toho bylo přidáno a smazáno), takže jsem si myslel, že to nefunguje, zatímco to fungovalo :)

I když to nic nemění na tom, že bych si měl někdy udělat čas něco se o git naučit ;-)

Díky!
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
Marián Kyral avatar 25.12.2009 22:01 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Ono nakonec fungovalo přesně to, co psal Andrej. Přitom jsem to (pitomec) zkoušel, ale čekal jsem, že se mi zobrazí něco podobného, jako při stáhnutí aktuálního stromu (teda že uvidím nějaký seznam s plusy a mínusy zobrazujícími, kolik toho bylo přidáno a smazáno), takže jsem si myslel, že to nefunguje, zatímco to fungovalo :)
Tak to mně myslím na začátku taky mátlo.
otula avatar 25.12.2009 22:06 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
:)
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.
25.12.2009 19:47 ApoC
Rozbalit Rozbalit vše Re: Jak získat starší verzi git repozitáře
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aktualni checkoutnutou vetev si muzes "odrolovat" na konkretni commit pomoci git reset --hard _HASH_

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.