Autor Zpráva
Tori
Profil
Pěkné poledne.
Pokud mám projekt, kde jsou paralelně živé alespoň dvě verze (= aktuální (+bugfixy) a vývojová), je lepší mít je uložené do různých adresářů v rámci master, anebo pro každou verzi samostatnou větev? (Pro každou verzi se liší i testy + docs.) Asi větve, že?
Venca V
Profil
Určitě.
Tori
Profil
Tak ještě jeden související dotaz:
Pokud mám nějaký projekt, který chci sdílet na githubu, je možné nějak nastavit, aby se na github posílaly jen některé adresáře? Např. nějaké svoje poznámky + nástroje si chci verzovat, ale nechci je dávat veřejně. Některé z těch neveřejných adresářů jsou závislé na verzi (= větev), jiné ne. Jak byste tohle řešili?
Zkoušela jsem .gitignore, ale i když v něm byly soubory .*, tak github mi stejně neumožnil mít odlišný lokální .gitignore, ale chtěl je synchronizovat. Ale možná jen dělám něco špatně. Díky za případnou radu.
juriad
Profil
Git je distrubovaný verzovací systém a tak se nikdy, opakuji nikdy nemůžou repozitory lišit v obsahu commitu. Mohou se lišit jen v existenci celých commitů.

Při commitu git určí hash commitu podle hashe všech změněných souborů, hashe rodičů commitu a některých dalších vlastností (kdo a kdy commitnul, komentář).
Proto se ti nikdy nepodaří mít neúplný repozitář ve smyslu, že obsahuje některé soubory a jiné ne. Na jednu stranu je to silný mechanizmus, který zaručuje, že historie je neměnná a pokus o její změnu vždy selže.

Tudy tedy cesta nevede, ale můžeš mít větev verze_github, do které budeš rebase-ovat (nebo cherry-pickovat, to je skoro to samé) všechny změny ve větvi verze a vyhodíš odtud všechny soubory, které nechceš mít na githubu. Merge ti nebude fungovat, protože by ti referencoval commity ve větvi verze spolu se všemi objekty stromu větve verze. Ty dvě větve budou permanentně oddělené a nikdy se nesmí spojit mergem. To také znamená, že repozitory bude obsahovat duplicity téměř všech objektů - dvojnásobná velikost.

Druhou možností je git sub-module. Ale o tom moc nevím, nastuduj si o tom něco sama. Moc vhodný také nebude, ale možná by šel přiohnout.

Zvaž sama, jestli ti to za to úsilí stojí...


Můžeš samozrejmě pushnout je některé větve, to jsem zapomněl explicitně zmínit.
Myšlenka distribuovaných VCS je taková, že každá repozitory má úplnou informaci a jsou od sebe z hlediska historie nerozeznatelné. Ochuzuješ se o možnost kdekoli provést clone repozitory na githubu a pokračovat v práci. Také potom nebude platit, že na githubu máš zálohu.
Jan Tvrdík
Profil
Tori:
je možné nějak nastavit, aby se na github posílaly jen některé adresáře?
Ne, tohle nejde udělat. Můžeš si nechat automaticky vygenerovat nový repozitář, který bude obsahovat pouze tebou zvolené adresáře (viz Git - commitnutí se zpětným datem), ale spíš bych to nedoporučoval. Dala by se i zautomatizovat synchronizace mezi těmi repozitáři pomocí hooků, ale vyžadovalo by to určité počáteční úsilí si na to ty skripty napsat.

Jak byste tohle řešili?
Většina lidí, co znám, to řeší buď tak, že ty svoje věci a) neverzuje b) verzuje v jiném repozitáři c) verzuje v jiné větvi (viz juriad). Záleží, co je v dané konkrétní možnosti realizovatelné. Nevím o nikom, kdo by použil řešení s druhým automaticky generovaným repozitářem.

github mi stejně neumožnil mít odlišný lokální .gitignore
Lokální .gitignore mít můžeš, ale není to to, co hledáš. Soubor .gitignore slouží k ignorování souborů, které nechceš z nějakého důvodu commitnout (obvykle se jedná o dočasné soubory nebo soubory vytvořené editorem, který používáš). Neslouží k výběru souborů, které se pushnou na server.

Vaše odpověď

Mohlo by se hodit

Pokuste se již v titulku uvést název programu související s tématem.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: