HowTo: Set up a github repository for your VCV patches

@zero, you can branch as much as you like. There is no negative effect :slightly_smiling_face:

Branching in git can be a complex subject, even among software professionals. It doesn’t have to complicated at all for this application.

If you like having a “one branch per patch” workflow, go for it! You’ll have good isolation between projects. If you decide to bring those branches into master at any point your options are open.

If you like the idea of keeping it very simple and only using the master branch, great! Your patches will be well looked after, and you have the option to branch at will.

1 Like

Thanks. I’m still learning git basics, and wanted to be sure I wasn’t transgressing on ‘good practice’!

It might be code, but we ain’t writing code. You might as well call an MS Word .doc file a ‘code’ project…

So sorry to have tried to clarify what kind of files are we dealing with, and why they are able to be used with Git … So sorry to have thought that you would be interested in it … But don’t worry it will not happen again.

Thanks anyway for the comment! … Good luck in automating the process :pensive::man_facepalming:

I was extremely interested in the rest of your comment…
Linus wrote git as ‘a content management and tracking system’ - it is specifically NOT only for code.
Certain parts of it are certainly geared towards code development, but it suits our purposes just fine. I am unlikely to want to merge or rebase a patch - I’m not certain that a vcv patch would necessarily survive such an operation in the state required - but a trail of commits and the ability to branch is invaluable.
My apologies if you misread my tone.

Thanks A LOT for the info @dirkleas! … Currently learning Go thanks to your suggestion about golang + fsnotify + os.exec.

I like Go A LOT (concurrency, simplicity, etc) … It gets me to the past where programming and hacking code to learn from others was a real delight…until i had to use it to earn some money :sleepy: … Anyway a beautiful language to get back to programing after many years, so thanks again.

So time to share my little spare time between VCV Rack and Go (+ Git inbetween the two), and enjoy both, as both are my total joy right now :hugs:


Just two quotes from and

Does git handle binary files?

Keep in mind that a binary blob is different from a large text file ; you can use Git on large text files without a problem, but Git can’t do much with an impervious binary file except treat it as one big solid black box and commit it as-is. … You git commit it once, adding a gigabyte to your repository’s history.

Can we store binary files in git?

Git can store binary files , but you lose a lot of the functionality when you do so. As an example, if you store an .xlsx file in git , it won’t be able to do any intelligent merging of changes to the file , which may undermine the usefulness of storing the file in git.

So we’ll never be grateful enough to @Vortico (aka Andrew Belt) that he decided to use text code files to save our patches and not binaries, so now we can use Git to manage our versions/experiments in a clear/friendly environtment as Git is!

And who knows if in the future, and thanks to @dirkleas introducing Git here as a version control system for our patches, there not will be a VCV Rack integration with Git (which would be a really wonderful feature for VCV Rack!)

Have you tried my short tutorial above to be certain that “a vcv patch would survive or not to such an operation in the state required”? … Or you’re only guessing?

Don’t worry about, life is as it is! :wink:

1 Like

‘I’m not certain’ means I’m guessing - and my guess is that some would survive but that some would not: there is likely to be conflict I feel. No, I’ve not tested this - but as my workflow is unlikely to need merging I haven’t dedicated any time to it. I’d certainly be interested if someone were to perform a series of tests though.
The ‘binary blob’ discussion is a bit of a strawman - I’m in total agreement that git works best on files stored in text format. It’s just agnostic as to the type of text file - there’s a charming little git tutorial on YouTube which uses writing a poem as it’s example.

You know, it would be Pretty Nice if there was a way to hide the versioning under the covers, so to speak – so each time you clicked “Save Patch” instead of “Save Patch As…”, you’d get a dialog with a default commit message in place already, which you could of course edit to what you’d prefer. Would have to think about how to handle versioning in the “Open…” dialog, since the versions aren’t actually present in the filesystem. I suppose a secondary “which version” dialog could work.

Not that I am expecting Andrew to do this…!

Hi @joe.mcmahon

  1. If you’re a programmer look at this and this posts from @dirkleas above to get an idea about how this can be made and the tools to use for doing it … Basically it would consist in a file watcher able to trig a command each time a file or directory changes, so that everytime you “Save” or “Save as…” your patch, it triggers a “git add + git commit -m <“useful_msg”>”

NOTE: Right now, i don’t know if a file watcher could trigger an executable, but if it is possible, it could trigger a GUI App for the user to fill the data, create branches, open diferent versions, etc., before triggering the required command.

  1. If you’re not a programmer you will have to wait for someone that can explain clearly how to do it and the exact tools to use in any VCV Rack supported system (personally i have this task in my todo tasks for when i have some time).

if there’s interest I could quickly put together all the pieces so it’s trivial to turn on/off – lemmie know

1 Like

Personally i’am totally interested in seeing how you do it! :upside_down_face: (although I know myself and I know that i’ll try to make my own version later … if you don’t mind, of course! :crazy_face:)

But let’s see what others say about your proposal!

P.S.: BTW, i’ve seen that there are some GUI and CLI toolkits for Golang!

I’ve given up on titles years ago, I always save my projects with date and style, like “20190416rock”. I would never find stuff in the endless pile of crappy working titles. I usually remember roughly when something was made. That’s the same format, no matter what kind of software I use.
Works for me.

Interest here too - been waiting for someone to step up!

I am, and thanks. I’ll look into this. On-disk versioning might help folks a lot. I do have a separate project that has to finish landing (congratulations! you need a whole new microservice if you want to do this!) before I can look at it, so @dirkleas, if you can beat me to it, go for it!

Please excuse my ignorance hear , but I’m on a quest to work out how i save some of the great and also free patches that are in the VCV reference point , of git hub . Is this the answer in programmer lingo ?! . Would very much appreciate a pointer in how this saving of modules from git hub to vcv rack is done . My experience in kernel commands is quite limited but i have and am , quite able to follow instructions for using , just haven’t come across this type of instruction " format " .

Hi @william.green429 and welcome to the forum! These instructions are about saving patches from your computer to Is this what you’re trying to do?

Or -on the contrary- you’re trying to save/download free patches from Github to your computer? If yes, where exactly are these patches you’re talking about? Can you please share one or more links about them?

5 posts were merged into an existing topic: Getting started with VCV Rack

I use the command line for normal stuff, but I really like a GUI for browsing around. I use sourcetree, which is free as in beer but closed source.

I’ve always used GIT for my music – well, ever sense I migrated form subversion, that is! :slight_smile:

The nice thing about git is that it’s a distributed control system, so it doesn’t require a server – you can use something like github if you want, but you don’t need to. Normally I just git init on my local directory and then check it out with a file:// URL (ssh will work too).

Creating a repository is as simple as something like this:

GIT_DIR=repository.git git init
cd respository.git/
git --bare update-server-info
cp hooks/post-update.sample hooks/post-update

That will create a repository called repository. You can then git clone file://path/to/respoistory.git.

Although for the album I’m working on now I escalated the geekiness a notch and threw up a local GitLab server. We use a self-hosted Gitlab server at work, and it’s quite nice, so I decided to give it a try.

It’s a one-liner if you’re comfortable with docker.