4

おそらく非常に基本的な質問です。しかし、複数のリソースを読んだ後でも、私は確信が持てませんでした。

SVNでは、dev_branchというブランチから dev_tagというタグを作成していました。また、dev_tagをcheckout_dirにチェックアウトし、Mavenビルドを実行する必要があります。

SVN-これは私が以前にしたこと です

 ~ -> svn copy -m  svn+ssh://<repo>/branches/dev_branch/ svn+ssh://<repo>/tags/dev_tag/ 
 ~ -> svn co svn+ssh://<repo>/tags/dev_tag/ checkout_dir
 ~ -> cd checkout_dir
 ~/checkour_dir -> mvn clean package

GIT-方法は

Gitで上記を行う方法は?これが私のgitの外観です。

 ~ -> git branch -l
  dev_branch
* master

言い換え: 同意しました。タグを作成するだけです。私の質問は、

「gitリポジトリにマスターブランチ(prodデプロイメント用)とdevブランチ(QAデプロイメント用)がそれぞれ異なる変更を含む場合、次に、現在のブランチをマスターとして「gittagmytag」と入力してタグを作成するとします。ここでQAに、mvnビルドを実行できるdevブランチコンテンツのみをチェックアウトするコマンドを指定する必要があります。同じタグを使用して、ビルドしてprodデプロイメントに使用できるマスターブランチコンテンツをチェックアウトできるはずです。 。」

最後に、これは私が特定のブランチのGitタグを作成し、同じもののtarを作成するために行ったことです。これは、qaコードとprodコードを別々に作成するのに役立ちます。

QA_BUILD

git clone -b dev_branch gitserve:repo.git qa
cd qa
tag -a qa_tag
git commit -a
git push --tags
git archive --format=tar --remote=gitserve:repo.git tags/qa_tag > /tmp/qabuild/qa.tar
cd  /tmp/qabuild
tar -xvf qa.tar
mvn clean package

PROD_BUILD

git clone -b master gitserve:repo.git prod
cd prod
tag -a prod_tag
git commit -a
git push --tags
git archive --format=tar --remote=gitserve:repo.git tags/prod_tag > /tmp/prodbuild/prod.tar
cd  /tmp/prodbuild
tar -xvf prod.tar
mvn clean package
4

3 に答える 3

5

のタグは、 のタグとgitは異なりsvnます。それらは基本的に固定ブランチと同等です (つまり、いったん作成されると、さらにコミットが行われても移動しません) - 単純なコミットへの単なるポインターです。したがって、タグを作成するには、次の 2 つのいずれかを行います。タグを付けたいコミットが既にチェックアウトされている場合は、現在の場所にタグをドロップできます。

git tag <tagname>

タグ付けしたいコミットにいない場合は、git logまたは他の方法を使用して、必要なコミットの SHA ハッシュを見つけてから、次を実行できます。

git tag <tagname> <sha>

(代わりに を使用することもできますがgit checkout <sha>; git tag <tagname>、これは不要なチェックアウトであり、将来の開発作業のために必要な場所に再チェックアウトするのを忘れると、混乱を招く可能性があります。

于 2012-09-21T15:08:00.343 に答える
0

最新のリリースlatest(など) にタグを付けてから、リリースがあるたびに削除して再作成することができます。

ただし、これは通常のタグの使用方法ではなく、固定された場所ですが、すべてのチームがどのタグが固定され、どのタグが浮かんでいるかを理解している限り、問題ありません。

于 2012-09-21T21:31:37.700 に答える