Tema: Re: Ar yra koks SVN tools'as
Autorius: VaidasB
Data: 2012-10-23 12:31:28
Nu kai iš lempos pradeda nepushint tai norisi mest nafig.

ačiū, padėjo: (git config --bool core.bare true).

On 2012.10.23 11:50, Laimis wrote:
> VaidasB rašė:
>> nu va kitas pavyzdys/problema.
>> kažkas susifakapino kai perkėliau projektą į gilesnį folderį. Pushinant
>> gaunu idiotiškus messagus apie bare repozitory ir pan. siūlo daryt
>> branchą ir pan, kam man to reik? nu padariau aš tą branch, supushino
>> kažkur. ir dabar neesu tikras ar mano kodas guli serveryje ar ne. vietoj
>> to kad dirbčiau, kas reikia, turiu aškintis gito "privalumus".
>
> Konkretumas, tai kaip bobos už kampo: kažkas kažką kažkur kažkaip... :-)
> Su tokiu konkretumu, tai turi dar mažiau šansų išsiaškinti svn
> susifakup'inimo privalumus...
> Konkrečiai kas susivėlė ir ką konkrečiai darant? Konkrečiai kokie
> klaidos pranešimai?
>
> Bet šiaip jau veikiausiai pražiopsojai _tai_ darydamas git push:
> -f, --force
> Usually, the command refuses to update a remote ref that is not an
> ancestor of the local ref used to overwrite it. This flag disables the
> check. This can cause the remote repository to lose commits; use it
> with care.
>
> Bet apie viską plačiau; pabandysiu paaiškini esmę:
> git push atsisako push'inti, jei remote repozitorija yra su darbine
> direktorija ir push'inamas branch'as buvo lokaliai checkout'intas.
> Supaprastinus, tai tokiu būdu saugomasi, kad nupush'inus nebūtų
> perrašyti remote repozitorijos darbinės direktorijos (ir indekso)
> pakeitimai, kurie galbūt net nebuvo commit'inti.
> Analogijai tiktų pavyzdys, jei svn'e išsicheckout'intum kokią
> direktoriją, joje pridarytum pakeitimų ir paskui ant viršaus (pakeitimų
> nenucommit'inus) norėtum vėl išsicheckout'inti kokią direktoriją.
> Rizikuoji prarasti pakeitimus ir svn'as to neleistų (nebent nurodytum
> --force). Logiška, kad ir git'as to neleidžia, ar ne?
>
> Jei žinai, ką darai ir esi tikras, kad remote repozitorijos darbinės
> direktorijos (su išchekout'intu branch'u, kurį ir push'ini) niekas
> nekeičia (ten lokaliai niekas nedirba), tai gali kaskart naudoti --force
> raktą, tačiau nesiūlyčiau taip daryti ir prie to priprasti.
>
> Kitas variantai (jei remote'e kažkas dirba lokaliai):
>   - traukti pakeitimus iš tavęs remote pusėje: git pull;
>   - push'inti į atskirą branch'ą remote repozitorijoje; tas, kas dirba
> pats susimerge'ins pakeitimus, kuriuos sustūmei.
>
> Variantai, kai remote niekas lokaliai nedirba (tai — centrinė/serverinė
> repozitorija):
>   - susikurti dummy branch'ą ir į jį persijungti, t.y. jį
> išsichek'outinti: git branch dummy; git checkout dummy (tada bus galima
> push'inti į šią remote repozitoriją);
>
>   - paversti tą remote repozitoriją bare repozitorija, kuri apskritai
> neturi darbinės direktorijos. Tą buvo galima padaryti nuo pat pradžių:
> git --bare init, o dabar paversti remote repozitoriją į bare galima:
> 1) pašalinti visus failus (išskyrus .git katalogą), esančius joje;
> 2) perkelti .git katalogo turinį į pačią repozitorijos direktoriją:
>     (mv .git/* .);
> 3) (git config --bool core.bare true).
>
>
>
>
>
>