git-svn-helpers is een verzameling van de command line tools die sterk vereenvoudigt het gebruik van git voor svn repositories.
hoofddoel git-svn-helpers is om het opzetten van een lokale git repository na een bestaande svn checkout een 'no-brainer'.
Ook wordt ingegaan op het gebruik van een single-git svn repository voor het werken op meerdere kassa's van (meestal) verschillende takken en schakelen tussen hen.
Basic gebruik (Voorbeeld)
Managementsamenvatting:
> Cd pad / naar / svn / repo
> Gitify
Hier is een voorbeeld sessie:
> Cd / tmp
> Svn co https://svn.plone.org/svn/plone/plone.app.form/branches/1.1 plone.app.form
Een 1.1 / setup.py
...
Uitgecheckt herziening 27.228.
> Cd plone.app.form
> Gitify
Geen git repository gevonden in /Users/tomster/.gitcache/.
Initiëren klonering in cache.
Analyseren svn log ...
Het klonen https://svn.plone.org/svn/plone/plone.app.form/ van r10593: 27.155 in /Users/tomster/.gitcache/
Geïnitialiseerd lege Git repository in /Users/tomster/.gitcache/plone.app.form/.git/
...
Git branch 'local / 1.1' volgt nu svn tak '1.1':
# Op tak lokale / 1.1
niets te plegen (working directory clean)
> Git branch
* Lokale / 1.1
& Nbsp; meester
Aandachtspunten:
& Nbsp; * gitify beperkt het klonen van de herzieningen in de svn log van het pakket root (hier https://svn.plone.org/svn/plone/plone.app.form/). Een grote tijdsbesparing, vooral op grote repositories (zoals plone.collective)
& Nbsp; * gitify schiep de git repository bij ~ / .gitcache niet op zijn plaats
& Nbsp; * gitify creëerde een lokale vestiging lokale / 1.1 dat de (externe) svn tak 1.1 volgt en is overgeschakeld naar het
Multiple check-outs
In de praktijk zul je vaak werken met verschillende lokale kopieën van een bepaalde repository, dat wil zeggen op de stam en op een functie tak. Dat is wanneer de .gitcache bovenstaande directory gemaakt van pas komt. Laten we gaan onze vorige checkout uit de weg en maak een onderhoud kassa die trunk volgt:
> Cd ..
> Mkdir feature-tak
> Mv plone.app.form feature-tak /
> Mkdir onderhoud
> Cd onderhoud /
> Svn co https://svn.plone.org/svn/plone/plone.app.form/trunk plone.app.form
Een plone.app.form / setup.py
...
& Nbsp; U plone.app.form
Uitgecheckt herziening 27.228.
Wat gebeurt er als we gitify hier lopen ?:
> Cd plone.app.form /
> Gitify
Git branch 'local / trunk' volgt nu svn tak 'slurf':
# Op tak lokale / trunk
niets te plegen (working directory clean)
Merk op, dat deze operatie ging veel sneller, zoals we nu de bestaande git repository hebben gebruikt in de cache directory. Dit kan verder worden aangetoond door te kijken naar de beschikbare lokale vestigingen nu:
> Git branch
& Nbsp; lokale / 1.1
* Lokale / trunk
& Nbsp; meester
Voorbehoud
'Recycling' .git op deze manier werkt (misschien verrassend) in de praktijk goed, maar je moet het volgende in gedachten te houden:
Alle kassa's delen dezelfde index!
Laten we eens een kijkje nemen op wat dit betekent door terug te schakelen naar onze functie tak:
> Cd ../../feature-branch/plone.app.form/
> Git status
# Op tak lokale / trunk
# Changed maar niet bijgewerkt:
# (Gebruik "git add / rm ..." bij te werken en wat er zal worden gepleegd)
# (Gebruik "git checkout - ..." om veranderingen in working directory weggooien)
#
# Bewerkt: docs / History.txt
...
# Geschrapt: Plone / app / vorm / KSS / testen / test_kss.py
...
#
# Untracked bestanden:
# (Gebruik "git add ..." in wat er zal worden gepleegd op te nemen)
#
# Plone / app / vorm / testen / test_kss.py
Wohah! Wat gebeurd is, is dat .git wijst nu naar romp en daarmee de status commando toont het verschil tussen dat en onze branche als lokale aanpassingen, want dat is wat het bestandssysteem vertegenwoordigt. We kunnen dit controleren met behulp van subversies status commando:
> Svn st
Phew! Alles in orde! Maar wat te doen met git? We zijn klaar met het werken aan romp en willen terug naar onze functie tak te krijgen, maar de git-index is helemaal verkeerd ?! Eenvoudig: gewoon opnieuw uit te voeren gitify:
> Gitify
Git branch 'local / 1.1' volgt nu svn tak '1.1':
# Op tak lokale / 1.1
niets te plegen (working directory clean)
In principe, dat is alles wat je nodig hebt om te onthouden bij het werken met meerdere check-outs van hetzelfde pakket: Altijd uitvoeren gitify bij het schakelen tussen check-outs
Wat is nieuw in deze release :
- De cannonical repository is nu in https://github.com/collective. [Rossp]
- Bevestig de afhandeling bij het overstappen naar een svn tak die al git heeft een lokale tak voor. [Rossp]
Wat is nieuw in versie 0.8:
- Maak het init commando volg mee als de SVN repository is geweest overgeschakeld naar een ander filiaal. Dankzij Calvin Hendryx-Parker voor het melden van het probleem. [Tomster]
Wat is nieuw in versie 0.7:
- Gebruik volledige kopieën in plaats van symbolische links naar werkende kopieën te maken. Dit voorkomt het probleem van het hebben van de git en svn repository niet gesynchroniseerd wanneer het werken met meerdere kopieën van dezelfde repository en het risico van conflicten sterk vermindert.
- Dit betekent ook, dat de opdracht te halen nu alleen werkt op de cache zonder wijziging van de werkkopie (waardoor het veilig is om te draaien via crontab, bijvoorbeeld)
- Running gitify tegen een oude-stijl werkkopie zal een foutmelding geven. Gewoon verwijderen van de symlink en opnieuw draaien gitify remedies die echter.
- Een ander effect is dat het init commando is nu slechts één keer nodig zijn voor elke werkende exemplaar (het is niet meer nodig om opnieuw het commando na het schakelen tussen verschillende werkende exemplaren van dezelfde repository).
- gitify dus niet meer standaard de init commando (net als noch git svn noch iets w doen / o het leveren van een expliciete actie). Ook is het hernoemd van gitify (terug) naar init. [Tomster]
- Laat de hulp, --version halen commando's naar buiten .svn directories [Tomster] run
Wat is nieuw in versie 0.5:
- Toegevoegd gitify-update commando, dat een git-svn rebase presteert bediening voor de huidige svn checkout maar behandelt ook gecommitteerde lokale wijzigingen gracelully (in tegenstelling tot git svn, maar als svn doet)
- Niet langer de logging module voor de gebruiker feedback gebruiken. Dat idee was nogal misplaatst
Wat is nieuw in versie 0.4:
- refactored de toegangen tot gewoon gebruik gitify. Alle andere commando's zijn nu sub-commando's van gitify:
- gs-commit is vervangen door gitify push
- gs-fetch is vervangen door gitify halen
- Toegevoegd gebruik en hulp output voor elke opdracht.
- Verwijderd de gs-kloon entry point als het alleen maar samen met de belangrijkste gitify commando werd gebruikt toch.
- Gebruik de juiste registratie in plaats van alleen het afdrukken naar stdout
- Toegevoegd uitgebreide tests, waaronder functionele tests die de volledige update uit te dekken / te plegen cyclus van het klonen van een SVN repository en het plegen terug naar het.
Wat is nieuw in versie 0.3.1:
- BUGFIX: Gebruik geen aangepaste aliassen, zoals ze kunnen niet worden geïnstalleerd. Dit lost http://github.com/tomster/git-svn-helpers/issues#issue/2
- BUGFIX: Expliciet lijst elementtree als afhankelijkheid Dit lost http://github.com/tomster/git-svn-helpers/issues#issue/1)
Wat is nieuw in versie 0.3 Beta:
- Toegevoegd de gs-commit commando, die helpt bij het plegen terug naar svn en het houden van git en svn in sync
Wat is nieuw in versie 0.2 Beta:
- Toegevoegd de gs-fetch commando dat helpt het houden van de cache up-to-date
Eisen
- Python
Reacties niet gevonden