suin.io

SubversionでのPreloadの管理方法

suin2010年3月11日

Preloadをバージョン管理する便利な方法を紹介しようと思います。ディレクトリごとにバージョン管理する場合、開発中のプリロードを/preloadディレクトリにおいてしまうと、他のプリロードまでバージョンされてしまいます。こういう場合では、/preloadにサブディレクトリを作って、そこでバージョン管理したほうが管理性が向上します。

I will introduce you how to develop preloads with Subversion. If you put your preloads under /preload directory, it is difficult to manage the versions of its. Because, Subversion treats not only your preload but also the other ones. In such a case, you can make subdirectories under /preload. This way helps you to increase your manageability.

配布することを考えれば、サブディレクトリにLicense.txtやReadme.txtを置くといいでしょう。そうしておくと、svn -exportでプリロードの配布パッケージが簡単に生成できます。

If you plan to distribute your preload, you may put License.txt or Readme.txt under the subdirectory. It is a smart way. You only have to command "svn -export" at the subdirectory when you distribute it.

ディレクトリの構成方法

/XOOPS_ROOT_PATH
	/preload
		/VersionedPreload.class.php (a)
		/VersionedPreload
			/.svn
			/VersionedPrelaod.class.php (b)
			/License.txt
			/Readme.txt

VersionedPreload.class.php (a)のソース

<?php

$file = basename(__FILE__);
$dir  = str_replace('.class.php', '', $file);

require $dir.'/'.$file;

?>

(a)はただ、requireするだけです。(プロキシと言ったラインだろうか。)このサンプルソースはどんなプリロードにもそのまま流用できます。なぜなら、ファイル名を動的に取得しているからです。/preloadディレクトリに(a)をひとつ作っておけば、新しくプリロードを作る度に、コピーして名前を変更するだけでいいので便利です。

The (a) only includes your preload. You can apply this sample to your any other preloads. Because, this sample get the file name dynamically. If you create the (a) once, you only have to copy and rename it, when you create a new preload. It is useful.

VersionedPreload.class.php (b)のソース

<?php
/**
 *
 * @package    Versioned Preload
 * @author     Foo Bar <http://example.com/>
 * @copyright  2010 Foo Bar
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2 or later
 *
 */

if ( !defined('XOOPS_ROOT_PATH') ) exit;

class VersionedPreload extends XCube_ActionFilter
{
	public function preBlockFilter()
	{
		$this->mRoot->mDelegateManager->add('Delegate.Name', array(__CLASS__, 'doSomething'));
	}

	public static funciton doSomething(&$param)
	{
		// Do something here.
	}
}
?>

(b)では、プリロードを作るときの普段どおりの書き方をするだけです。とくに変わったことをする必要もありません。

RELATED POSTS