cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
obruend
Visitor
Visitor
236 Views
Registered: ‎01-07-2020

How to Version Control Vitis Projects

I am currently trying to check in a Vitis project into Version Control and I run into quite severe issues.

Basically all software development tools in the world allow checking in a hand full of project files and the source files (being reference from the project files as relative paths). Having checked vitis project files, I find absolute paths all around and it is also fully unclear to me which files must be versioned and which ones are created by the tools (and hence do not have to be checked into the version control system).

Okay, as I couldn't figure out myself easily, I checked the forums. There is plenty of posts suggesting that I shall start writing a TCL script to re-build my project although many comments suggest that this is first not straigtforward  and second still has a bunch of problems like files being copied instead of using the originals. Basically, yes, I could start writing TCL scripts  to generate my project. I could ...

... but ... why should I want to manage my project from a TCL script? Didn't we invent software IDEs some decades a go to exactly get rid of having to do verything from scripts? As Xilinx is pushing pretty hard to advertise that with Vitis and HLS even software developers could use FPGAs, would they really want to put off these software developers with having to manage their projects in TCL before to even get to the point of the real FPGA problems?

Bottomline: I am looking for a way to check in a Vitis project into version control without stepping back to the 80's and manage my project in scripts. Are there any suggestions into this direction?

 

0 Kudos
6 Replies
longley
Xilinx Employee
Xilinx Employee
161 Views
Registered: ‎04-15-2011

Hi @obruend 

You can export the Vitis project as an archived zip file by clicking File -> Export, then selecting the project that you want (keep the "Include build folders" disselect if you don't need the build result).

To check in the archived zip file, you can open a new workspace then clicking File -> Import -> Vitis project exported zip file. 

Does this way meet your version control requirement? 

Thanks,

Longley


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

Don’t forget to reply, kudo, and accept as solution.

If starting with Versal take a look at our Versal Design Process Hub and our
Versal Blogs

------------------------------------------------------------------------------------------------
0 Kudos
obruend
Visitor
Visitor
144 Views
Registered: ‎01-07-2020

Hi @longley,

First of all, thank you for following up.

As I wrote, I would like to avoid time-travel back to the 80's. Storing projects as ZIP files because of the lack of a better solution is exactly 80's style and this problem is solved for a long time now by version control systems.

When writing "version control" I mean "using a version control toolslike GIT or SVN" allowing the following:

  • Checking in individual files so their history can be followed
  • Allowing multiple team members to work on the same project (on different files or even in the same files but on different lines)
  • Proper tracking of the history
  • Branch-based working (development of separate features on separate branches)

This all is not possible with zip files and the zip approach fails as soon as team size grows above exactly one team member.

When looking at Vitis (and also the early days Vivado) it is obvious that version control was not kept in mind while developing these tools. From this I conclude they may not be very well known at Xilinx (which is a bit confusing as they are state-of-the art for years). However, I will leave a few wikipedia links here, so you can investigate what generally is meant when users talk about "version control":
GIT: https://en.wikipedia.org/wiki/Git
SVN: https://en.wikipedia.org/wiki/Apache_Subversion
Version Control in General: https://en.wikipedia.org/wiki/Version_control

Best Regards,

Oliver

 

BTW:
I am now working on XSCT TCL scripts to resolve the problem on my own. But I am having a very hard time because of the following points that I think should be fixed somewhen (at least if Xilinx does not change the idea of users writing their own TCL scripts when using version control):
1. Many options from the GUI are not available from XSCT (e.g. import projects without copying them into workspace, I already reported this over two years ago: https://forums.xilinx.com/t5/Embedded-Development-Tools/XSCT-importprojects-without-quot-Copy-projects-into-workspace/td-p/845838). Another example is "changing the platform for system projects".

2. Most commands return humand readable tables with header and formatting that are not usable from scripts (or they must be parsed spearately). For example if I want to iterate through all domains in my script, I cannot just use the results of "domain list" because this is a table with header and not just a TCL list of the domain-names as one would expect.

0 Kudos
longley
Xilinx Employee
Xilinx Employee
136 Views
Registered: ‎04-15-2011

Hi, @obruend 

Thanks for your feedback.

I understand what you mean right now.

Have you checked below topic in help page? 

https://www.xilinx.com/html_docs/xilinx2020_2/vitis_doc/hxf1604317350180.html?hl=version%2Ccontrol%2Cgit

I just had a short conversation with Vitis Marketings. He said this feature was still being under developed and optimized, e.g. .gitignore file should include more folders, but you could still have a try. 

Thanks,

Longley


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

Don’t forget to reply, kudo, and accept as solution.

If starting with Versal take a look at our Versal Design Process Hub and our
Versal Blogs

------------------------------------------------------------------------------------------------
0 Kudos
obruend
Visitor
Visitor
124 Views
Registered: ‎01-07-2020

HI @longley,

Yes, I tried this GIT Plugin. However, it seems to do nothing else than just copying all files into a GIT repository. My issue is not that I cannot copy the files from the workspace into a GIT repository but that the project files are completely version-control unfriendly and there are way too many files and it is unclear which ones are required. Also are there absolute paths in the project files everywhere, so they do not work if a different team member checks-out the files on his PC. The GIT plugin does not resolve these questions. And actually, these questions cannot be resolved by a tool or by a feature but only by a clean concept.

Being at the point of a "clean concept", the saying that "version control friendlyness is a feature being under development" kind of worries me. This is not something that can be "added" later on like support for a new device or better syntax completion but something that must be thought about when defining the concept of how projects look. So if this is regarded as a "feature under development" this can have two meanings:
a) Version control friendlyness was not considered when doing the concept for the project files structure and developers are now urged to add this "as a feature" without changing the concept - This certainly will not end up well (as we learned from Vivado)
b) The concept will be changed to be version control friendly somewhen in future - This would mean a major interruption and be unnice (but preferable over option a) in my opinion)
Do you know which way the development will go? In case of b), is there a rough timeline? If this happens soon, it does not make much sense if I spend time on creating TCL files that allow using Vitis with Version control and in 2021.2 or so everything looks different and the scripts are rendered useless.

Could you also check with the Vitis team whether there are any plans for making the XSCT more usable (see my comments 1. and 2. of the last post)? Especially the point with the missing "import without copy" functionality still is a major roadblock.

Best Regards,

Oliver

0 Kudos
longley
Xilinx Employee
Xilinx Employee
79 Views
Registered: ‎04-15-2011

Hi, @obruend 

I have shared your post about version control and XSCT to Vitis team. But I can't guarantee the timeline as these are enhancement features. 

Talk to your local FAE if you need these features in urgent. 

Thanks,

Longley


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

Don’t forget to reply, kudo, and accept as solution.

If starting with Versal take a look at our Versal Design Process Hub and our
Versal Blogs

------------------------------------------------------------------------------------------------
0 Kudos
obruend
Visitor
Visitor
73 Views
Registered: ‎01-07-2020

Hi @longley,

I guess after having shared the post with the Vitis team I can expect some reply comments fropm them or from you being posted here within the next days (also regarding into which direction it will go etc.). Correct?

Well, I guess Xilinx needs this changes as urgently as we do if the onboarding of more purse SW developers is the goal of the whole company and not only of the marketing team... Just having said it: You or the Vitis team can always contact us if you really want to get detailed feedback about what issues we found. There is quite a long list of them and I would expect most of them to be easy to fix. We are very willing to help improving the quality of the tool.

Best Regards,

Oliver

 

 

0 Kudos