PHP sitesini kontrol sürümüne SVN kullanmak için en iyi yolu nedir?

12 Cevap php

Ben her zaman sadece, sitelerden dosyaları aşağı FTPed onları düzenlenebilir ve siteleri oluştururken geri koydu, ama düzgün şeyler yapmak için öğrenmeye değer hissediyorum ettik.

Ben sadece bir SVN repo için her şeyi taahhüt ettik ve sunucuya sshing ve etiketli bir yapı kontrol yanı sıra, anahtarını kullanarak bu yapı güncelleme denedim.

Tüm iyi, ama benim şimdiki süreç çok daha çok daha yavaş.

Böyle bir şey kurmak için en iyi yolu nedir? Benim çoğu zaman sadece hata düzeltmeleri veya küçük değişiklikler ziyade büyük yeniden yazar, bu yüzden sık sık şeyler güncelliyorum.

12 Cevap

Mutlaka sunucuya dosyaları dağıtmak için SVN kullanmak gerekmez. Bunun için FTP kullanarak tutmak ve sadece revizyon tarihi için SVN kullanın.

Ben sadece sunucudan svn update çalıştırmak hızlı güncellemeler için.

Bazen gerçekten hızlı güncellemeler için ben vim kullanarak dosyaları düzenlemek ve bunları sunucuya taahhüt.

Çok doğru, ama hızlı ve oldukça güvenilir değil.

Sen rsync sunucuya değişiklik yüklemek için yükleme bakmak gerekir.

Bu sunucu üzerinde şu anda var ve daha sonra sadece değişen dosyaları gönderir kopya repo yerel kopyasını karşılaştırır çünkü rsync harika.

Bu size değişti her dosyayı hatırlamak zorunda ve FTP elle seçerek, ya da tekrar sunucuya bütün yerel bir kopyasını yüklemek zorunda (ve karşılaştırmalar yapmak için FTP bırakarak) kaydeder.

Rsync ayrıca sunucular arasında eşitleme yaparken dosya / klasör (yani. Svn / klasör) dışlamak sağlar.

Ben bile hata düzeltmeleri, tüm değişiklikleri izlemek için Subversion kullanarak devam tavsiye ederim. Eğer üretim sunucusuna dağıtmak istediğinizde, SSH ve çağrı svn update kullanmalısınız. Capistrano kendi sunucusuna SSH ve Subversion güncellemeyi yapacak - Bu işlem yerel kutusuna oturup cap deploy çağırabilirsiniz, yani Capistrano kullanılarak otomatik hale getirilebilir. Sıkıcı el emeği bir sürü kaydeder.

Düzgün bu yapmak istiyorsanız, kesinlikle yerel bir SVN deposu kurma içine bakmak gerekir. Ben de çok otomatik olarak PHP kodu karşı herhangi bir testler olacağı gibi cruise control gibi sürekli entegrasyon (CI) sunucusu kurmak, tavsiye ederim zaman svn için check hiç. Bu testleri geçtikten sonra CI sunucusu aynı zamanda, bir düğmeye tıklamasıyla ana FTP ile dosyalarınızı yayınlamak için kullanılan olabilir.

Bu bir sürü iş gibi gözükmesine rağmen, gerçekten değil ve düzgün bir dağıtım işleminin faydaları daha uzun vadede kendisi için ödeyecek.

Benim projeler için, ben genellikle bir repo var. Benim laptop üzerinde çalışan bir kopyasıdır, ve canlı web sitesi çalışan bir kopyasıdır. Benim yerel web sunucusu kullanıyorsanız, yerel kopya benim değişiklik yapmak. Her test edilmiş ve gitmek için hazır olduğunda, o zaman ben uzak sunucuya ve svn güncelleştirme ssh, değişiklikleri işlemek.

Ben de onların revizyon numarasına göre etiketlenmiş ben veritabanı yapısına yaptığınız herhangi bir değişiklik sql dosyalarını içeren bu depo bir klasör tutun. Örneğin, ben Revizyon 74. taahhüt ve tablolardan birinde bir çift ekstra sütun varsa, taahhüt dahil dbupdates/rev74.sql olacaktır. Ben svn update yaptıktan sonra bu şekilde, bütün sadece benim sql dosyası (mysql db_name-p-u username

Onunla gerçek funky almak istiyorsanız, otomatik olarak sunucuya değişiklikleri itmek, başarılı bir yapı daha sonra, compile PHP kodu, sonra SVN güncel sürümünü almak için bir build dosyası kullanabilirsiniz.

Bu hata ayıklama yardımcı olacak ve kod çalıştırmak daha hızlı yapabilir. Ayrıca, yapı alışkanlığı içine almak gerçekten benim sadece düz Firefox üzerinden sunucu ve hata ayıklama PHP bastırıyor üzerinde kodlama geliştirdi.

Kaynak denetimi faydaları projenin karmaşıklığı ve geliştiriciler artış sayısı gibi kendini göstermektedir. Eğer bir uzak sunucuda doğrudan çalışan ve yalnızca çoğu zaman hızlı yamaları yapıyorsanız, kaynak kontrolü sizin için çabaya değer olmayabilir.

Preferably, you should be working from a local working copy of the repository (meaning you should also set up a local server). Working against a remote server using SVN as the only means to update it would slow you down quite considerably. Having said that, working with SVN (or any other source control) will yield many benefits in the long run - you have a complete history of changes, you can always be sure the server is up-to-date (if you ran update) and if you add more developers to the project you can avoid costly source overwrites from each other.

Ben işte ne bir test sunucusuna değişiklikleri yüklemek için FTP kullanmaktır. Ben üzerinde çalıştığım sitenin bölümünde bitmiş olduğumda Sonra, ben değişiklikleri işlemek ve hem de güncelleyin. Ben bir şey üzerinde çalışıyorum ve ben farklı dizinlere dosyaları bir çok değişiklik Bazen, ben bunu taahhüt ve test sunucu güncelleme. Ama üretim sunucuyu güncelleme yok. Ama ben burada sadece programcı, ben birden fazla programcı varsa possibally adamcağız kod işlemekten tavsiye etmem.

Eclipse (şu anda sürüm 6.1) için ZendStudio kullanın. Ve ben mevcut benim kaynak kodlarını tutmak için SVN kullanın. Başlangıçta ben süreç biraz sürecini işlemek nedeniyle yavaş (ve yorum taahhüt girme) ve durana kadar bekleyin düşündüm.

Ancak Ctrl + Alt + C Commit ve 'Her zaman Arka çalıştırmak' kontrol etmek olduğunu öğrendikten sonra, süreç hiç de yavaş değildir.

Artı, ben bir süre sonra, lokal sonra sadece SSH şeyi çalıştırabilirim.

Ben otomatik olarak benim web güncellemek için bir post-commit kanca yaptı. Bu hızlı ama hata yapabilir.

IF * nix sunucu üzerinde AND Eğer uygun SSH erişimi AND Eğer web sitesinin birden çok kopyasını tutmak için yer var, THEN Ben bulduk en yararlı tek sürüm tekniği web sitesinin "güncel" sürümüne işaret için bir sembolik bağlantı kullanmaktır. (Hala sürüm kaynak koduna SVN kullanabilirsiniz - bu kolayca / anında sunucu üzerinde web sitesinin sürümleri arasında geçiş yapmak için bir yoldur.)

  1. Web sitesinin kökü olarak / whatever.com işaret etmek websunucu ayarlayın.

  2. / Website/r1v00 gibi web sitesi dosyaları FTP bir klasör var, o / website/r1v00 işaret "whatever.com" adında bir sembolik oluşturmak

  3. Eğer web sitesi güncelleştirilmiş bir sürümünü varsa, "whatever.com" Şimdi / website/r1v01 işaret etmek için sembolik bağ değiştirmek sonra, güncellenen site için FTP tüm dosyaları / website/r1v001 adlı başka bir klasör oluşturun. Yeni site ile herhangi bir sorun varsa, sadece geri / website/r1v00 için "whatever.com" sembolik bağın işaret ederek anında geri dönebilirsin

Tabii ki, / sembolik bağın oluşturulmasını ve anahtarlama için bir script kurmak gerekir yapabilirsiniz. Benim durumumda, ben tüm mevcut sürümleri listeler, ve ben onlara herhangi bir geçiş sağlar PHP ile yazılmış bir "admin" sayfası var. Bu teknik benim pastırma birkaç kez kurtardı ...!

Açıkçası bu sürüm veritabanı şemaları veya veritabanı içeriği ile herhangi bir sorunları gidermez.