Red Hat řeší bezpečnostní incident, při kterém došlo k neoprávněnému přístupu do GitLab instance používané svým konzultačním týmem.
Immich byl vydán v první stabilní verzi 2.0.0 (YouTube). Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.
Český telekomunikační úřad vydal zprávy o vývoji cen a trhu elektronických komunikací se zaměřením na rok 2024. Jaká jsou hlavní zjištění? V roce 2024 bylo v ČR v rámci služeb přístupu k internetu v pevném místě přeneseno v průměru téměř 366 GB dat na jednu aktivní přípojku měsíčně – celkově jich tak uživateli bylo přeneseno přes 18 EB (Exabyte). Nejvyužívanějším způsobem přístupu k internetu v pevném místě zůstal v roce 2024 bezdrátový
… více »Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-10-01. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Jedná o první verzi postavenou na Debianu 13 Trixie.
Byla vydána nová verze 4.6 svobodného notačního programu MuseScore Studio (Wikipedie). Představení novinek v oznámení v diskusním fóru a také na YouTube.
Společnost DuckDuckGo stojící za stejnojmenným vyhledávačem věnovala 1,1 milionu dolarů (stejně jako loni) na podporu digitálních práv, online soukromí a lepšího internetového ekosystému. Rozdělila je mezi 29 organizací a projektů. Za 15 let rozdala 8 050 000 dolarů.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.17. Díky 278 přispěvatelům.
Bylo vydáno openSUSE Leap 16 (cs). Ve výchozím nastavení přichází s vypnutou 32bitovou (ia32) podporou. Uživatelům však poskytuje možnost ji ručně povolit a užívat si tak hraní her ve Steamu, který stále závisí na 32bitových knihovnách. Změnily se požadavky na hardware. Leap 16 nyní vyžaduje jako minimální úroveň architektury procesoru x86-64-v2, což obecně znamená procesory zakoupené v roce 2008 nebo později. Uživatelé se starším hardwarem mohou migrovat na Slowroll nebo Tumbleweed.
Ministerstvo průmyslu a obchodu (MPO) ve spolupráci s Národní rozvojovou investiční (NRI) připravuje nový investiční nástroj zaměřený na podporu špičkových technologií – DeepTech fond. Jeho cílem je posílit inovační ekosystém české ekonomiky, rozvíjet projekty s vysokou přidanou hodnotou, podpořit vznik nových technologických lídrů a postupně zařadit Českou republiku mezi země s nejvyspělejší technologickou základnou.
… více »Radicle byl vydán ve verzi 1.5.0 s kódovým jménem Hibiscus. Jedná se o distribuovanou alternativu k softwarům pro spolupráci jako např. GitLab.
reflog
.
git gc
) na te vetvi, kterou prave vyresetoval ne.
reset --hard
hrůzného, pouze vyresetuje stav indexu (a s --hard
i souborů) k požadovanému commitu. Mně spíš přijde hrůzný ten SVN popis IMO neporovnatelně lepšíZkuste to rozvést?
git reset --hard hash
resetovat do libovolného minulého stavu, i kdyby nebyl dosažitelný z žádné současné větve.
Kdybych chtěl editovat historii komplikovanějším způsobem, tak bych použil rebase
v interaktivním módu asi takto:
[ wiskas@zohar ~/src/ffmpeg (new_conv2)]$ git rebase -i masterto otevře vim se seznamem commitů oproti větvi master.
pick 1e0c8de metadata: wrap conversion tables in a struct. pick 7f728c3 metadata: add callbacks to conversion system. pick 2fa0890 matroska: convert tag keys to uppercase when muxing. pick 0b0fbeb id3v2: merge TYER/TDAT/TIME frames to "date" tag on conversion. pick 3b60299 asf: truncate date to year when muxing. # Rebase aa5b13a..3b60299 onto aa5b13a # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #Jednotlivé commity tady můžu označit pro smazání, editaci atd a git to zařídí.
Why is git better znám a na to video se ještě kouknu v naději že pochopím proč "jsou vnitřnosti nesrovnatelně lepší".V tomhle zrovna pomůže spíš ten Pro Git než Linusova přednáška. Pamatuju si, že se mi líbila, ale že jsem se moc nedozvěděl. Tedy kromě toho, že je git nesrovnatelně lepší
Proč je reverzní mergování (aka undo commit) tak hrůzné?Pokud tomu dobře rozumím, budeš mít v historii nový commit se spoustou smazaných změn?
Jak to řeknu gitu? Když ho resetnu (nebo dokonce hard) na verzi 5 tak to nebude to samé, protože tím oddělám všechny změny 5-10. Nebo ne?To, co jsem udělal já, vrátí ukazatel větve master na commit 5. Commity 6–10 zůstávají v repository a na poslední z nich ukazuje větev
new-feature
, kterou jsem založil před posunem master. (Teda takhle si to alespoň já představuju Při práci se SVN po síti jsem nikdy 5 vteřin nečekal. Na gigabitové síti se slušným HW opravdu není síť limitující faktor, nýbrž disk, a na ten si počkáte i u gitu.My nemáme kancl, pracuju doma. To je pak síť výrazný bottleneck.
Není to o disciplíně, ale o tom, že co máte v historii je v podstatně větším bezpečí, než to, co se váli v working copy.Nevím, jestli si rozumíme. Nejde o to, že bych si něco syslil doma a pak to teprve pustil na síť. I kdybych po každém commitu tlačil změny do centrálního repository, díky stagingu mám lepší kontrolu nad rozdělením provedených změn do commitů.
Ale mikro branchování lze dělat i na SVN. "svn copy" (vytvoření branche) a následné "svn switch" (přepnutí working copy) jsou téměř no-op příkazy.Možná na té rychlé síti, v tomhle nás jasně ovlivňuje pracovní prostřední. Na většinu zbývajících otázek neznám kloudnou odpověď, bohužel, v gitu se zatím moc nevyznám. Něco málo: Git uchovává snímky, nikoliv delty. V týmu zatím git nepoužíváme kvůli absenci opravdu příjemných grafických frontendů (kluci mají averzi k příkazové řádce a grafické nadstavby gitu zatím nejsou tak pěkné jako GUI nad Subversion). Pullování se běžně řeší veřejným repository. Na soukromém pracuju a když jsem hotov, pushnu do veřejného repository na serveru, odkud si může zbytek týmu změny stáhnout (= není potřeba dělat z vlastní mašiny server).
díky stagingu mám lepší kontrolu nad rozdělením provedených změn do commitů.To chápu, ale uvažuju, co se stane s nestagovanými změnami. Budou dále ve working copy a riziko že se náhodou přepíšou (nebo ztratí při změně branche) se zvyšuje s jejich věkem. IOW nejlepší je dělat check in všeho tak cca každou půl až hodinu.
Možná na té rychlé síti, v tomhle nás jasně ovlivňuje pracovní prostřední.Zrovna tohle by mohlo trvat obstojně dlouho i na pomalé síti. Bude se doslova jednat o přenos pár bajtů. Ale je fakt, že SVN exceluje hlavně v uzavřených týmech na lokálních sítích.
kluci mají averzi k příkazové řádce a grafické nadstavby gitu zatím nejsou tak pěkné jako GUI nad SubversionTohle se dá řešit nějakým IDE ;)
Na soukromém pracuju a když jsem hotov, pushnu do veřejného repository na serveruJá jsem právě někde četl že je lepší dělat vždy jenom pull? Pokud děláte tohle, tak to je vlastně stejná situace jako byste měli centrálně SVN a používali git+svn? A pokud udělám push, pak pushuju do nějaké aktivní větve, nebo můžu tímto způsobem pushnout třeba 3 branche?
To chápu, ale uvažuju, co se stane s nestagovanými změnami.Žádné nejsou. Jde o, že se třeba vypravím do souboru X opravit chybu. Cestou si v polovině souboru všimnu jiné, tak ji zároveň opravím též. Pak můžu pomocí
git add -p
obě změny rozdělit do dvou nezávislých commitů, které jdou okamžitě do historie.
Zrovna tohle by mohlo trvat obstojně dlouho i na pomalé síti. Bude se doslova jednat o přenos pár bajtů.Nevím proč, ale trvá to. Máme mizerný server v zámoří, zatím nebyl čas přejít na lepší řešení. V gitu je to místní operace:
$ time ( git branch foo && git branch -D foo ) Deleted branch foo (was 5490107). real 0m0.122s user 0m0.004s sys 0m0.016s
Já jsem právě někde četl že je lepší dělat vždy jenom pull? Pokud děláte tohle, tak to je vlastně stejná situace jako byste měli centrálně SVN a používali git+svn? A pokud udělám push, pak pushuju do nějaké aktivní větve, nebo můžu tímto způsobem pushnout třeba 3 branche?Veřejné repository pro pushe jsou naprosto běžná praxe, viz celý GitHub. Rozdíl je v tom, že push můžu dělat třeba jen jednou denně, když se práce stabilizuje, když mám připojení k síti, když končím s prací. Když mi během dne ujede ruka a vyrobím nesmyslný commit, můžu ho zredigovat podle potřeby a veřejná historie zůstane čistá. Pushnout se dá cokoliv. Jeden commit, jedna větev, víc větví, tagy.
Jde o, že se třeba vypravím do souboru X opravit chybu. Cestou si v polovině souboru všimnu jiné, tak ji zároveň opravím též.Aha, tak to já si radši napíšu na papírek, protože se může stát, že bych mezitím zapomněl na tu první chybu. :)
Tady asi budou hrát roli síťové latence, případně mrštnost serveru.real 0m0.122s
$ time (svn cp ^/trunk ^/branches/boo -m testboo && svn rm ^/branches/boo -m testboo) Committed revision 3942. Committed revision 3943. real 0m0.856s user 0m0.013s sys 0m0.013s
Veřejné repository pro pushe jsou naprosto běžná praxeOK. Já sleduju jen vývoj jádra a pár dalších projektů a tam lítají spíš pull requesty.
Například to reverzní mergování (undo commit)?Je možné přepsat historii tak, aby ten commit vypadl (viz výše), nebo je možné přidat commit revertující ty změny, stejně jako v SVN (git revert). Každé má své výhody i nevýhody.
Nebo jak řeší git přesun souborů/adresářů a následný merge nové struktury?Z vlastní zkušenosti (ale stalo se mi to jen jednou) to řeší dobře. Někdy je ale ta detekce kopií dost otravná.
Co se stane, když z repozitáře smažu 3 náhodné revize?Jak smažu? Pokud půjdu na killing spree do adresáře .git a smažu náhodné soubory, pak to pochopitelně přestane fungovat. Jinak nevím, co myslíš tím "smažu".
Jak řešíte zálohy?Nevím jak to kdo řeší, ale kromě periodického fetchování do zálohy funguje na .git adresář i cp -a, takže i jakýkoli jiný zálohovací program.
Někdy je ale ta detekce kopií dost otravná.Např?
Pokud půjdu na killing spree do adresáře .git a smažu náhodné soubory, pak to pochopitelně přestane fungovat. Jinak nevím, co myslíš tím "smažu".Jo, myslím to takhle, respektive třeba když se to nějakým způsobem poškodí. Jde nějak přesněji definovat co a za jakých podmínek přestane fungovat?
funguje na .git adresář i cp -a, takže i jakýkoli jiný zálohovací program.Jasně, myslel jsem to spíše procesně. U SVN stačí zálohovat repo, u gitu to vypadá že by si měl zálohu každý pořešit sám?
Někdy je ale ta detekce kopií dost otravná. Např?Např. když je v projektu hodně skoro stejných souborů (třeba makefily kde většinu zabírá licence), tak to detekuje kopie in mezi naprosto nesouvisejícími soubory a je spíš loterie, který si vybere. Pak to minimálně vypadá blbě v git show.
Jo, myslím to takhle, respektive třeba když se to nějakým způsobem poškodí. Jde nějak přesněji definovat co a za jakých podmínek přestane fungovat?Pokud si smažeš blob (data nějakého souboru), tak jsi o něj přišel. Pokud commit, tak teoreticky jde (pokud ho nutně nepotřebuješ) předělat historii větve tak, aby na ní nebyl. Když si smažeš odkaz na větev nebo tag, jde to spravit poměrně bezbolestně (pokud víš kam ukazoval - není potřeba pamatovat si sha1, stačí prohrabat repozitář a vybrat si z nereferencovaných commitů ten svůj. Pokud smažeš pack, záleží, co v něm bylo.
reset --hard
).
Tiskni
Sdílej: