Bir dizi manuel arşivden git deposu oluşturma


1

Uygun bir içerik yönetim sistemi olmadan yaratılmış bir uygulama ile uğraşıyorum. Bunun yerine, kaynak dosyalar ZIP arşivine kaydedildi ve her yeni sürüm çıkarıldığında yedeklendi.

Zaman içinde yapılan değişikliklerin doğru bir resmini elde etmek için bu projeyi bir git deposuna sokmak isterdim, ancak bunu nasıl yapacağımdan, yalnızca yeni bir git deposu oluşturduğum veya mevcut olanlarla çalıştığım için çok uzağım. olanlar.

Sadece en son arşivden bir depo oluşturmak ve oradan çalışmak basit olacaktır, ancak değişiklik tarihini nasıl eklerim?

Yanıtlar:


3

Sadece en son arşivden bir depo oluşturmak ve oradan çalışmak basit olacaktır, ancak değişiklik tarihini nasıl eklerim?

Çok kolay. Kod tabanının bir ZIP arşivinden diğerine ne kadar temiz olduğuna bağlı olarak buna yaklaşmanın iki yolu vardır: Kümülatif UnZIP Taahhütleri veya Her Bir Taahhüt Sonrası Temizle .

Kümülatif UnZIP Taahhütleri: UnZIP, Taahhüt, Bir başkasına unZIP, Başka Taahhüt, Etc…

Çözüm, ilk önce en eski arşive dayanan bir git deposu oluşturmak, sonra onu işlemek, ardından müteakip / aşamalı olarak daha yeni şeyler eklemek, bunu ve benzeri işlemleri yapmaktır. Örneğin, şöyle diyelim / tarihli üç arşiviniz olduğunu varsayalım:

  • archive_20150801.zip
  • archive_20150804.zip
  • archive_20150806.zip

Şimdi, bunu archive_20150801.ziptemel alarak ilk git deposunu açarak ve yaratarak başlayacağım . Sonra, unZIP archive_20150804.zipve sürükle / kopyala - ya da sadece unZIP'i yerinde tutardım - ki böylece eserler daha eskilerin üzerine yazar archive_20150801.zip. İle aynı archive_20150806.zip.

Her Bir İşlemden Sonra Temizleyin: UnZIP, Taahhüt Et, Sil, Başka Birini Aç, Başka Birini Yap, Başka Birini Sil, Etc…

Ancak, daha yeni dosyaları her ZIP arşivinde daha eski dosyalarla birleştirmek konusunda daha doğru olmak istiyorsanız, şunu yapmanız önerilir:

  1. Bir arşivi açın ve kaydedin.
  2. Sonra bu işlem yapıldıktan sonra, elle değil - üzerinden - git rmrepoyu içeren dizindeki tüm dosyaları kaldırın. Gibi git-spesifik şeyler kaldırmak değil emin olun .git, .gitignoreve bu tür.
  3. Bu yapıldığında - ve göreceli olarak boş bir dizin - bir sonraki arşivi açın ve içeriğini git depo dizinine yerleştirin.
  4. Şimdi yeni dosyalar yerinde olduğunda, a git add -Ave yeni bir taahhütte bulunun.
  5. Bu işlem bittiğinde, karışıma eklemek istediğiniz bir sonraki ZIP arşivi için birinci adıma geri dönün.

Bu “şeyler işleme, öğeleri sil, yeni şeyler ekle, yeni şeyler ekle” yönteminin avantajı, son depodaki kodun yalnızca eski bir sürümünde bulunabilecek başıboş dosyalara sahip olmamanızdır. Her bir taahhüt, ZIP’in içerdiklerinin saf bir yansımasıdır, birbiri üzerine genişletilmiş bir yığın dosya ve dizin yığınını değil.

Taahhüt Tarihlerini Düz Tutmak

Tarih / saat geçmişinin bir miktarını korumak için, bazı süslü ayak çalışmaları yapabilir ve gerçek Git taahhüt tarihlerini bu Yığın Taşması cevabında açıklandığı şekilde gerçek arşiv tarihlerine uymaya zorlayabilirsiniz . Ama şahsen bunu aşırı karmaşık ve risk eğilimli buluyorum; Böyle işleri mümkün olduğunca basit tutmayı tercih ederim. Bunun yerine, her bir taahhüdün nasıl olduğunu açıkça belirten bir taahhüt mesajı koyardım:

2015-08-01 ZIP sürüm arşivinin işlenmesi.

Bu şekilde, arşivin kaynağının gelecekte sadece yorum yapma geçmişini tarayarak ne işlediğini kolayca öğrenebilirsiniz.

Bunu kendim yaptım bu eski okullar için, bu eski okul, “dizini kopyala ve yönet ve ZIP'yi yönet - ZIP-arşiv” yöntemiyle idare ettim ve bu bir acı, ama uzun vadede yardımcı oluyor Bir proje için bir kodlama tarihçesinin bir bölümünü tutar.


Hemen hemen aynı şeyi söyleyerek bir cevap göndermek üzereydim. Bir adımı daha ileriye atmak istiyorsanız, her bir taahhüt için taahhüt tarihini değiştirebilirsiniz. Stackoverflow hakkındaki bu önceki soru güzel bir şekilde ele alınmaktadır: stackoverflow.com/questions/454734/…
Gene

@Gene Bu tarih değişikliği ipucuna bağlantı için teşekkür ederiz. Şahsen ben böyle bir şey yaparken az söylemek biraz fazla abartılı buluyorum. Bu gibi “tarihi” arşivlerle uğraşırken sadece basit tutmak ve taahhüt mesajının içeriği iletmesine izin vermek daha kolay.
JakeGould

Teşekkür ederim. İşe yarayacağını umuyordum. Ancak dosyaların oluşturulması, silinmesi ve yeniden adlandırılması ile nasıl başa çıkabilirim? Kendim gibi değişiklikleri kontrol etmek zorunda mıyım yoksa daha add -Aönce yapmalı mıyım commit?
Borodin,

@Borodin Evet, sadece git add -Ataahhütten önce kullanın . İşlem hakkında daha fazla temiz olmak istiyorsanız, taahhütler / eklemeler arasındaki tüm dosyaları sadece git üzerinden değil manuel olarak silebilirsiniz. Daha iyi bir yaklaşım olduğunu düşünüyorsanız, bu şekilde nasıl başa çıkılacağını açıklamak için cevabımı düzenlemiştim.
JakeGould
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.