Как упомянуто, если Вы хотите притон “per-ответвления, ” Вы действительно, хотят новое ответвление, разветвляющееся прочь от существующего ответвления.
кроме того, помимо уже упомянутого того, что притон позволяет Вам вытягивать в ответвление, которое продолжающий работать you’re, он также позволяет Вам переключатель ответвления перед фиксацией всего. Это полезно не для избирательного подхода к выбору в обычном смысле так что касается избирательного подхода к выбору Ваша рабочая копия .
F.ex., при работе над ответвлением функции я буду часто замечать незначительные ошибки или косметические примеси в коде что aren’t относящийся к тому ответвлению. Ну, я просто фиксирую тех сразу же. Когда время настает к фиксации, я выборочно фиксирую соответствующие изменения, но не меры и косметику. Вместо этого я прячу тех, который позволяет мне переключаться на свое ответвление minor-fixes-on-stable, где я могу тогда применить притон и фиксировать каждую незначительную фиксацию отдельно. (В зависимости от рассматриваемых изменений я также спрячу некоторых из них все снова и снова, для переключения на различное ответвление функции, где я подаю заявку те .)
Это позволяет мне идти глубоко в режим программирования, когда я работаю, и не беспокойство о надлежащем библиотечном деле моего кода. Тогда, когда я делаю умственный перерыв, я могу возвратиться и тщательно отсортировать свои изменения на все правильные полки.
, Если бы притон weren’t глобальный, этот тип рабочего процесса было бы намного более трудно сделать.
Ваше решение, конечно же, работает. Но вы должны быть осторожны, чтобы также остановить и удалить любой ресурс, который вы извлекли и запустили во время установки. Это может быть особенно сложно отследить, если исполняемый файл также создает какие-либо рабочие файлы.
Вы должны это сделать, потому что одной из сильных сторон OSGi является управление жизненным циклом, которое также позволяет вам удалять пакеты и службы без следа. Для этого фреймворк отслеживает все, что делает пакет. Если запустить исполняемый файл после того, как вы удалили установленный и запустили пакет, соединение будет потеряно, и он может продолжать работать до перезагрузки компьютера (часто это не вариант для встроенных систем).
Должны ли эти дополнительные файлы быть доступны для записи с помощью собственного кода? Если нет, то ничто не мешает вам помещать любые понравившиеся файлы в пакет.
Обычная проблема, с которой вы сталкиваетесь в OSGi, - это определение пути к файлу, поскольку OSGi не предполагает, что файловая система доступна (это не так странно, как звучит так, будто OSGi зародилась во встраиваемых устройствах.)
Как вы контролируете, где собственный код ищет связанные с ним файлы? Вам нужно передать ему путь?
Если вы хотите, чтобы каталог копировал или распаковывал файлы, используйте:
org.eclipse.core.runtime.Platform.getStateLocation()
Что дает вам рабочий каталог для пакета.
Если вы хотите найти путь для конкретный файл в вашем пакете, вы можете сделать:
org.eclipse.core.runtime.FileLocator.toFileURL((context.getBundle().getEntry("/etc/readme.txt")))
Что в этом случае вернет URL-адрес файла на /etc/readme.txt
в текущем пакете.