Menangani Kode Masuk di Lingkungan Sumber Terkendali

8

Sekadar pertanyaan singkat, semoga:

Tim saya mengelola perangkat lunak yang menggunakan penyebaran ClickOnce dan ditandatangani dengan sertifikat. Kami menyimpan sertifikat publik yang sebenarnya digunakan pada mesin terpisah yang hanya digunakan untuk penandatanganan. Itu bekerja dengan baik.

Namun, di mana kami kadang-kadang mengalami masalah, adalah ketika seseorang harus menandatanganinya secara lokal dengan sertifikat uji baru sehingga mereka dapat membangun dan menguji solusinya. Tidak dapat dihindari, sidik jari sertifikat baru ini didorong ke kontrol versi sebagai bagian dari file pengaturan proyek. Itu tidak menyebabkan masalah pada kotak penandatanganan karena pengaturan sertifikatnya sendiri tidak pernah didorong ke server Git, jadi menarik dari mesin itu tidak mengesampingkan perubahan lokal. Namun, hal itu menimbulkan masalah bagi semua orang karena mereka memiliki sertifikat pengujian sendiri yang digunakan pada mesin lokal mereka.

Apakah ada cara yang tepat untuk menangani situasi ini? Mungkin beberapa cara di Git untuk mengecualikan perubahan hanya dari bagian tertentu dari file konfigurasi, daripada keseluruhannya?

Locke
sumber

Jawaban:

9

Tidak ada cara di Git untuk mengecualikan perubahan hanya pada sebagian file. Apa yang biasanya dapat Anda lakukan adalah mengeksternalisasi bagian file tersebut ke file konfigurasi yang berbeda dan kemudian menambahkan file konfigurasi lainnya ke file .gitignore. Itu memungkinkan setiap pengembang menyesuaikan konfigurasi seperti yang mereka butuhkan tetapi menghentikan mereka memeriksa perubahan mereka secara tidak sengaja dan memengaruhi orang lain.

Bagaimana Anda melakukan ini sangat bervariasi tergantung pada bahasa / kerangka kerja. Seperti yang Anda sebutkan ClickOnce saya akan menganggap itu solusi Net dalam hal ini. Katakanlah Anda memiliki web.config dengan konten berikut

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

Anda dapat menggantinya dengan

<signingInfo configSource="signing.config">

"signed.config" ditambahkan ke file .gitignore. Setiap pengembang kemudian membuat sign.config sesuai kebutuhan mereka secara lokal dan tidak perlu secara eksplisit mengingat untuk tidak melakukan perubahan padanya.

Ruaidhrí Primrose
sumber
Saya sangat suka ide ini. Sederhana dan elegan. Apakah Anda tahu jika ada cara untuk melakukan ini ketika data konfigurasi dalam file proyek itu sendiri (seperti .csproj atau .vbproj). Saya googling saat ini, namun saya tetap mendapatkan hasil pada kelas parsial, bukan sebagian file konfigurasi.
Locke
1
Saya belum mencobanya secara pribadi tetapi Anda harus dapat menggunakan elemen <Import Project = ""> dalam file proyek utama Anda dan arahkan ke file proyek lain yang berisi konfigurasi khusus pengembang Anda.
Ruaidhrí Primrose
Bagus. Empat tahun bekerja dengan .NET dan saya tidak pernah tahu itu mungkin. Saya akan mencobanya. Terima kasih!
Locke