IPhoneの開発に関しては、GitまたはSubversionを使用する必要がありますか?
-
06-07-2019 - |
質問
Subversionの中央集中型モデルは、現在同じコードベースで作業し、絶えずリリースしているエンジニアチームがいるWebアプリケーション開発に適しているように思えます。
一方、Gitの分散モデルは、1)リポジトリを閲覧するために接続が必要ない2)はるかに高速である3)開発が共有されますが、それほど頻繁ではないため、IPhoneアプリには魅力的です。
自分の質問に答えたが、議論をかき立てるつもりはないので、申し訳ありませんが、1行で答えてください。
解決
間違いなくgit。今年は、iPhoneプログラミングとgitの2つの新しいことを学びました。 iPhoneプログラミングは私の人生を嫌いにしましたが、gitは方法を改善しました ソフトウェアを開発しています。痛みのない分岐は、私ができることを意味しています 他の世界に知らせることなく、すべてのブランチを作成し、いつ 私はそれに完全に満足しています マスター/トランク。
すばらしい、準備ができていないものをリリースするプレッシャーはありません ローカルでチェックインできるため、小さくて便利なコミットを簡単に作成できます。
iPhoneについてはまだ未定です。
他のヒント
お店で設定したものに投票します。
分散型と集中型のVCSについて知っておくべきことの1つは、分散型のVCSが集中型のVCSができることをすべて行えるということです。 gitを使用すると、コードの信頼できるバージョンである単一のパブリックリポジトリをさまざまな方法で管理できます。たとえば、すべての開発者がプッシュできる場合、集中型VCSに必要なものはすべて得られます。 gitのすべての追加された利点とCVS / SVNの不備はありません。
XcodeにはSVNが統合されていますが、実装が非常に悪いことがわかりました。代替手段が必要な場合は、優れたバージョンをチェックアウトできます(しゃれでごめんなさい)。
そうは言っても、私は基本的に1人のショップです(2台のマシンを使用していますが)。
iPhoneの開発に関しては、私は1人のショップです。Mercurialを使用しています(Gitと非常によく似ています)。私の決定要因は、単に分散ソース管理システムの使用方法を学びたいということでした。
もしあなたが一人で作業している場合の主な違いは、git / Mercurialではコードの分岐とマージがずっと簡単だということです。わずかな違いは、svnリポジトリがはるかに多くのディスク領域を占有することです(ただし、iPhoneプロジェクトでは、これが大きな問題になる可能性はそれほど高くありません)。それ以外は、それほど大きな違いに気付かないでしょう。
ソース管理に関する一般的なアドバイスを次に示します。 Subversionは私のお気に入りのツールであり、最も経験のあるツールです。とはいえ、私がワークステーションで最初に行うことは、SVKのダウンロードとインストールです。これにより、Subversionリポジトリへのアクセスが切断されます(主にラップトップから、場合によってはWiFiアクセスのない公園や裏庭で作業するため)。
Subversion + SVKは、gitまたはmercurialまたはbazaarの利点のほとんどを提供します(ただし、これらも評価しています)。 Subversionの今後の開発では、DVCSのユースケースをサポートするSVK / git / Hg機能を追加する予定です。
したがって、すでにSubversionを使用している場合はgitをデプロイせず、代わりにSVKを取得してそれを使用することをお勧めします(さらにかなり成熟しているため、数年前にリリースされました)。欠点は、時々遅くなる可能性があることです(perlで記述)。
SvnサポートはXcodeに組み込まれています。新しいクライアントを手動でインストールできます。
svnの使用を強制する人がいない場合は、おそらくgitを使用する必要があります。gitはsvnと相互運用できます(技術的には、作業中の人がsvnを使用しているときにgitを使用できます。トラブル)。
XCode統合に関しては、gitには何もありませんが、XCodeでいくつかのキーストロークを使用してgitを動作させるのはそれほど難しくありません。最も頻繁に使用されるgitコマンドに対してそれを実行するスクリプトをいくつか作成し、ユーザースクリプトに配置しました。次に2つの例を示します。
git initialize
#!/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
ここでは、他のパターンをすばやく作成できるパターンが表示されます。 「ユーザースクリプト」内ダイアログでは、コマンドにキーシーケンスを割り当てることができます。日常の使用では、gitを使用するためにコマンドラインに移動する必要はほとんどありません。
CVSやSubversionをしばらく使用していないため、明確な答えを出すことはできませんが、他のiPhone開発者とGitプロジェクトを使用しており、非常にうまく機能しています。
唯一の危険性は、複数の人が新しいファイルを追加している場合、XCodeプロジェクトでマージの競合を解決しなければならない場合があることですが、SVNでも同様の問題があると思います。
gitを使用する場合、github.comはリポジトリとして非常によく機能します。また、MacでGitを操作するための優れたドキュメントセットがあります(サイトのその部分にアクセスして設定するだけです)。
XCodeでsvnクライアントをアップグレードするにはどうすればよいですか?過去にこれを行って1.4から1.5に変更しましたが、退屈で、困難で、文書化されておらず、不具合がありました。その後、ハック(Apacheサーバーを破壊した)を取り消そうとしましたが、今ではまったく使用できません。これは、ネイティブで1.5をサポートすることになっている最新のXCodeにアップグレードした後です。