Tôi đang thiết lập Git với Gerrit Code Review và đang tìm cách tạo các lệnh Git cần thiết tương đối đơn giản cho những người dùng có thể mới sử dụng Git.Làm thế nào để cấu hình refspec push upstream cụ thể cho Git khi được sử dụng với Gerrit?
Các lệnh Tôi hiện có để bắt đầu một chi nhánh tính năng mới cơ bản là (giả sử Gerrit là origin
):
git checkout baseline
git pull
git checkout -b work1234
git push -u origin work1234
này bắt đầu một công việc gói mới work1234
nhánh từ một số baseline
, và đẩy thức tạo ra các chi nhánh trong Gerrit và thiết lập thượng nguồn. Vì vậy, .git/config
trông giống như sau:
[branch "work1234"]
remote = origin
merge = refs/heads/work1234
Bây giờ, Gerrit muốn cam kết mới để xem xét được đẩy lên một refspec đặc biệt, refs/for/work1234
ví dụ. Tôi có thể làm điều này bằng tay với:
git push origin work1234:refs/for/work1234
Những gì tôi muốn làm là tìm một số cách để thiết lập .git/config
để một đồng bằng git push
sẽ đẩy chi nhánh hiện tại để các refspec trên điều khiển từ xa mà Gerrit yêu cầu. Tôi đã nhìn vào git config
lĩnh vực sau:
branch.<name>.*
- dường như không có bất kỳ tùy chọn cụ thể cho việc thiết push refspecpush.default
- Tôi muốn loạiupstream
đâyremote.<name>.push
- Tôi cố gắngrefs/heads/*:refs/for/*
tại đây nhưnggit push
luôn muốn đẩy tất cả các chi nhánh địa phương trong trường hợp này, trong khi tôi chỉ muốn hiện tại chi nhánh
Nếu tôi không thể làm cho Git làm điều này một mình, tôi sẽ viết một kịch bản trình bao bọc nhỏ chỉ định đầy đủ các refspec. Tuy nhiên, sẽ tốt hơn nếu Git có thể đẩy đến đúng nơi.
Sẽ có giải pháp git-only đơn giản hơn nếu tôi luôn muốn đẩy đến đích cố định, nói 'refs/for/master'? ([Đây] (http://stackoverflow.com/questions/29664305/equivalent-of-branch-name-merge-for-git-push) câu hỏi SO của tôi yêu cầu phiên bản đơn giản hơn về vấn đề của bạn.) – Pradhan