Xử lý ký mã trong môi trường được kiểm soát nguồn


8

Chỉ cần một câu hỏi nhanh, hy vọng:

Nhóm của tôi duy trì một phần mềm sử dụng triển khai ClickOnce và được ký với một chứng chỉ. Chúng tôi giữ chứng chỉ công khai thực sự được sử dụng trên một máy riêng biệt chỉ được sử dụng để ký. Điều đó làm việc tốt.

Tuy nhiên, nơi chúng tôi thỉnh thoảng gặp vấn đề là khi ai đó phải ký tên cục bộ với chứng chỉ kiểm tra mới để họ có thể xây dựng và kiểm tra giải pháp. Chắc chắn, dấu vân tay chứng chỉ mới này được đẩy lên kiểm soát phiên bản như một phần của tệp cài đặt dự án. Nó không gây ra sự cố trên hộp ký vì cài đặt chứng chỉ của chính nó không bao giờ được đẩy đến máy chủ Git, do đó, kéo từ máy đó không ghi đè các thay đổi cục bộ. Tuy nhiên, nó gây ra vấn đề cho những người khác vì họ có chứng chỉ kiểm tra riêng được sử dụng trên máy cục bộ của họ.

Có một cách chính xác để xử lý tình huống này? Có thể một số cách trong Git để loại trừ các thay đổi từ chỉ một phần cụ thể của tệp cấu hình, thay vì toàn bộ?

Câu trả lời:


9

Không có cách nào trong Git để loại trừ các thay đổi chỉ là một phần của tệp. Tuy nhiên, những gì bạn thường có thể làm là đưa phần bên ngoài của tệp vào một tệp cấu hình khác và sau đó thêm tệp cấu hình khác đó vào tệp .gitignore. Điều đó cho phép mỗi nhà phát triển tùy chỉnh cấu hình theo yêu cầu nhưng ngăn họ vô tình kiểm tra các thay đổi của họ và ảnh hưởng đến những người khác.

Làm thế nào bạn làm điều này rõ ràng khác nhau tùy thuộc vào ngôn ngữ / khung. Như bạn đã đề cập ClickOnce, tôi sẽ giả sử đó là một giải pháp .Net trong trường hợp này. Giả sử bạn đã có một web.config với nội dung sau

<signingInfo>
  <certificate path="C:\test\whatever.cert">
</signingInfo>

Bạn có thể thay thế bằng

<signingInfo configSource="signing.config">

"Sign.config" được thêm vào tệp .gitignore. Mỗi nhà phát triển sau đó thiết lập Sign.config khi họ cần cục bộ và không cần phải nhớ rõ ràng không cam kết thay đổi với nó.


Tôi thực sự thích ý tưởng này. Thật đơn giản và thanh lịch. Bạn có biết nếu có một cách để làm điều này khi dữ liệu cấu hình nằm trong chính tệp dự án (chẳng hạn như .csproj hoặc .vbproj). Hiện tại tôi đang googling nó, tuy nhiên tôi tiếp tục nhận được kết quả trên các lớp một phần, thay vì các tệp cấu hình một phần.
Locke

1
Tôi đã không thử cá nhân nhưng bạn sẽ có thể sử dụng phần tử <Nhập dự án = ""> trong tệp dự án chính của bạn và trỏ nó đến tệp dự án khác có chứa cấu hình cụ thể dành cho nhà phát triển của bạn.
Ruaidhrí Primrose

Đẹp. Bốn năm làm việc với .NET và tôi không bao giờ biết điều đó là có thể. Tôi se thử no. Cảm ơn!
Locke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.