Bảng phân cảnh là một nỗi đau hoàng gia từ góc độ công việc git khi nhiều người đang hợp tác với họ. Ví dụ: XML trong tệp .storyboard có <document>
thẻ bắt đầu toolsVersion
và systemVersion
các thuộc tính được thay đổi bởi bất kỳ cấu hình nào mà trình thao tác tệp gần đây nhất đang chạy. Đồng bộ hóa chính xác các phiên bản Xcode của mọi người có vẻ hữu ích toolsVersion
, nhưng systemVersion
thay đổi bất kể điều gì, tùy thuộc vào phiên bản Mac và / hoặc OS X cụ thể mà nhà phát triển đang chạy.
Điều này là ngu ngốc, nhưng chủ yếu là vô hại. Tuy nhiên, điều khiến chúng tôi lo lắng là vào thời điểm khác, một số thay đổi khác sẽ tự động được thực hiện cho bảng phân cảnh chỉ bằng cách mở chúng sau một git pull
. Điều đó có nghĩa là, Alice thực hiện các thay đổi cho bảng phân cảnh, cam kết và đẩy chúng vào kho lưu trữ. Sau đó, Bob kéo các thay đổi của Alice và mở bảng phân cảnh để thực hiện các thay đổi tiếp theo. Khoảnh khắc anh mở bảng phân cảnh, biểu tượng tập tin ngay lập tức chuyển sang trạng thái đã sửa đổi nhưng chưa được lưu và git status
cho thấy rằng bất kỳ số lượng thay đổi kỳ lạ nào đã xảy ra. Tất cả điều này mà không có Bob đã thay đổi bất cứ điều gì hoặc tự lưu tập tin.
Thay đổi tự động phổ biến nhất mà chúng tôi thấy là sự biến mất hoặc xuất hiện lại của toàn bộ <classes>
thẻ chữ tượng hình gần cuối tệp bảng phân cảnh. Chúng tôi đã không tìm ra những gì gây ra điều này. Chúng tôi có thể có một số phiên bản được bản địa hóa của một bảng phân cảnh trong các thư mục .lproj khác nhau và khi mở chúng trong Trình tạo giao diện, hệ thống phân cấp lớp có thể tự động bị xóa khỏi một số và thêm vào một số khác hoặc để lại một mình. Điều này gây ra nhiều tiếng ồn git diff
, nhưng nó không thực sự phá vỡ bất kỳ chức năng nào. Chúng tôi thường sẽ chọn lọc thêm các thay đổi thực tế mà chúng tôi đã thực hiện vào chỉ mục của git, cam kết những thay đổi đó và sau đó chỉ loại bỏ các thay đổi tự phát, vô nghĩa<classes>
thay đổi. Điều này là để giữ cho các cam kết nhỏ và tốt đẹp, như họ nên được. Tuy nhiên, cuối cùng, mọi thứ trở nên quá bận tâm vì Xcode tiếp tục thực hiện lại các thay đổi và ai đó chỉ sử dụng chúng cùng với một số nội dung khác ... sẽ ổn cho đến khi Xcode của người khác quyết định không muốn thay đổi lại lý do rõ ràng. (Lịch sử cam kết của chúng tôi có rất nhiều lời chửi thề về điều này.)
Có ai khác nhìn thấy hành vi này? Đây có phải là lỗi Xcode hoặc sự cố cấu hình trên một hoặc nhiều máy Mac dành cho nhà phát triển của chúng tôi không? Chúng tôi đã thấy một số hành vi tương tự khi cộng tác với các tệp XIB, nhưng bảng phân cảnh có vẻ dễ bị ảnh hưởng hơn.