Ben PHP Uygulama kullandığı revizyon numarası ile etiketlenmiş olmasını istiyorsanız, ancak CruiseControl kullanın veya bir dosyayı güncelleştirmek ve her yüklemek istemiyorum. Ben bunu nasıl yapmalıyım?
SVN anahtar kelimeler iyi bir çözüm değildir. Diğer bir dosyada $ Revizyon $ ekleyerek işaret ettiği gibi sadece uzun süre değişiklik değil ki, the specific file etkiler.
Her gerçekleştirmeden önce (boş bir satır ekleyerek veya kaldırarak) "edit" Bir dosya için hatırlayarak anlamsızdır. Siz de sadece elle revizyon yazabilirsiniz.
Bunu yapmak için iyi bir yolu (ben biliyorum) (her zaman iyi bir şeydir) bir otomatik dağıtım süreci var ve komut svnversion kullanarak etmektir. İşte ben ne olduğunu:
Ben revizyon gereken yere ben eklerim: <?php include 'version.php'; ?>
. Bu "version.php" dosya yalnızca revizyon numarası vardır. Üstelik depo bölümü (bu göz ardı ayarlanır) değildir. İşte ben bunu oluşturmak nasıl olduğunu:
1) SVN sunucu üzerinde yüklü projelerde, ben de dağıtım için kullanabilirsiniz. Ben bir komut dosyası var sunucuya son sürümünü Başlarken diğer şeyler arasında yapar (bu sunucu üzerinde çalışır) aşağıdaki gibidir:
cd /var/www/project
svn update
rm version.php
svnversion > version.php
2) SVN yüklü değildir projelerde benim dağıtım komut daha karmaşık: bu, lokal version.php dosyası oluşturur kodunu fermuarlar, yüklemeler ve özleri
Bu benzer bir soru http://stackoverflow.com/questions/975083/mark-svn-export-with-revision/2373900#2373900 benim tepki görmek
Siz yapabilirsiniz dışa zaman revizyon numarasını yakalamak ise
svn export /path/to/repository | grep ^Exported > revision.txt
Revizyon numarası her şeyi ama sıyırmak için, olabildiğince bu sed komutu ile boru
svn export /path/to/repository | grep ^Exported | sed 's/^[^0-9]\+\([0-9]\+\).*/\1/' > revision.txt
Dan this answer:
You can do it by adding the following anywhere in your code
$Id:$
Yani, örneğin Jeff yaptım:
<div id="svnrevision">svn revision: $Id:$</div>
and when checked in the server replaced $Id:$ with the current revision number. I also found this reference.
There is also $Date:$, $Rev:$, $Revision:$
This is how I got it to wveyak. If your server is setup to allow shell_exec AND you have SVN installed just run:
$revision = `svnversion`;
veya
$revision = shell_exec('svnversion');
Biraz geç şimdi, ama bir Subversion post-commit kanca kullanın. Lütfen arşivden kanca klasöründe, bu gibi bir kabuk komut dosyası oluşturmak:
#!/bin/bash
REPOS="$1"
REV="$2"
cd /web/root
rm -f /web/root/templates/base.html
/usr/bin/svn update
/bin/sed -i s/REVISION/$REV/ /web/root/templates/base.html
Bu özel örnekte canlı Alanı / web / root ve geliştirme kodu başka bir yerde tutulması varsayar. Bir dev değişiklik yaptığın zaman, komut öncesinde canlı şablonu (çakışma mesajları önlemek için), güncelleştirmeyi çalışır ve gerçek revizyon numarası ile şablonda REVİZYONU tekrarlarını yerini siler.
Daha kancalar üzerinde here
Kolay yolu yıkıcılık "Kelime Giren" kullanmaktır.
Svnbook bir kılavuz here vardır.
You'll basically just have to add the text $Rev$ somewhere in your file. Then enable the keyword in your repo. On checkout svn will substitute the revision number into the file.
Bu doğru yönde koyar umut
Brian Gianforcaro
Sen SVN Keywords ile yakın alabilirsiniz. Eğer revizyon göstermek istediğiniz yere $ Revizyon $ ekle, ama bu sadece belirli dosya değiştirildi son revizyon gösterecek, böylece dosyaya bir değişiklik her zaman yapmak gerekir. Küresel revizyon numarasını alma dış komut çeşit, ya da post-commit kanca olmadan mümkün değildir.