私のSVNリポジトリのレイアウト...
Project_Name(root)/trunk
/branches/
/branches/new_feature_of_trunk1
/branches/new_feature_of_trunk2
/tags/
/tags/ETC1
/tags/ETC2
たとえば、私のリポジトリのいくつかのブランチを構築するためにビルドボットを作成しようとしていました... /trunk および /branches/new_feature_of_trunk1 .これは私がそれをコーディングする方法です
from buildbot.changes.svnpoller import SVNPoller, split_file_branches
source_code_svn_url='http://domain.com/svn/Project_Name/'
c['change_source'].append(
SVNPoller(
svnurl=source_code_svn_url,
split_file=split_file_branches,
pollinterval=60,
histmax=10,
)
)
def modified_files(change):
for name in change.files:
if name.endswith(".c"):
return True
elif name.endswith(".h"):
return True
return False
from buildbot import scheduler
from buildbot.changes.filter import ChangeFilter
s1=scheduler.AnyBranchScheduler(
name="Project_Test",
treeStableTimer=2*60,
change_filter=ChangeFilter(
branch=[
'trunk',
'branches/new_feature_of_trunk1'
]
),
builderNames=[
"Windows-x64-VS10",
],
fileIsImportant=modified_files
)
c['schedulers']=[s1]
from buildbot.process import factory
from buildbot.steps import source,shell
from buildbot.process.properties import WithProperties
from buildbot.config import BuilderConfig
step_source_svn=source.SVN(
mode='copy',
baseURL=source_code_svn_url,
defaultBranch='trunk',
retry=(30,2)
)
f2=factory.BuildFactory()
f2.addStep(step_source_svn)
f2.addStep(
shell.Compile(
command=[
"devenv.com",
"MakeMe.sln",
"/build",
"Release^|Win32"
],
logEnviron=False
)
)
問題はこれです.. defaultBranch='trunk' を追加したことは知っています。しかし、ルート全体ではなくトランクのみをチェックアウトするのはなぜですか? それから私はそれを削除するたびにdefaultBranch. このエラーが発生しました
exceptions.RuntimeError: ビルダー 'Windows-x64-VS10' に属する SVN ソース ステップは、どのブランチを使用するかを認識していません。これは、変更元がブランチを指定しておらず、defaultBranch が None であることを意味します。
次に、私が投稿したコードは、/trunk または /branches/new_feature_of_trunk1 に modified_files がある場合、ビルドマスターがスレーブにビルドするように指示するためのものです。同じ SVN リビジョンの両方のブランチに変更がある場合。次に、/branches/new_feature_of_trunk1... の前に /trunk を最初にコンパイルします。
しかし、私が言ったように、それは私が望むようには機能しません