windows - Kan git og subversion spille godt sammen?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har for nylig besluttet at tage git springet, og jeg nyder virkelig at bruge git, selv på Windows.


Mit nuværende open source-projekt lever på subversion, alle devs er bekendt med subversion, så jeg vil gerne beholde subversion som 'sandhedskilden' for nu. [3]


Ikke desto mindre vil jeg bruge git, så jeg gik videre og lavede en kopi af kilden på github ved hjælp af git svn. Alt mit arbejde er gjort mod kilden i github og jeg skubber mine ændringer til github. En gang om få dage trykker jeg også mine ændringer på svn og rebase. [4] [5]


Den indledende import syntes at gå ok, men hver gang jeg gør en 'git svn rebase' fortsætter jeg med at få konflikter, selv på filer, jeg ikke har ændret i mit opbevaringsregister. Dette giver mig meget smerte. [6]


F.eks.


$ git svn rebase
First, rewinding head to replay your work on top of it...
Applying: Added git ignore file
c:/Users/sam/Desktop/MediaBrowserGit/trunk/.git/rebase-apply/patch:12: trailing
whitespace.
*/obj/*
error: .gitignore: already exists in index
Using index info to reconstruct a base tree...
:12: trailing whitespace.
*/obj/*
warning: 1 line adds whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging .gitignore
CONFLICT (add/add): Merge conflict in .gitignore
Failed to merge in the changes.
Patch failed at 0001 Added git ignore file

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".

rebase refs/remotes/git-svn: command returned error: 1


Mine spørgsmål:



  1. Er der nogen måde jeg kan fortælle git at synkronisere sig med svn ved hjælp af svn som kilde, så jeg kan starte med en ren skifer. (eksport senest, check ind ændringer og nulstille svn refs et sted)

  2. Er der nogle tips og tricks for at få dette scenario til at fungere konsekvent?

  3. Skal jeg have core.safecrlf og core.autocrlf indstillinger sat til true? Det ser ud til at jeg får brug for en smule hoop hoppe. [7]



Relaterede:



  • http://kerneltrap.org/index.php?q=mailarchive/git/2008/4/16/1450834/thread

  • http://markmail.org/message/vaois4kkr5ggugqs#query:git\%20crlf+page:1+mid:i4flex6vmt5tdala+state:results

  • http://code.google.com/p/msysgit/issues/detail?id=271



Det ser ud til at få linjestykker højre er lidt af en sort kunst. [8] [9] [10]


(Jeg er klar over, at dette spørgsmål sandsynligvis skal udvides, vær venlig at kommentere de steder, der skal udvides)

Bedste reference


Får du line-ende konflikter? Git har et par konfigurationsegenskaber, som du kan indstille den ændring, hvordan den håndterer slutningen af ​​linjetegn. Jeg har følgende sæt:


# this makes git NOT attempt to convert line endings on commit and checkout
core.autocrlf=false

# this makes git check if the conversion done by autocrlf would be reversible
# this is probably not required because I do not have autocrlf turned on
core.safecrlf=true


Bemærk, at jeg er på Windows, alle mine kolleger er på Windows, og jeg støder på SVN via Git-Svn. Disse indstillinger synes at gøre tricket for mig.


alt tekst http://www.codinghorror.com/blog/images/works-on-my-machine-starburst.png[11]