문제

내가 갖고 싶어 나 PHP 응용 프로그램이 표시된 수정 번호를 사용하는지만,나는 사용하고 싶지 않은 CruiseControl 거나 업데이트 파일을 업로드하는 모습입니다.어떻게 해야 할까요?

도움이 되었습니까?

해결책

SVN 키워드 솔루션이 아닙니다.다른 사람으로 지적을 추가하$개정$파일에서만 영향을 미 특정 파일, 는 변경되지 않을 수 있습니다.

을 기억하"편집"파일을(추가하거나 제거하여 빈 줄이)앞에 모든 commit 는 것은 무의미한 것입니다.할 수 있을 뿐만 아니라 그냥 유형 개정입니다.

하나 그것을 하는 좋은 방법(나)이 자동 배포 프로세스(항상 좋은 일)고 명령을 사용하여 svnversion.여기에 내가 무엇을 할:

어디든지 나는 필요한 수정 나 include: <?php include 'version.php'; ?>.이"version.php"파일 뿐 아니라 개정 번호입니다.또한 그것의 일부가 아닌 저장소(이 설정을 무시된다).여기에 어떻게 만듭니다:

1)프로젝트에서는 SVN 서버에 설치되는,또한 그것을 사용에 대한 배포합니다.최신 버전 서버 스크립트가 있는 다른 것들 사이에는 다음과 같은(그 서버에서 실행됩):

cd /var/www/project
svn update
rm version.php
svnversion > version.php

2)프로젝트에 추가 설치되지 않은 나 배포하는 스크립트가 더 복잡:를 만듭니다 version.php 파일이 로컬로,지퍼 코드,업로드하고 추출 그

다른 팁

가정 internet security 은 체크아웃의 복사본을 파괴 트리할 수 있습석/.svn/항목의 파일을 걸으로 수정 번호(4 라인이 여기)...

PHP 에서:

$svn = File('.svn/entries');
$svnrev = $svn[3];
unset($svn);

이것은 제가 어떻게 여기까지 왔는지 그것을 작동합니다.하는 경우 서버의 설정하도록 허용 shell_exec 고 있 SVN 설치되어 실행:

$revision = `svnversion`;

$revision = shell_exec('svnversion');

이 답변:

당신은 그것을 할 수 있습을 추가하여 다음 어디에서나 귀하의 코드

$Id:$ 

그래서 예를 들어,제프았다:

<div id="svnrevision">svn revision: $Id:$</div>

고할 때에 점검 서버로 교체$Id:$현재 개정 번호입니다.또한 발견 이 참조.

도$날짜:$,$Rev:$, $개정:$

조금 늦은 지금,하지만 사용하여 파괴 후 commit 후크.에서 저장소의 후크 폴더를 만들고,쉘 스크립트는 다음과 같이 하나:

#!/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

이는 특정 예에서 당신의 라이브 사이트에서는/web/루트 및 개발 코드가 다른 곳에서 개최.투입할 때 개발 변화,스크립트를 삭제하기 전에 템플릿 라이브(충돌을 피하기 위하여 메시지),실행하고 업데이트 및 대체 발생의 개정에서는 템플릿과 실제적인정 번호입니다.

상에 후크

대부분의 경우에는 코드 서버에서 실제로 포함하는"수출"의 코드,지 않을 체크 아웃,따라서 포함되지 않습니다.svn 폴더에 있습니다.적어도 그 설치가 보입니다.다른 사람은 실제로 확인이 자신의 코드를 웹 서버?

당신이 얻을 수 있으로 닫 SVN 키워드.추가 수정$할 수정을 보여지만,그만의 마지막 수정된 특정한 파일이 변경되었다,그래서 당신이 변화를 확인하는 파일이다.점점 글로벌 revision 수 없습니다없이 어떤 종류의 외부 스크립트나 게시하 후크.

당신은 또한 그것을 다음과 같다:

$status = @shell_exec('svnversion '.realpath(__FILE__));
if ( preg_match('/\d+/', $status, $match) ) {
    echo 'Revision: '.$match[0];
}

가장 쉬운 방법을 사용하는 것이 파괴"키워드를 교체".이 있는 가이드 에 SVN book(버전으로 제어 Subversion).

당신은 기본적으로는 텍스트를 추가$Rev$곳에서 당신의 파일입니다.다음 사용에서 키워드의합니다.체크아웃 SVN 것이 대체할 수정 번호로 파일입니다.

내 응답을 비슷한 질문 "Mark"svn 수출 개정.

를 캡처하는 경우 버전 번호를 내보낼 때 사용할 수 있습니다.:

svn export /path/to/repository | grep ^Exported > revision.txt

하는 스트립 모든지 수정할 수 있습관을 통해서 그것이 나오지 명령:

svn export /path/to/repository | grep ^Exported | sed 's/^[^0-9]\+\([0-9]\+\).*/\1/' > revision.txt
$svn_rev=file_get_contents('/path.to.repository/db/current');

가능성,이렇게 실행하는 것입니 cron 실행하는 단계에서 설명한"배포하는 과정"(가정은*유닉스/FreeBSD server).

성능이 문제가 되는 경우에는,다음을 할 수 있다:

exec('svn info /path/to/repository', $output);
$svn_ver = (int) trim(substr($output[4], strpos($output[4], ':')));

이 코스의에 따라 수행하는 데 체크아웃,그리고 존재의 svn 명령입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top