2010-04-28 13 views
6

Khi sử dụng maven-release-plugin với Git, mvn release: chuẩn bị một cách vui vẻ gắn thẻ cho bản phát hành trong kho lưu trữ cục bộ. Tôi mong đợi phát hành mvn: thực hiện để đẩy các thẻ đến kho lưu trữ từ xa, nhưng điều này không dường như xảy ra.Thẻ maven-release-plugin có đẩy thẻ vào kho lưu trữ Git từ xa không?

Tôi có nhầm lẫn không?

Nếu không, có tùy chọn nào để bật thẻ phát hành đẩy vào kho lưu trữ từ xa không?

+0

Máy chủ Git của bạn có cho phép đẩy thẻ không? Trên máy chủ Gerrit, tôi cần quyền "Forge Committer" khi userid của Jenkins khác với userid được sử dụng để đẩy. – Andre

+0

Câu hỏi thú vị, nhưng 5 năm tôi không thể nhớ! – Armand

Trả lời

6

Đối với tôi, release-prepare dường như được đẩy ba lần:

  1. Sau khi phạm POM được cập nhật lên phiên bản phát hành mới, nó đang chạy git push không có đối số, để đẩy rằng cam kết.
  2. Sau khi gắn thẻ, nó đang chạy git push origin <tagname>, đó là những gì nên đẩy thẻ.
  3. Sau khi cam kết POM được cập nhật lên phiên bản ảnh chụp nhanh mới, nó đang chạy git push không có đối số một lần nữa.

Vì nó chỉ định rõ ràng origin để đẩy thẻ, nó chỉ có thể đẩy thành công thẻ nếu bí danh git-từ xa của bạn thực sự được gọi là origin. Để xem tên của bạn được gọi, hãy chạy git remote -v.

Cũng lưu ý rằng git push không có đối số có thể mặc định cho một cái gì đó khác với origin, tùy thuộc vào cấu hình kho lưu trữ của bạn - tức là nó có thể đang cố gắng chuyển cam kết đến một nơi và thẻ. Xem ở đây để biết các giá trị mặc định đến từ đâu: http://www.kernel.org/pub/software/scm/git/docs/git-push.html#REMOTES

+1

Cảm ơn bạn đã phản hồi chi tiết. Hành vi này có vẻ không nhất quán và vô ích với tôi. Tui bỏ lỡ điều gì vậy? – Armand

+3

Tôi đồng ý rằng nó không nên đẩy trong 'relese: preparation'. Điều gì đã xảy ra với tôi là bản phát hành 'release: preparation' hoạt động tốt, nhưng bản phát hành' release: perform' không thành công bởi vì 'scm' eddres trong tệp pom là sai. Vì vậy, tôi đã gắn thẻ một bản dựng với một tệp 'pom.xml' bị hỏng. IMO, với bản chất phân tán của git, nó sẽ có ý nghĩa hơn để đẩy vào cuối của quá trình này. Liệu tôi có sai? –