Автоматическое переключение между ветками SVN одного проекта - PullRequest
2 голосов
/ 28 мая 2009

Как разработчики могут настроить свои пути к среде при работе с различными ветками SVN одного и того же проекта, чтобы им не нужно было настраивать свои пути при каждом переключении с одной ветви на другую?

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

То есть, если ваша IDE не делает это автоматически для вас (я использую vim).

Ответы [ 2 ]

4 голосов
/ 29 мая 2009

В качестве другого варианта вы можете использовать символическую ссылку, а затем указать переменные среды. Как:

branch1/
branch2/
current -> branch1/

Тогда, если вы хотите работать с branch2, просто укажите на него значение 'current'. Ваши переменные среды будут указывать на «текущий».

1 голос
/ 29 мая 2009

То есть ваш рабочий процесс состоит в том, чтобы хранить отдельные ветви в отдельных рабочих каталогах? Это нормально, это довольно разумный рабочий процесс с Subversion.

Лично я бы изменил все программы на Python, которые есть у вас в системе контроля версий, для поиска своих собственных библиотек и изменения sys.path перед импортом чего-либо; таким образом, они будут работать независимо от того, куда они были переведены.

#!/usr/bin/env python
import os, sys
basedir = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(basedir, 'lib'))

Если вы этого не сделаете, вы можете поместить исполняемый файл-обертку в ~/bin или что-то еще, где-нибудь в $PATH,

#!/bin/bash
dir=$(pwd)
while [[ $dir != / ]]; do
    if [[ -d "$dir/lib" ]]; then
        export PYTHONPATH="$dir/lib${PYTHONPATH:+:$PYTHONPATH}"
        break
    fi
    dir="${dir%/*}"
done
if (($# > 0)); then exec "$@"; fi

, который просто просматривает каталог lib, добавляя к $PYTHONPATH перед запуском все, что вы хотите. Может быть, назовите это "py".

$ cd dir1          # dir1/lib exists
$ py ./my-program
$ cd ../dir2       # dir2/lib exists
$ py ./my-program

Также возможно иметь рабочий процесс, в котором вы остаетесь в одном рабочем каталоге, используя svn sw для изменения ветвей. Поскольку ваш путь никогда не меняется, настройка PYTHONPATH один раз останется действительной даже с изменениями ветви.

(Это обычный рабочий процесс в git , monotone, hg и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...