SORU
24 EYLÜL 2008, ÇARŞAMBA


'işlemek için en kolay yolu ne ve diğer değişiklikler yalnız bırakarak mı?tek bir dosya itme

Yeni Mercurial ben nispeten ve ekibim şu anda Subversion için bir yedek olarak çalışıyor.

Nasıl işlemek ve benim çalışma dizini içindeki diğer değişiklikler kaydedilmemiş bırakarak tek bir dosya başka bir depo için dışarı itme (ya da en azından diğer depo itti) alabilir miyim?

Bu veritabanı göçler ile bizim için olur. Bir DBA görebilir, kaynak kontrolü ve kod değişiklikleri veritabanı göç ile birlikte gitmek için çalışırken düzenlemek için geçiş yatırmak istiyoruz. Değişiklikleri henüz hepsini dışarı itmek istemeyiz bu yüzden gitmek için hazır değil.

Subversion, sadece yapardım:

svn add my_migration.sql  
# commit only the migration, but not the other files I'm working on
svn commit -m "migration notes" my_mygration.sql

ve yerel olarak çalışmaya devam.

Bu işe yaramazsa ile mercurial gibi yapıyorum zaten bunun için başka bir depo varsa, değişiklikler yapamadım aşağı çekti, istediğini bana tam olarak indirme, birleştirme ve tamamlama birleştirme için depo. Bir birleştirme yapmakta, yerel depodaki her şeyi işlemek için zorlar, böylece dosyaları atlamak için izin vermeyin.

En kolay şey, ben bu olayı çözmek için taahhüt dosyası için benim yerel depo, klon benim yerel depo, getir yeni değişiklikleri gerçek depo, birleştirme ve tamamlama birleştirme ve onları itmek benim değişiyor.

hg add my_migration.sql 
hg commit -m "migration notes" my_migration.sql 
cd ..
hg clone project project-clone
cd project-clone
hg fetch http://hg/project
hg push  http://hg/project

Bu çalışır, ancak ve dosyaları birlikte birleştirme gönderme sadece daha kolay bir şey, bir şekilde mercurial zaten benim çalışma dizinindeki dosyaları görmezden söylemek eksik gibi hissediyorum. Mercurial sıralar bunu yapabilir sanıyorum, ama tam mq henüz grok bilmiyorum.

Josh Matthews sayesinde aşağıda, hasıraltı komutu için tam aradığım şey. Burada çalışan almak için kullandım kombine şeyler çok büyük biraz googling ile kurulum görmedim.:

Başlayalım:

hg clone http://freehg.org/u/tksoh/hgshelve/ hgshelve

Proje tek dosya (şu anda) hgshelve.py dosya.

Eğer ~/değiştir.hgrc hasıraltı uzantısı, repo nerede nereye işaret eklemek için:

[extensions] 
hgshelve=/Users/ted/Documents/workspace/hgshelve/hgshelve.py

hg shelve hg unshelve geçici olarak değiştirir uzak saklamak için kullanabilirsiniz. "Patch hunk" düzeyi ve öğeleri uzak yere göndermek seçmek için. çalışın Bir dosya zaten değişikliklerle repo, sadece dosya eklemek için listelenen rafa kaldırmak gibi görünmüyor.

CEVAP
13 Temmuz 2010, Salı


Ben aslında bu soruyu gündeme getiriyor bu yana neredeyse 2 yıl geçti. Farklı şimdi soru yukarıda bir yorum yukarıda bahsettiğim gibi olurum. Ne yaparım şimdi yerine biri benim değişiklikler benim yerel repo (hg kayıt uzantısı sadece dosya parçalarını işlemek için kullanabilirsiniz) dosyasına kaydetmek için:

hg commit -m "commit message" filename

Sadece dışarı itin.

hg push

Eğer orada bir çatışma, çünkü diğer değişiklikler yapılması repo ihtiyacım için birleştirmek istiyorum güncellemek için ana revizyon (görülen "hg anne -r ." bunu bilmiyorsan ne olduğunu), commit benim başka bir değişiklik yok yani bende 2 kafalı. Sonra orijinal tek dosyaya geri dönmek tamamlama ve/sürüm görebilmeniz çekin. Dışarı itmek ile değiştirir

hg push --rev .

Sadece tek bir dosya göndermek için ve tekrar gözden birleştirme. Sonra yerel olarak var olan iki kafa birleştirebilirsiniz.

Bu şekilde mq malı ve reddedilen sürü potansiyeli kurtulur ve her şeyin kaynağı kontrol ederek takip ediyor. "Hg şerit" eğer daha sonra onları istemediğine karar verirsen dışı düzenlemeler de yapabilirsiniz

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • UberFacts

    UberFacts

    26 EKİM 2013
  • vgeller1

    vgeller1

    22 Kasım 2009