2010-01-20 17 views
6

'dan kaldırmam gerekiyor. Svn'yi kullanıyoruz ve aklımı korumak için git-svn kullanıyorum. Bir noktada, svn sunucumuz belirli bir klasör için 403 döndürmeye karar verdi. Herkese oldu, sadece ben değil.Bazı revizyonları git-svn

Bundan dolayı git-svn rebase yapamıyorum. o son hatayı varken bir 403 dönüyordu klasöründe yaklaşık şikayetçi

Index mismatch: 164adbb93408bed4ff0bdbcbf07bdfb2c49ed0ce != 64443edc6089f7f737e51cf8ea5ff3680c95a7e9 
rereading 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 
    M test/system-tests/src/test/java/com/garmin/elevation/ElevationManagerSystemTest.java 
    M test/activity-test/src/test/java/com/garmin/elevation/ElevationManagerIntegrationTest.java 
    M test/activity-test/src/test/java/com/garmin/mb/activity/service/ActivityServiceManagerIntegrationTest.java 
    M system/deployment/src/main/resources/oracle/releases/2.9-SNAPSHOT/110-preference/4-data.dml.sql 
    M pom.xml 
service/activity-service-1.2/src/main/java/com/garmin/activity/service/impl/ActivityServiceImpl.java was not found in commit 0f2fa25d15a35ac3fe311e3e0142f1d9e5a3be18 (r8845) 

dosyası: şu hatayı görüyorum. Dosya sistemimde, hizmet/etkinlik hizmeti klasörü mevcut değil. Dosyayı değiştirmeye çalıştığına inanıyorum (svn'deki değişiklik budur), ancak dosya mevcut olmadığından sadece patlar.

Sanırım geçmiş düzeltmeleri kaldırabilir ve sonra yeniden getirebilirseniz, bu yalnızca işe yarayabilir. Bunu nasıl yapacağından emin değilim. Etkileşimli olarak yeniden yapışmayı denedikten sonra bir grup silme işlemini denedim, ancak bu işe yaramadı.

Peki, zaten önceden getirilmiş sürümlerin nasıl kaldırılacağını bilen var mı?

cevap

8

Öncelikle .git dizininin bir yedeğini alın.

.git/svn; ve sorun dalını (genellikle trunk) temsil eden git-svn neşredilmiş dalı geri sarın. Şubeyi geri sarmak için git pack-refs --all, git log $BRANCH'u çalıştırın, sorun işlemeye başlamadan önce işlemi bulun ve dalın eski işlemeye işaret etmesi için .git/paket-ref. Ardından git svn fetch'u çalıştırın. Rev-haritayı mevcut, geri alma kolunuzdan yeniden oluşturacak, daha sonra henüz yapmadığınız svn taahhütlerini getirecektir. Artık normal olarak yeniden başlatabilir ve destekleyebilirsin. Eğer refetching başlamak istiyorum önce revizyon olduğunu rev ​​nerede

9

şimdi bunu yapmak için daha iyi bir yolu git svn reset -r <rev> olduğunu. Bu işlem bittikten sonra, git svn fetch'u çalıştırın ve dizini yeniden oluşturacak ve rev revizyonundan sonra revizyonları tekrarlayacaktır.