Jump to content

Recommended Posts


I'm looking for some advice from anyone who has been using mercurial with LabVIEW.

Firstly I have just been trying some branching and merging. After a merge, having been configured for merge using https://bitbucket.or...iew-integration I see some .orig files getting left in the repository. Is this a failing on LabVIEWmerge.exe to clean it up or is it the way mercurial works?

I am interested in the DVCS camps because of merging. I currently use SVN, primarily as a lone developer. I like not having to maintain a separate central repo and the improved merging, primarily from the point of having sandbox branches. I like that in Git, if I have an experimental branch that doesn't work out I can delete it. Is there a similar workflow with bookmarks that can be achieved or am I going to end up with a load of bookmarks littered around the place?

I liked that Mercurial integrates better with Windows and is a simpler way to learn DVCS than Git, but I do also like the look of branching in Git and think the extra flexibility may be a killer feature. That said my general opinion when you get these 'holy wars' is that there is probably no real difference between them, else people wouldn't be arguing so much over minor details!



Link to post
Share on other sites

Ah probably should have started there. I realised what the files were but wondered who was to blame for them being left there. I would expect a system to clean this for me rather than me having to manually remove them.

It appears the purge extension may do this for you so I will investigate that further.



Link to post
Share on other sites
  • 4 months later...

Hi James,


I have been experimenting with mercurial. I have been using SVN for many years and have never been able to really do successful branching. It always involved lots of confusion and uncertaingy. That said, it still beats out any other tool I had used prior, such as PVCS and CM Synergy.  Fabiola de la Cueva  recently advised I try mercurial and so our team has been experimenting. Having used SVN for so long I must say that the distributed system model takes some getting used to, but I like the benefit of having lots of backups and the merging does seem to work better than SVN ( not exactly a high standard).


In my discussions with other LV architects and developers I think that mercurial seems to be the SCC  cream that is rising to the top. I am beginning to migrate some of my legacy code and new projects to mercurial. I have also started using an agile project management system that allows me to link mercurial commits to project tasks. 


I did some experimentation with GIT but I couldn't get the merge to work correctly. I intentionally introduced conflicts in LabVIEW vis . When I merged, GIT did not announce any conflicts when it should have. I didn't do a lot of testing after this and just decided to go with mercurial based on the input from other LV developers.

Link to post
Share on other sites

Hi Erik,Thanks for sharing your experience. It is interesting to hear about Git as I reached a similar conclusion. The windows clients all had some holes in them and I got to the point where without a clear benefit to the technology, mercurial was simply easier to install, configure and use for Windows & LabVIEW.Cheers,James

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By drjdpowell
      Who uses Git Submodules?  I know Greg Payne does and have watched his talk, but does anyone else have experience.   I'm especially interested in experience with projects with multiple developers and multiple products (that might need to use different versions of the subprojects).  
    • By Francois Normandin
      As I've reported in the UI Tools support page, I've started migrating the open source code I still have on bitbucket (Mercurial-based repos) to Github.
      I didn't think that it might be worth a specific topic until @LogMAN mentioned it. Personally, I'm moving my code to Github in the process. I know there are some reports of Hg-to-Git transitions not going so well when using sub-repositories, so please share your migration experience if you've had to jump into some hoops to get it done!
      For all of you who still use Mercurial and host your open source and/or enterprise repos on Bitbucket, this blog post is worth reading:
    • By odoylerules
      Recently I moved from SVN to GIT as my source control and revision manager.  I'm still getting used to everything so i don't consider myself an expert yet, but i really missed the Project Provider options that I used for SVN source control within the project window.  
      I'm releasing an open source beta project provider for TortoiseGit Integration.  This addon is very similar to the current SVN options but was developed entirely from scratch.  Currently this provider requires TortoiseGit to perform most of the Source Control Actions.  I know a lot of you on here have recently switched to sourcetree, however, unlike TortoiseGit they do not currently offer a command line interface yet for windows that i could find.  I've tried to make this project flexibile and if they offer a command line for windows eventually it should be fairly quick to re-factor for that.  
      The project can be found here: https://bitbucket.org/jed_d/lv_tortoisegit
      Addon Features
      Tortoise Git Icon Overlays within Labview IDE Tortoise Git Commands from within Labview IDE Ability to directly reload a project from within the Project Window, as well as prompts to reload the project when performing actions that require a reload. Open Git Bash from project window

      I'm hoping some of you will have a chance to try this out and let me know of any issues.  I would like to track issues on bitbucket if possible so that they are all in one place, but i will also be checking these post for issues as well.  
      Feel free to fork the project and hack on it yourself.  If you come up with something decent and don't mind sharing, send a pull request.  
      One initial issues i'm hoping the community can help with is building the package for older versions of LV.  Currently i only have access to 2013 so i am only able to build the package for this version.  If anyone has a change to pull down the repo and build it for older versions please do.
      Another question i have for the community is the license i currently have on the project.  This is my first open source project of any kind so i wasn't sure what license to put on it.  I did not want to be too restrictive so i went with a BSD license.  If any of you see an issue with this please let me know as I'm open to suggestions.
    • By PaulL
      Here is the set-up:
      I have a component project library (StepperMotor.lvlib) that I have moved to the userlib in order to facilitate reuse over multiple projects.  Within the library I have
      1) a strict typedef (StepperMotor.ctl) cluster that contains a numeric control for expressing the maximum output step rate.
      2) the StepperMotor.lvclass, an abstract class that contains effectively virtual methods (they do nothing but wire inputs to outputs) and LabVIEW-generated accessor methods for the two items in the class private data.
      This is LabVIEW 2013 SP1 on Windows 8.1.
      OK, so I start with everything clean (git status reports clean, LabVIEW opens and closes the library without prompting for changes).
      1) Then I open the StepperMotor.ctl directly from Windows Explorer (hence not opening the library), change the range of the numeric from 2 kHz to 4 kHz, and save it.
      2) Then I open the library, make no further changes, and attempt to close the library.  LabVIEW correctly prompts me to save changes.  I opt to close the project without saving changes, however.
      3) Next I discard the change to StepperMotor.ctl using git.  (I have been using Discard in SourceTree, or a git reset --hard command.)  Then git status returns a clean status.
      4) I open the project and attempt to close it.  Since I have reverted all changes, LabVIEW does not prompt to save changes.
      So far, so good.  This is expected behavior.
      Now, I repeat the steps, except that in step
      1) I open the library first, open the typedef control from the project, make the same change, save the control (without applying the changes), and close the project (without saving).
      2) is the same as above (OK).
      3) is the same as above.  Again, git status shows me everything is clean.
      4) I perform the same action as above, but this time LabVIEW prompts me to save all the accessor methods on the class, citing a changed typedef (even though if I open the typedef the range is indeed back to its original value).  This is unexpected behavior.
      Worse yet, even if I perform a git reset --hard and verify with a git status that everything is clean, if I open and immediately attempt to close the project, LabVIEW still prompts to save, citing "Type Definition modified".  This is indeed problematic.
      (Further note: If I let LabVIEW save the changes, git status still shows clean, and LabVIEW opens and closes the project without prompts.)

    • By PaulL
      Has anyone actually configured Git to work with LVCompare or LVMerge?  (I've seen some threads on various boards saying it "should be something like" <x>, but it isn't quite <x> and I haven't found anywhere that someone has actually described it successfully.)
      I know how to configure TortoiseSVN to work with LVCompare and LVMerge.  My new employer is moving to Git (some good, some bad in that, in my opinion, but that is another topic).
      I have been using Git for a few months now with reasonable success and decided I should try to set up graphical differencing.  [OK, in practice I've rarely used graphical differencing for any practical purpose, and graphical merging probably never for any actual code.]  Anyway, I think I've learned some things trying to figure out how to get this to work--but I don't have it working yet.
      I use the Atlassian SourceTree client at present (and sometimes the shell).  For the purposes of this discussion it might be more helpful to share the relevant text in the .gitconfig file (and any associated scripts, if necessary).
      As others have mentioned, Git itself (SourceTree similarly) does not distinguish which diff tool to call according to the file extension.  This seems like it could be a significant drawback.
      What I have tried:
      I added this (and variants of it) to my .gitconfig file:
      [difftool "LVCompare"] path = C:Program Files (x86)National InstrumentsSharedLabVIEW CompareLVCompare.exe keepBackup = false trustExitCode = false[difftool "LVCompare"] cmd = "C:Program Files (x86)National InstrumentsSharedLabVIEW CompareLVCompare.exe" "$LOCAL" "$REMOTE"[diff] tool = LVCompare SourceTree reports errors on start-up, so don't use this!  Lol!
      Maybe I need to add a script, too.  I'm not sure that I'm really all that close, honestly.
      [bigger question: Why is this difficult in the first place?]
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.