How to write load rule to recursively ignore certain file types
This is my component structure in my RTC workspace:
Component-A
|-- Root-Folder
|-- Sub-Folder-1
|-- File2.c
|-- File2.doc
|-- Sub-Folder-2
|-- Sub-Folder-3
|-- File3.c
|-- File3.doc
|-- File1.c
|-- File1.doc
My requirement is to filter out all *.doc files and load only all *.c files into my sandbox like this:
My Sandbox path
|-- Root-Folder
|-- Sub-Folder-1
|-- File2.c
|-- Sub-Folder-2
|-- Sub-Folder-3
|-- File3.c
|-- File1.c
Learning from article: https://jazz.net/library/article/1015 I tried below load rules
1. using Exclude filter
------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<excludeFilter>
<filter name=".doc"/>
</excludeFilter>
</scm:sourceControlLoadRule>
=> Error: Error parsing load rule: cvc-complex-type.2.4.b: The content of element 'scm:sourceControlLoadRule' is not complete. One of '{parentLoadRule, itemLoadRule}' is expected.
=> Why this error occurs ? It is not mentioned in the article 1015 that excludeFilter is dependent on parentLoadRule/itemLoadRule
2. using parentLoadRule and include filter
------------------------------------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<parentLoadRule>
<component name="Component-A"/>
<parentFolder repositoryPath="/"/>
<include>
<filter pattern="*.c"/>
</include>
</parentLoadRule>
</scm:sourceControlLoadRule>
=> Error: There are no qualifying items under / in component Component-A to be loaded into sandbox
=> Why am I not able to use "/" as repositoryPath as shown in article 1015 ?
3. using parentLoadRule and include filter and setting repositoryPath
------------------------------------------------------------------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<parentLoadRule>
<component name="Component-A"/>
<parentFolder repositoryPath="Root-Folder"/>
<include>
<filter pattern="*.c"/>
</include>
</parentLoadRule>
</scm:sourceControlLoadRule>
=> Status of sandbox after loading using this load rule:
My Sandbox path
|-- File1.c
=> This load rule just loads "File1.c" directly into my sandbox (It doesn't even create the "Root-Folder" inside my sandbox). Also, it is not recursive. File2.c, File3.c and their corresponding folder structure is not created inside my sandbox.
Could you please advice on how I could modify the above rule(s) to realize my requirement ? (I'm using RTC 4.0.6)
Thanks in advance.
Component-A
|-- Root-Folder
|-- Sub-Folder-1
|-- File2.c
|-- File2.doc
|-- Sub-Folder-2
|-- Sub-Folder-3
|-- File3.c
|-- File3.doc
|-- File1.c
|-- File1.doc
My requirement is to filter out all *.doc files and load only all *.c files into my sandbox like this:
My Sandbox path
|-- Root-Folder
|-- Sub-Folder-1
|-- File2.c
|-- Sub-Folder-2
|-- Sub-Folder-3
|-- File3.c
|-- File1.c
Learning from article: https://jazz.net/library/article/1015 I tried below load rules
1. using Exclude filter
------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<excludeFilter>
<filter name=".doc"/>
</excludeFilter>
</scm:sourceControlLoadRule>
=> Error: Error parsing load rule: cvc-complex-type.2.4.b: The content of element 'scm:sourceControlLoadRule' is not complete. One of '{parentLoadRule, itemLoadRule}' is expected.
=> Why this error occurs ? It is not mentioned in the article 1015 that excludeFilter is dependent on parentLoadRule/itemLoadRule
2. using parentLoadRule and include filter
------------------------------------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<parentLoadRule>
<component name="Component-A"/>
<parentFolder repositoryPath="/"/>
<include>
<filter pattern="*.c"/>
</include>
</parentLoadRule>
</scm:sourceControlLoadRule>
=> Error: There are no qualifying items under / in component Component-A to be loaded into sandbox
=> Why am I not able to use "/" as repositoryPath as shown in article 1015 ?
3. using parentLoadRule and include filter and setting repositoryPath
------------------------------------------------------------------------------------------
<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<parentLoadRule>
<component name="Component-A"/>
<parentFolder repositoryPath="Root-Folder"/>
<include>
<filter pattern="*.c"/>
</include>
</parentLoadRule>
</scm:sourceControlLoadRule>
=> Status of sandbox after loading using this load rule:
My Sandbox path
|-- File1.c
=> This load rule just loads "File1.c" directly into my sandbox (It doesn't even create the "Root-Folder" inside my sandbox). Also, it is not recursive. File2.c, File3.c and their corresponding folder structure is not created inside my sandbox.
Could you please advice on how I could modify the above rule(s) to realize my requirement ? (I'm using RTC 4.0.6)
Thanks in advance.
Comments
Karthikeyan Baskaran
Jun 10 '14, 7:43 a.m.<scm:sourceControlLoadRule version="1" xmlns:scm="http://com.ibm.team.scm">
<parentLoadRule>
<component name="Component-A"/>
<parentFolder repositoryPath="Root-Folder"/>
<include>
<filter pattern="*.c"/>
</include>
<sandboxRelativePath includeRepositoryPath="true"/>
</parentLoadRule>
</scm:sourceControlLoadRule>
=> Status of sandbox after loading using this load rule:
My Sandbox path
|-- Root-Folder
|-- File1.c
=> Now "Root-Folder" gets created in my sandbox and only the File1.c is loaded inside it.
=> Only problem that has to be solved now is to find out how to load recursive