<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How does QDF work with version control? in Archived Groups</title>
    <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628235#M2017</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We use yet another, slightly differrent approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have a qlikview application which serves as a template for all QVD generators and ETL modules across the project.&lt;/P&gt;&lt;P&gt;Script in that application is identical for all ETL modules: something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13998797673699649" jivemacro_uid="_13998797673699649" modifiedtitle="true"&gt;
&lt;P&gt;let vG.BasePath=;&lt;/P&gt;
&lt;P&gt;// Basic search for 1.Init.qvs&lt;/P&gt;
&lt;P&gt;$(Include=..\..\..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;Exit script when '$(vG.BasePath)'= '';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;$(must_include=$(vG.SubPath)\RunApp.qvs);&lt;/P&gt;
&lt;P&gt;CALL RunApp;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So basically it is QDF bootsrap code following by call of RunApp procedure&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RunApp procedure looks up for script with name corresponding to name of QlikView document in vG.CustomPath directory, and includes that script. RunApp procedure looks something like that: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13998800382743436" jivemacro_uid="_13998800382743436"&gt;
&lt;P&gt;// Include and load QVS script corresponding to QVW file&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;SUB RunApp&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; LET include_file = '$(vG.CustomPath)' &amp;amp; Upper(replace(DocumentName(), '.qvw', '.qvs'));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; $(must_include=$(include_file));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET include_file=;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;END SUB&lt;/SPAN&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;To add new QVD Generator to Transformation container, I copy template application to vG.ApplicationPath of Transformation container with new name (for example InventTable.qvw), then create script InventTable.qvs in vG.CustomPath directory.&lt;/P&gt;&lt;P&gt;From there on all interesting stuff (real scripting) would be done in that script within Sublime Text.&lt;/P&gt;&lt;P&gt;So we have many self-contained, separately developed and tested modules. Binary QlikView part of any module is virtually disposable - we can simply copy over it from template at any time. Their text script parts are under strict control by CVS (we are using Git but I believe that is irrelevant)&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 12 May 2014 07:53:46 GMT</pubDate>
    <dc:creator>vadimtsushko</dc:creator>
    <dc:date>2014-05-12T07:53:46Z</dc:date>
    <item>
      <title>How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628233#M2015</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is another discussion on this but it didn't answer my question. I'd like to know how to work QDF while needing to use Team Foundation Server?&amp;nbsp; Do you check in/out from within QV Local Client but then checkin the framework folders separately?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 22 Jul 2025 17:59:49 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628233#M2015</guid>
      <dc:creator>mr_barriesmith</dc:creator>
      <dc:date>2025-07-22T17:59:49Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628234#M2016</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Adam, you are perfectly right. Development done inside the application is version handled the built in way, read &lt;A href="https://community.qlik.com/docs/DOC-5460"&gt;Version and Source Control Managment with QlikView&lt;/A&gt; for more info. Scriptlets created using the framework structure (vG.SubPath, vG.CustomPath) could be version handled using the external editor, for example Notepad++ and Sublime have TFS plugins. &lt;A _jive_internal="true" data-avatarid="7307" data-externalid="" data-online="false" data-presence="null" data-userid="60671" data-username="vadimtsushko" href="https://community.qlik.com/people/vadimtsushko" style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #3778c7; text-decoration: underline;"&gt;Vadim Tsushko&lt;/A&gt; have also created a QlikView language Plugin for Sublime &lt;A href="https://community.qlik.com/thread/79626"&gt;QlikView language plugin for Sublime Text 2 Editor&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;Hope that this helps&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Magnus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 11 May 2014 13:18:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628234#M2016</guid>
      <dc:creator>Magnus_Berg</dc:creator>
      <dc:date>2014-05-11T13:18:54Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628235#M2017</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We use yet another, slightly differrent approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have a qlikview application which serves as a template for all QVD generators and ETL modules across the project.&lt;/P&gt;&lt;P&gt;Script in that application is identical for all ETL modules: something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13998797673699649" jivemacro_uid="_13998797673699649" modifiedtitle="true"&gt;
&lt;P&gt;let vG.BasePath=;&lt;/P&gt;
&lt;P&gt;// Basic search for 1.Init.qvs&lt;/P&gt;
&lt;P&gt;$(Include=..\..\..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;$(Include=..\3.include\1.basevariable\1.init.qvs);&lt;/P&gt;
&lt;P&gt;Exit script when '$(vG.BasePath)'= '';&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;$(must_include=$(vG.SubPath)\RunApp.qvs);&lt;/P&gt;
&lt;P&gt;CALL RunApp;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So basically it is QDF bootsrap code following by call of RunApp procedure&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;RunApp procedure looks up for script with name corresponding to name of QlikView document in vG.CustomPath directory, and includes that script. RunApp procedure looks something like that: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_13998800382743436" jivemacro_uid="_13998800382743436"&gt;
&lt;P&gt;// Include and load QVS script corresponding to QVW file&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;SUB RunApp&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; LET include_file = '$(vG.CustomPath)' &amp;amp; Upper(replace(DocumentName(), '.qvw', '.qvs'));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; $(must_include=$(include_file));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LET include_file=;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;END SUB&lt;/SPAN&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;To add new QVD Generator to Transformation container, I copy template application to vG.ApplicationPath of Transformation container with new name (for example InventTable.qvw), then create script InventTable.qvs in vG.CustomPath directory.&lt;/P&gt;&lt;P&gt;From there on all interesting stuff (real scripting) would be done in that script within Sublime Text.&lt;/P&gt;&lt;P&gt;So we have many self-contained, separately developed and tested modules. Binary QlikView part of any module is virtually disposable - we can simply copy over it from template at any time. Their text script parts are under strict control by CVS (we are using Git but I believe that is irrelevant)&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 07:53:46 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628235#M2017</guid>
      <dc:creator>vadimtsushko</dc:creator>
      <dc:date>2014-05-12T07:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628236#M2018</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Great solution Vadim, this is what the framework is all about &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/happy.png" /&gt;&lt;/P&gt;&lt;P&gt;I have installed Sublime 3 + InQlik-Tools and it works perfectly, recommend using it!&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;Magnus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 08:44:29 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628236#M2018</guid>
      <dc:creator>Magnus_Berg</dc:creator>
      <dc:date>2014-05-12T08:44:29Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628237#M2019</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;I think I'll write another post - about our approaches to develeping in QDF environment -&amp;nbsp; with sample QDF project. &lt;/P&gt;&lt;P&gt;I believe it's not only InQlik-Tools, but other helpfull Sublime Text packages, CVS and so on.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 May 2014 10:29:18 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628237#M2019</guid>
      <dc:creator>vadimtsushko</dc:creator>
      <dc:date>2014-05-12T10:29:18Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628238#M2020</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vadim,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It would be great if you could share the link of the approaches you mentioned for our reference.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Aug 2016 17:57:18 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628238#M2020</guid>
      <dc:creator />
      <dc:date>2016-08-17T17:57:18Z</dc:date>
    </item>
    <item>
      <title>Re: How does QDF work with version control?</title>
      <link>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628239#M2021</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Zhen, there is already a document regarding QDF development using IDE and version control (as these goes hand in hand).&lt;A href="https://community.qlik.com/docs/DOC-8157"&gt;Qlik IDE Development environment.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Magnus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Aug 2016 18:14:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Archived-Groups/How-does-QDF-work-with-version-control/m-p/628239#M2021</guid>
      <dc:creator>Magnus_Berg</dc:creator>
      <dc:date>2016-08-17T18:14:40Z</dc:date>
    </item>
  </channel>
</rss>

