Yeniden Yazım için sürüm kontrol uygulaması


29

X dilinde bir ürün (prototip) P_OLD geliştirdik ve şimdi Y dilinde P_NEW olarak sıfırdan yazıyoruz.

P_NEW ve P_OLD aynı ürün olduğundan:

P_NEW P_OLD'un eski bir grubu mu yoksa kendi deposu mu olmalı?

Bu kadar büyük değişikliklerle başa çıkmanın genel yolu nedir, sürüm kontrolü bakış açısı oluşturur?



@gnat Bağlantı için teşekkürler. Bu ilginç, ancak asıl fark bizim için aynı ürün, tamamen yeniden tasarlandı. Eski proje temelde (çirkin) bir prototipti.
1v0

Yanıtlar:


46

Neredeyse kesinlikle yeni bir havuz istiyorum.

Havuzun amacı:

  • Kolayca karşılaştırabilmeniz için geçmişi ve değişiklikleri izlemek için
  • Sadece yama dosyalarını e-postayla göndermek ve bunları çalışma dizinlerine manuel olarak uygulamak yerine dalları ve birleştirmeleri yönetmek

Projeyi sıfırdan tamamen yeniden yazarsanız, yeniden yazmayı aynı depoya koymanın bir anlamı yoktur. Eski dilde yazılmış yamaları tekrar yazmak için uygulayamazsınız. Repoları değiştirmek, eski repodaki geçmişi ortadan kaldırmayacak, değiştirirseniz, deponuzda dönen iki dilin olduğu tuhaf ara aşamalara sahip olmayacaksınız.

Dilleri değiştirirken depoyu tutmayı bile düşünmemin tek nedeni, a) diller o kadar benzer olsa da, kod herhangi bir değişiklik yapmadan kodun birinden diğerine kopyalanmasına ya da yapılacağına benziyordu, ya da b) Sürüm kontrolündeki işlevsel içeriğin büyük kısmı, tuttuğunuz bir şablondaki şablonlar ve değiştirdiğiniz çekirdeğin dili, satır satır satırını başka bir dile çevirir (hatta o zaman sadece siz biliyorsanız) geçiş sırasında şablonları yinelemeye devam etmeniz gerekecek).


2
Geçişin uzunluğuna bağlı olarak, önceki canlı olması ve karşılaştırmalar için kolayca erişilebilir olması yararlıdır. Eski sistemde, test sonuçlarının yeni sistemle eşleştiğini doğrulamanıza yardımcı olmak için test senaryoları bile tanıtıyor olabilirsiniz.
Eric

16

Ben her zaman kendimi yeni havuzlara yeniden yazarım. Bu şekilde inşalar, testler ve kurulumlar birbirinden bağımsız olarak yapılabilir.

Bir projeyi başka bir dilde yeniden yazarken, inşa etme, test yapma ve uygulama gibi görevlerin hiçbirinde çok az benzerlik vardır. Onları sadece kendi depolarında izole edersen, acı çekeceksin. O zaman, sadece kullanıcıyı nasıl yöneteceğinizin acısı ve eski sistemden yeniye veri geçişi konusunda endişelenmeniz gerekir; bu her zaman eğlenceli bir şey. :)


5

Sistemleriniz yeterince modüler ve link uyumluysa, tek bir havuzdan ve derlemeden faydalanırsınız. Örneğin, C sistemi C ++ dilinde yeniden yazılmışsa, C ++ kodu mevcut işlevselliği çağırabilir ve aşamalı olarak değiştirebilir.

Bununla birlikte, bu durumda bile, bazıları ilgili eski kodun gerektiği gibi alındığı yeni bir repo başlatmayı iddia edebilir.

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.