2012-04-24 23 views
7

Để thực hiện github như chức năng yêu cầu ngã ba/kéo trong dự án của tôi, tính năng tự động hợp nhất cần phát hiện xung đột giữa nguồn/kho đích mỗi khi xem yêu cầu kéo.Cách phát hiện xung đột giữa hai kho lưu trữ git.

Một giải pháp đến với tôi là phân tích đầu ra 'git request-pull'. Có phương pháp nào dễ dàng hơn để phát hiện xung đột không?

+0

Điều gì đang được hỏi ở đây? Bạn có đang triển khai công cụ hợp nhất không? Hoặc một công cụ xem khác? Hoặc đơn giản là tò mò những gì 'git push' sẽ làm gì? –

+0

Trong github, yêu cầu kéo không xung đột có thể được hợp nhất chỉ bằng cách nhấp vào nút trên web. Vì kho lưu trữ nguồn/mục tiêu có thể tiếp tục cam kết, việc phát hiện xung đột là phải trong quá trình này. Tôi đang hỏi một cách dễ dàng hơn để phát hiện xung đột. – stcatz

Trả lời

-2

Cuối cùng tôi đã viết chức năng riêng của mình để phát hiện xung đột.

Điều này khá đơn giản, chỉ cần tìm nạp tất cả các dòng khác và so sánh nếu có cùng sửa đổi.

+2

Thật tuyệt vời khi đăng bài ở đây để tham khảo trong tương lai – CharlesB

2

Tôi đã xóa câu trả lời trước đây của tôi, tôi không hiểu câu hỏi ...

Bây giờ đây là câu trả lời mới sáng bóng:

git merge --ff-only <branch> 

Nếu không có xung đột, nó sẽ làm một hợp nhất . Với xung đột, nó cung cấp cho bạn một thông báo: Not possible to fast-forward. Mã trả về của bảng điều khiển (echo $?) Là 128 trong tình huống này.

+0

Điều này không liên quan nhiều đến câu hỏi, nhưng tốt trong khi hợp nhất sau khi tìm nạp. –

0

Theo như tôi biết, bạn không thể tìm hiểu xem hợp nhất có tạo ra xung đột cho đến khi bạn thực sự hợp nhất các chi nhánh này hay không.

Điều này đã được chỉ ra trong: How to test a merge without actually merging first.

Vì vậy, để trả lời câu hỏi của bạn, nếu bạn cần triển khai loại tính năng này, bạn nên cố gắng hợp nhất nguồn/đích và quay lại hành động hợp nhất (sử dụng git reset --hard).

Tôi chưa bao giờ sử dụng git request-pull, nhưng nhìn vào đầu ra, tôi không thấy bất kỳ thông tin nào có thể giúp bạn giải quyết vấn đề của mình. Bạn có thể có được kết quả tương tự bằng cách sử dụng git diff, git wtf, git remote show <name>.

Tài liệu tham khảo:

1

Chúng tôi đã tạo bộ dò tìm xung đột git kiểm tra cam kết được đẩy mới nhất so với tất cả các nhánh hiện có.

Đó là một tập lệnh đơn giản được khởi xướng bởi GitHub WebHook URL và thậm chí biết gửi thông báo HiChat khi phát hiện xung đột.

Chúng tôi dựa trên giải pháp của chúng tôi trên phân tích git merge --ff-only <branch> đầu ra như bạn có thể nhìn thấy here

Chúng tôi đã mã nguồn mở nó vì vậy tất cả có thể thưởng thức, học hỏi và đóng góp.

Các vấn đề liên quan