Используя Черепаху SVN для управления версиями отдельного пользователя

9
задан splash 27 August 2010 в 06:13
поделиться

3 ответа

Здесь возникает проблема просто потому, что PHP сейчас интерпретирует ваш файл. Имеются вложенные функции.

Вот как ваш код в настоящее время выполняется:

function something() {
    $include_file = 'test.php';
    if ( file_exists($include_file) ) {
        //require_once ($include_file);

        $flag = 4;
        function test() {
           global $flag;

           echo '<br/>in test flag="'.$flag.'"';
           if ($flag) {
               echo 'flag works';
             //do something
           }
        }

        //end require_once ($include_file);

        test();
    }
}

something();

exit;

Как вы видите, при присвоении значения 4 $ flag ( $ flag = 4 ) вы находитесь в области действия функции что-то () ,

В test () , поскольку вы объявляете $ flag как глобальный в этой функции, $ flag является совершенно другой переменной, глобальной для всего сценария.

Чтобы избежать этой проблемы, используйте сверхглобальный $ GLOBALS . Это быстрее, чем использовать global в любом случае, и таким образом вы не смешиваетесь в области проблем, как выше:

function something() {
    $include_file = 'test.php';
    if ( file_exists($include_file) ) {
        //require_once ($include_file);

        $GLOBALS['flag'] = 4;
        function test() {
           global $flag;

           echo '<br/>in test flag="'.$GLOBALS['flag'].'"';
           if ($GLOBALS['flag']) {
               echo 'flag works';
             //do something
           }
        }

        //end require_once ($include_file);

        test();
    }
}

something();

echo $flag; //echos 4

exit;
-121--4746184-

Вы можете сделать, и я рекомендую вам сделать это. Я был в вашем штате, около года назад, модифицировать небольшой кусок кода здесь и там, и через пару недель я обнаружил, что это полный беспорядок, не зная, что я сделал, по какой причине.

Установите SVN, установите расширение оболочки Tortise SVN, создайте локальное репо, а затем начните фиксацию по мере необходимости. Посмотрите на учебник Джеффа Этвуда - SVN в Windows

(Если вы не упомянули о вашей ОС, Linux должен поставляться с установленным svn, в противном случае просто установите его из диспетчера пакетов).

-121--3286585-

Можно просто создать "репо" в файловой системе без запуска сервера. В этой статье даются подробные инструкции. В основном вы создаете папку репо, используйте TortiveSVN для создания репозитория в этой папке, а затем извлекаете репо, используя файловый протокол ( file :///path/to/repo ), в вашу рабочую область разработки..

11
ответ дан 4 December 2019 в 11:04
поделиться

Git или Mercurial - новейшие системы управления версиями, которые действительно могут лучше подходить для этого, чем SVN. TortoiseHG - это Mercurial-совместимый графический интерфейс, похожий на TortoiseSVN. Рабочий процесс очень похож: добавьте файлы, которые вы хотите обновить, зафиксируйте при достижении определенной вехи и обновите / выполнив проверку, если вы хотите вернуться к более ранней версии.

Mercurial намного проще, чем SVN, в настройке и эффективном использовании, как только вы к нему привыкнете. Вам не нужно инициализировать отдельный репозиторий, он находится в вашем рабочем каталоге (просто запустите команду init в своем рабочем каталоге).

Если вам нужно работать над отдельными версиями одного и того же проекта, вы можете просто сделать копию своего рабочего каталога, зафиксировать различные изменения в каждой копии и, в конечном итоге, перенести изменения из одной в другую, если хотите (SVN требует, чтобы вы вручную создавать ветки в центральном репо, а слияния труднее получить правильно).

Репозитории Mercurial также намного проще резервировать и восстанавливать (вы всегда можете просто скопировать их, но вы можете использовать push и pull для инкрементной передачи в место резервирования)

Вот хороший справочник по Hg ; как только вы освоите основы, использование графического интерфейса будет естественным.

4
ответ дан 4 December 2019 в 11:04
поделиться

Вы можете это сделать, и я рекомендую вам это сделать. Около года назад я был в вашем штате, изменил небольшой фрагмент кода здесь и там, и через пару недель обнаружил, что это полный беспорядок, без возможности узнать, что я делал, когда и по какой причине.

Установите SVN, установите расширение оболочки Tortise SVN, создайте локальное репо, а затем начните коммит, когда захотите. Посмотрите руководство Джеффа Этвуда - SVN в Windows

(при условии, что Windows, вы не упомянули свою ОС, Linux должен поставляться с установленным svn, иначе просто установите его из своего пакета менеджер).

4
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: