Actor Framework Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

Message Maker updates the entire lvlib contents when adding a message VI

Hi, I have been developing an AF-based application using Git/SourceTree Source Control Software. My experience with the software is great but one little thing has been bugging me for a while. When I add a new AF message VI through a message maker, existing VIs/ctrls/lvclass files under the lvlib are all updated even though I did not make any changes to them. As a result, many files would be listed as "Unstaged Files". I usually look through the list for ones that are added and stage them. Also I look for the lvlib which the new message VI belongs to and stage it, then discard all the other changes. This manual process takes a long time and sometimes I forget to stage a couple of files.

This problem has nothing to do with the Git/SourceTree itself.  I also believe there is a good reason for Message Maker to save the entire lvlib contents after adding the message VI to it. But I would like to avoid doing this manual process throughout my development cycle. Does anyone have the same problem? If so is there any good workaround?

Thank you in advance

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 1 of 20
(6,116 Views)

I suspect the Message Maker is just calling save on everything in memory to be safe. Save on an already-saved VI still saves the file new by design -- there are important use cases for this, but it sounds like you're asking that MM be more careful about what it asks to save and only save things that actually have a docmod. Yes?

0 Kudos
Message 2 of 20
(4,465 Views)

PS: "docmod" == "document modification" aka the asterisk in the title of a file that says "this file has unsaved changes".

0 Kudos
Message 3 of 20
(4,465 Views)

I concurr with TailOfGon, it would be nice if we could control what the save all function saves. I use SVN and often deal with the project saving files that have not changed but then show up as SVN modified. Makes working in teams a little tough.

0 Kudos
Message 4 of 20
(4,465 Views)

It doesn't.

This is how I tested everything.

I created a new actor project Created a repo and did an initial commit of all the actor project folder

Went back to project and marked all files to be separates compiled code.

Committed every change to repo (most files changed and needed update)

Created a new task for "Alpha"

Right clicked that task, created a message.

Saved project and closed everything.

Did a commit to see what files were changed.

     Only files changed were Alpha Actor.lvlib, and Alpha.lvclass. Otherwise only the 4 new files were created.

Be sure when you use SVN that you always always have separated compiled code from source for your code. The only exception is files you plan to copy over to a runtime system with your deployment.

Certified-LabVIEW-Architect_rgb.jpgCertified_TestStand_Architect_rgb.jpg


"I won't be wronged. I won't be insulted. I won't be laid a-hand on. I don't do these things to other people, and I require the same from them." John Bernard Books

0 Kudos
Message 5 of 20
(4,465 Views)

bsvare, are you sure you did not see any updates on those files? I doubled checked my 'Separate compiled code from new files' being checked on Option dialog, as well as the lvlib/lvclass properties.

Here are the steps I did:

1. Create a new project

2. Create Actor

3. Create a new method "A"

4. Create a message VI for "A" (note the timestamp of this file from explorer)

5. Create another method "B"

6. Create a message VI for "B", then I see the timestamp of message VIs updated (lvclass, Do, Send A).

I use LabVIEW 2015, and create message VIs from Right-click menu. (so maybe I shouldn't call 'Message Maker')

AristosQueue,

"but it sounds like you're asking that MM be more careful about what it asks to save and only save things that actually have a docmod. Yes?"

YES!

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 6 of 20
(4,465 Views)

So... "Separate compiled code..." which I'll hereafter call Source Only... that option could cause this issue.

When that option is on, caller VIs do not get docmods when dependencies change their interfaces. But the VIs in memory are still different. If the Save function is called on such a VI, it will update on disk to the latest match of the dependency... so if you have a lot of latent changes to dependencies, you might get a lot more files saved. Is that possibly what you're seeing?

0 Kudos
Message 7 of 20
(4,465 Views)

AristosQueue,

No. Dependencies do not have to change to reproduce this issue. Like I described in my previous comment, I only added a method VI to an actor and right-click to create  a message VI. That action itself caused other existing message VIs within the same lvlib to update (thus captured as unstaged files). So dependencies should not be causing this.

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 8 of 20
(4,465 Views)

AristosQueue, were you able to reproduce what I am seeing? I see it 100% of the time. I was surprised bsvare is not seeing it.

Here is the more detail steps to reproduce:

1. Unzip the exp2.zip

2. Open exp2.lvproj

3. Create "Task E.vi" under Actor X.lvclass and save it on the same location as other task VIs.

4. Now open the file explorer to browse exp2\Actor X\Actor X Messages\Task D Msg. Make sure 'Date Modified' is visible to you during the next steps.

5. On the project, right click on the Task E.vi --> Actor Framework --> Create Message

6. The tool will create the message VI for Task E. You should be able to see now that the 'Date Modified' for Do.vi, Send Task D.vi, and Task D Msg.lvclass are updated. In fact, it should be true for all the message VIs for Task A ~ D. (At least in my environment)

7.

TailOfGon
Certified LabVIEW Architect 2013
0 Kudos
Message 9 of 20
(4,465 Views)

I did a full test of everything I can think of relating to this and wrote out all my steps. If you want pictures to prove anything I'm doing, I'll get some for you.

1) Started with fresh install of LabVIEW 2015.

2) Created a new project from Actor Framework templete. Used all default settings.

3) Clicked save all on the project (just in case)

4) When to the location on my hard drive, created a repo at the project folder level.

5) Checked in all 54 files (includes code and documentation)

---------------------------------------------

Separated code version

6)Went to project, and right clicked the project item, selected "Separate compiled code from new project items"

7) Mark Existing Items... and marked all files.

😎 Save All

9) Went to repo and commit all changes.  33 files updated.

10) Went to project, right click Task in Actor Alpha. Clicked Save As

11) Open additional copy, and add copy to Alpha Actor.lvlib:Alpha.lvclass

12) Named it Task 2

13) Close everything but project.

14) Right Clicked Task 2, selected Create Message.

15) Save All

16) Went to Repo and commit all changes. 2 files updated, (Alpha Actor.lvlib, and Alpha.lvclass) and 4 created, (Task 2 Msg/Do, Task 2 Msg Send Task 2, Task 2 Msg/Task 2 Msg.lvclass, Task 2.vi)

---------------------------------------------

Non - separated code version

6) Rechecked out first version of repo

7) Went to project, right click Task in Actor Alpha. Clicked Save As

😎 Open additional copy, and add copy to Alpha Actor.lvlib:Alpha.lvclass

9) Named it Task 2

10) Close everything but project.

11) Right Clicked Task 2, selected Create Message.

12) Save All

13) Went to Report and commit all changes. 11 files updated, and 4 created, (Task 2 Msg/Do, Task 2 Msg Send Task 2, Task 2 Msg/Task 2 Msg.lvclass, Task 2.vi)

---------------------------------------------

separated code version with other files open

17) Checked out latest commit from separeted code version

18) Opened project and opened every VI's Front panel.

19) Went to project, right click Task in Actor Alpha. Clicked Save As

20) Open additional copy, and add copy to Alpha Actor.lvlib:Alpha.lvclass

21) Named it Task 3

22) Right Clicked Task 3, selected Create Message.

23) Save All

24) Went to Repo and commit all changes. 2 files updated, (Alpha Actor.lvlib, and Alpha.lvclass) and 4 created, (Task 3 Msg/Do, Task 3 Msg Send Task 3, Task 3 Msg/Task 3 Msg.lvclass, Task 3.vi)

--

I watched the date modified time stamps of all the files. Nothing changed except the files listed in the commit messages.

Certified-LabVIEW-Architect_rgb.jpgCertified_TestStand_Architect_rgb.jpg


"I won't be wronged. I won't be insulted. I won't be laid a-hand on. I don't do these things to other people, and I require the same from them." John Bernard Books

0 Kudos
Message 10 of 20
(4,465 Views)