Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Jan S 21. 02. 2018, 18:52:31
-
Zdravim,
potrebuji zpracovat vystup z prigazu git log, ktery ovsem do vystupu vklada specialni znaky pro barveni v terminalu. Me tyto znaky delaji neplechu.
Nechci barveni vypinat globalne v konfiguraci. Zkousel jsem:
git log --no-color i git log --color=never (coz by melo byt ekvivalentni), nicmene bez uspechu. Google vede take jen timto smerem...
Nejake napady?
Diky
P.S. Git mam verze 1.7 a bohuzel s tim nic nenadelam...
-
A nestaci git-u nakecat doslovne, ze mas hlupy terminal :-). V mojom testovacom pripade sa sice git trosku stazuje, ale ide to:
$ TERM=dumb; git log
WARNING: terminal is not fully functional
- (press RETURN)
....
-
v terminalu nejlepe tig
ncurses program tig zobrazujici historii, status, diff komitu.
-
Potreba vznikla v ramci pythonovskeho skriptu. Git je volany pomoci modulu sh. Takze idealni by bylo reseni bud primo pri volani gitu, a nebo ty znaky pak nejak vykuchat v pythonu.
Kuchani jsem skousel regexy, jenze ty ke znakum pristupovali jako ke by byly rozepsane pomoci "\" a nadelali jen dalsi paseku.
-
a git log --format=format:... daky vlastny format aby si vytiahol co treba? to bolo uz v 1.7 - https://git-scm.com/docs/pretty-formats/1.7.0
-
Zkusil jsem na hulváta
git log | head
a kupodivu to jede bez barviček. Stačí jen "head" nahradit vhodnějším programem, třeba v Pythonu.
-
a git log --format=format:... daky vlastny format aby si vytiahol co treba? to bolo uz v 1.7 - https://git-scm.com/docs/pretty-formats/1.7.0
Prikaz, ktery chci pouzit, obsahuje dokonce --pretty=format:... vytazeni konkretni polozky (napr. %H), ani hratky s baravmi (napr. %Creset) pacientovi nepomahaji. Pro predstavu:
>>> repr(sh.git.log('--no-color','-n','1',"--pretty=format:%H"))
'\x1b[?1h\x1b=\r740bb4525a909c51717224ddb82b3c2c86219a61\x1b[m\n\r\x1b[K\x1b[?1l\x1b>'
Zkusil jsem na hulváta
git log | head
a kupodivu to jede bez barviček. Stačí jen "head" nahradit vhodnějším programem, třeba v Pythonu.
Diky za tip, ale priznavam se, ze jsem dostatecna lama na to, abych nahradu head nedal... Zkousel jsem ty regexy, ale tam je potiz, ze na vystup z sh se musi nejdriv aplikovat repr nebo unicode. Unicode odfiltruje znaky \x, \r, \n, ale zbydou tam ty 1b,1h a spol.
Priklad vyse jsem nakonec vyresil pomoci :
>>> repr(sh.git('rev-parse','HEAD'))
'740bb4525a909c51717224ddb82b3c2c86219a61\n'
Ale stejne by me zajimalo reseni barvicek z vyssiho principu...
P.S. Asi by se to dalo vyresit pomoci modulu GitPython, ale na tech par volani je sh.git jednodussi (napr. nemusim resit umisteni korenoveho adresare gitu)...
-
Diky za tip, ale priznavam se, ze jsem dostatecna lama na to, abych nahradu head nedal...
v případě úplně nejhorším poslouží "cat"
-
Barvicky jsou jedna vec, ale u nas se rozmohla moda pridavat do commit messages emoji :) ;) ;D :( :o Jestli vam to taky nerozhodi parser.
-
Barvicky jsou jedna vec, ale u nas se rozmohla moda pridavat do commit messages emoji :) ;) ;D :( :o Jestli vam to taky nerozhodi parser.
u nas mame taky emoji <|>
-
Barvicky jsou jedna vec, ale u nas se rozmohla moda pridavat do commit messages emoji :) ;) ;D :( :o Jestli vam to taky nerozhodi parser.
Tak v commit message se to da resit vytahanim za usi, moje barvicky produkuje samotny git...
-
https://gist.github.com/parmentf/035de27d6ed1dce0b36a