1

gitサブモジュールとして組み込んだMapBox-iOS-sdkを使用するiOSプロジェクトをBitbucketでホストしています。私が追跡するコミットは、リリースブランチではなく、開発ブランチにあります。たとえば、後でBitbucketからプロジェクトのクローンを作成しようとしたとき(git clone --recursiveを使用)。また、サブモジュールMapBox-iOS-sdkをMapBoxから最新のものに更新することも気に入っています。だから引っ張りたい。しかし、最初は「ブランチなし」なので、自分のプロジェクトのMapBox-iOS-sdkディレクトリに移動して、

git checkout -b develop remotes/origin/develop

それは私に出力を与えます:

M   MapView/Map/SMCalloutView Previous HEAD position was 6c6be52... closes #148: incorporate @tmalloy's RMShape bezier curve enhancements
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'

それから、私はをしました、git pullそしてそれは私がすでに最新であると私に告げます。この時点で、私の最初の質問:私はすでにMapbox開発ブランチからの最新のコミットを行っていますか?

この時点git statusで、Mapbox-iOS-sdkディレクトリに入力すると、次のようになります。

git status
# On branch develop
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   MapView/Map/SMCalloutView (new commits)
#
no changes added to commit (use "git add" and/or "git commit -a")

そして、ここに私の2番目の質問があります:これは正確にはどういう意味ですか?とにかくmapbox-ios-sdkを変更しようとはしていません。私がしたいのは公式バージョンを使用することだけですが、なぜコミットするように求められるのですか?コミットすると、Mapbox sdkの新しいバージョンを変更しているように見えます。その後、自分のプロジェクトで、公式ソースにないこの特定のコミットにタグを付けます。コミットが見つからないため、プロジェクトをプルしようとした同僚が問題を抱えているのではないでしょうか。

編集: SMCalloutViewは、MapboxSDK自体に組み込まれたgitサブモジュールです。

編集2: すべてのコマンドは、pwdがMapbox-ios-sdkベースディレクトリ(私のプロジェクトのサブディレクトリ)にあるときに発行されました。

編集3: プロジェクトはhttps://bitbucket.org/t2wu/container-bugにあります

4

1 に答える 1

0

これMapView/Map/SMCalloutViewはサブモジュールのMapBox-iOS-sdkサブモジュールであるため、ネストされた依存関係があります。そして、更新されたのはネストされた依存関係です。

これらの修正と更新がプロジェクトにとって重要な場合は、サブモジュールを再帰的に更新して、すべての更新があることを確認する必要があります。

次に、同期の問題が発生するため、スーパープロジェクトの一部としてこれらの依存関係の修正に取り組んでいるかどうか/どのように取り組んでいるかを決定する必要があります。

単純に特定のバージョンを使用し、時折新しい公開バージョンに変更する場合は、再帰的な更新よりも難しくありません (これは簡単かもしれません。マニュアルを参照してください ;-)

問題の修正も行う場合は、2 つの場所を同時に使用するという非常にトリッキーな問題があります。a) 公開されたバージョンを使用し、b) 独自の修正済みバージョンを使用して、2 つを後ろで結合しようとします。

独自のフォークを作成し、フォークでサブモジュールを再ポイントして、両方のバリアントを同じパブリック リポジトリに保持し、アップストリーム リポジトリを追加し直すことを検討してください。ただし、両方のバリアントでフォークを維持する必要があります...

于 2012-12-24T12:18:56.230 に答える