Domanda

Mi sembra che il modello centralizzato di Subversion funzioni meglio per lo sviluppo di applicazioni Web in cui hai un team di ingegneri che lavora attualmente sulla stessa base di codice e rilascia costantemente.

D'altra parte il modello distribuito di Git è attraente per un'app per iPhone perché 1) Non ho bisogno di una connessione per navigare nel repository 2) è molto più veloce 3) lo sviluppo sarà condiviso ma non così spesso.

Scusate se ho risposto alla mia domanda e non intendo suscitare un dibattito, sentitevi liberi di dare risposte a riga singola.

È stato utile?

Soluzione

Sicuramente git. Quest'anno ho imparato due cose nuove: programmazione iPhone e git. Mentre la programmazione per iPhone mi ha fatto odiare la mia vita, git ha migliorato la strada Sviluppo software. La ramificazione indolore mi ha permesso di farlo crea un ramo per tutto , senza dire al resto del mondo e quando Ne sono completamente soddisfatto, posso rimetterlo nella nostra meravigliosamente stabile master / tronco.

È fantastico, non c'è alcuna pressione per rilasciare tutto ciò che non è pronto e vedere poiché puoi effettuare il check-in in locale, è più semplice scolpire piccoli e utili commit.

Sono ancora indeciso sulla cosa dell'iPhone.

Altri suggerimenti

Vorrei votare per quello che hai configurato nel tuo negozio.

Una cosa che dovresti capire del VCS distribuito e centralizzato è che uno distribuito può fare tutto ciò che può fare in modo centralizzato. Con git, puoi avere un unico repository pubblico, la versione autorevole del codice, gestita in qualsiasi numero di modi - ad esempio, se tutti gli sviluppatori possono farcela, otterrà tutto ciò che desideri su un VCS centralizzato, tranne con tutti i vantaggi aggiunti di git e nessuna delle inadeguatezze di CVS / SVN.

Mentre Xcode ha l'integrazione SVN, trovo che sia un'implementazione estremamente scadente. Puoi controllare (scusate il gioco di parole) l'eccellente Versioni se desideri un'alternativa.

Detto questo, sono fondamentalmente un negozio individuale (anche se uso due macchine) e trovo che git sia molto più bello da usare.

Sono un one man shop quando si tratta di sviluppo di iPhone e uso Mercurial (che è molto, molto simile a git). Il mio fattore decisivo è stato semplicemente che volevo imparare a usare un sistema di gestione della fonte distribuita.

La differenza principale se sei un one man shop è che la ramificazione e l'unione del codice è molto più semplice in git / Mercurial. Una differenza minore è che i repository svn occupano molto più spazio su disco (ma su un progetto iPhone, questo non è terribilmente probabile che sia un grosso problema). A parte questo, è improbabile che notiate molta differenza.

Ecco il mio consiglio generale sul controllo del codice sorgente. Subversion è di gran lunga il mio strumento preferito e quello con cui ho più esperienza. Detto questo, la prima cosa che faccio su qualsiasi workstation è scaricare e installare SVK, che ti dà accesso disconnesso ai repository di sovversione (dal momento che lavoro principalmente da un laptop, a volte in un parco o nel mio cortile senza accesso wifi).

Subversion + SVK ti offre la maggior parte dei vantaggi di git, mercurial o bazar (anche se sto valutando anche quelli). Penso che lo sviluppo futuro di Subversion aggiungerà funzionalità SVK / git / Hg per supportare il caso d'uso DVCS.

Quindi consiglierei di NON distribuire git se stai già usando sovversione, e invece prendi SVK e vai avanti con quello (in più è abbastanza maturo, è in circolazione da alcuni anni). Il rovescio della medaglia è che a volte può essere lento (scritto in perl).

Scarica SVK

Il supporto Svn è integrato in Xcode. Puoi installare manualmente un client più recente.

Se non c'è nessuno che ti costringe a usare svn, allora probabilmente dovresti usare git, poiché git può interagire con svn (il che significa, tecnicamente, potresti usare git mentre le persone con cui stai lavorando usano svn; probabilmente è troppo problemi però).

Per quanto riguarda l'integrazione di XCode, git non ne ha, ma non è difficile far funzionare git usando alcune sequenze di tasti in XCode. Ho scritto alcuni script che lo faranno per i comandi git usati più frequentemente e li ho inseriti negli script utente. Ecco due esempi:

inizializzazione git

#!/bin/sh
# 
# This script initializes a git repository and adds all the elements 
# of the project directory to the repository


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

cd $project_directory

# create the git project configuration files
cat << EOF > .gitignore
.gitignore
.DS_Store
.gitattributes
build/*
EOF

cat << EOF > .gitattributes
*.pbxproj -crlf -diff -merge
EOF 

/usr/local/bin/git init
/usr/local/bin/git add *

git add

#!/bin/sh
# 
# This script does a git adds a file of the user's choosing
# to the git repository.


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

files_to_add=`%%%{PBXUtilityScriptsPath}%%%/AskUserForExistingFileDialog "Add files"`

cd $project_directory

/usr/local/bin/git add $files_to_add

Qui puoi vedere uno schema che ti permetterà di scrivere rapidamente gli altri. All'interno dello "script utente" dialogo, è possibile assegnare sequenze di tasti ai comandi. Trovo che nell'uso quotidiano raramente ho bisogno di andare alla riga di comando per usare git.

Non posso davvero darti una risposta chiara perché non uso CVS o Subversion da un po 'di tempo, ma ho usato i progetti Git con altri sviluppatori iPhone e funziona abbastanza bene.

L'unico potenziale pericolo è che a volte devi risolvere i conflitti di unione nel progetto XCode se più di una persona sta aggiungendo nuovi file - ma penso che SVN avrebbe problemi simili.

Se usi git, github.com funziona molto bene come repository - e hanno una grande serie di documentazione per lavorare con Git sul Mac (puoi semplicemente visitare quella parte del sito per configurare).

Come si aggiorna il client svn in XCode? In passato l'ho fatto per passare dall'1.4 all'1.5 ma era noioso, difficile, non documentato e glitch. Da allora ho provato a ripristinare il mio hack (che ha rotto il mio server Apache) e ora non posso usarlo affatto. Questo dopo l'aggiornamento all'ultimo XCode che dovrebbe supportare 1.5 in modo nativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top