İşverene özgü değişikliklerle açık kaynaklı bir projeyle çalışmak için en iyi Git iş akışı hangisidir?


11

Mevcut işverenimde, başvurumuzun bir bileşeni olarak Github'da barındırılan açık kaynaklı bir proje kullanıyoruz. Bu projede hem ihtiyaç duyduğumuz bazı özellikleri eklemek hem de yapı sistemlerimizle entegre etmek için çalışıyorum. Yöneticim ve ben, bu bileşenle ilgili çalışmalarımızın çoğunu açık kaynak projesine makul bir şekilde sunmak istediğimizi kabul ediyoruz. Sorum, Git'imin taahhütlerini açık bir projeye geri eklemek için mantıklı olan şeyleri kolayca ayırabileceğim şekilde korumak için en iyi iş akışı / tekniğin ne olduğu hakkındadır - hata düzeltmeleri ve yeterince genel olan yeni özellikler - derleme konumları ve uygulama sabitleri gibi projemize özgü şeylerden.

Şimdiye kadar yaptığım, tüm değişikliklerimi taahhüt ettiğim özel bir Git şubesini uygun ayrıntı düzeyinde tutmak. Daha sonra cherry-pickana şubeye açık kaynaklı taahhütler eklemek ve bunları Github'a geri göndermek için kullanıyorum.

Görünüşe göre bunu yapmak için birleştirme kullanmalıyım, böylece aynı içeriklerle ayrı taahhütler oluşturmaya devam etmiyorum, ancak şirkete özgü taahhütleri hariç tutarken ve makul bir iş akışı tutarken bunu nasıl yapacağımdan emin değilim.

Örneğin, özel dalda usta ve şirkete özgü şeylere açık kaynaklı şeyler işleyebileceğimi ve daha sonra master'ı gerektiğinde bu şubeye birleştirebileceğimi, ana dalı birleştirmeden önce taahhüde işaret ederek bırakabileceğimi düşünüyorum tekrar açık kaynaklı işler yapın ve tekrar birleştirin. Bu iş akışı hakkında garip görünen şey, ait olduğu şubeye yaptığım her şey için önceden karar vermem, tamamlama gibi görünen şey üzerinde çalışmam, sonra taahhüt etmeden ve test etmeden önce birleştirmem gerektiğidir. Git hakkında gerçekten sevdiğim şeylerden biri, uygulamanızın çalışması için ihtiyacınız olan her şeyi yapmanın ve daha sonra değişikliklerinizi nasıl ve nerede yapacağınıza karar vermenin ne kadar kolay olduğudur. Anlayabildiğim kadarıyla, şu anda bir şubedeyseniz ve biraz iş yaptıysanız, orada '

Yaptığım şey uzun vadeli katkılar için makul bir iş akışı mı? Herkes daha iyi olabilecek farklı bir iş akışı önerebilir ve neden daha iyi?


1
Rebase git-scm.com/book/en/Git-Branching-Rebasing öğesini kullanarak başka bir şubeye kolayca bazı işler gönderebilirsiniz . Önce taahhüt ettiğiniz sürece, başka bir şubeye taahhütte bulunarak yeniden işlem yapabilir, ardından taahhüdü kaldırmak için mevcut şubenizi sıfırlayabilirsiniz.
artbristol

Yanıtlar:


2

İşte size uygun bir strateji:

Biri şirket çalışması için diğeri genel (geri dönmek istiyorum) repo olmak üzere 2 özel git depoları oluşturun.

Bu sistemin çalışması için bunu yapmalısınız (ki en önemli stratejiyi göz önünde bulunduruyorum): "Genel" olanı tanımlayın ve topluluktaki herkes tarafından kullanılabilir

Bu tanıma sahip olarak, neyi geri vereceğinizi ve neyi taahhüt etmeniz gerekmediğini ayırabilirsiniz.

Topluluk için kodladığınız şeyin genel bir formda olması mantıklıdır, çünkü çok özel bir kod parçası kimseye fayda sağlamayacaktır (ve hatta ana şubeye bile getirmeyebilir).

Artık topluluğa ne taahhüt edeceğinizi bildiğinize göre, "geri verme" çalışmalarının çoğunu kendisine adanmış olan repoda yapabilirsiniz. Daha sonra, bu repoyu iş temelli repolarınıza yönlendirirsiniz ve bunun üzerine işe özel herhangi bir iş yaparsınız.

"Geri verme" deposunda çok daha fazla zaman geçireceğinizden şüpheleniyorum, bu yüzden gelecekte bu projeyi kullanacak insanlar için değerli yorumlar, vb.

Ayrıca git'in düşündüğünüzden çok daha fazlasını yapabileceğine inanıyorum. Bu videoyu Vimeo'da izledim: http://vimeo.com/46010208 ve git'in yapabileceği birçok tuhaf şeyi açıklamak için mükemmel bir iş çıkardı.

Benim stratejim sadece orada değil, ama özellikle size uygun 1'i düşünmeniz kesinlikle bir başlangıç ​​noktası olabilir.


1

Açık kaynak kod tabanının niteliğine ve üzerinde değişiklik yaparak nelere ulaşmanız gerektiğine bağlı olarak, endişelerinizi ayırarak çok fazla kilometre alabilirsiniz. Projenin çatalına, sadece orijinaline geri dönmek istediğiniz şeyleri ekleyin. Paylaşılmayacak şirket işlerinizi yapmanıza izin vermek için kancalar veya uzatma noktaları ekleyin.

Bu şekilde, neyi paylaşacağınızı ve neyi paylaşmayacağınızı bölmek veya önceden karar vermek konusunda asla endişelenmenize gerek kalmayacak. Orijinal projeye esneklik eklediğiniz için, şirket çalışmalarınızın bazı bölümlerini daha sonra paylaşmayı tercih edebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.