JuliaBox v2 Unable to Clone Git Repo

I tried cloning a private Git repo using Juliabox v2 and ended up with the following message

I am still a little disappointed that users are no longer able to use the terminal for Git operations.

There should be a logs directory on your root, which if you navigate into that, it will probably give you some insight into what is wrong. The typical issues are around the git url that you used. If you let us know the email address you used to log in, we can try and see the logs at the backend (use juliabox@juliacomputing.com for private emails).

You can use git operations on the console, even though you cannot use Pkg operations directly. However, to make them persistent requires some tricks. Allow me to explain.

So the basic architecture of Juliabox is that all users get their own isolated container on linux. Obviously, this container is created on demand as users log in. This means that we need a mechanism for persisting user data. For this, on the new Juliabox, we use a network file store, which on Azure is built on top of SMBfs.

So on every Juliabox environment, you have /home/jrun as the linux home directory, which lies on an ephemeral disk. This is backed by a native SSD store, and hence is very fast, but is not persisted. It is recreated from the container image on startup. '/mnt/juliarun/` on the other hand is mounted from a per-user volume on a network drive. This is the root folder you see in your jupyter interface, and is where all your persistent user data should be stored. This includes any user-installed packages, and all your notebook and data files.

Now the network filesystem we use has some limitations. For example, it is much slower than local disk, it does not support hard links, and has a timestamp resolution of 1 second. As a result of some of these limitations, git cannot use that filesystem as a local file store. This is part of the reason why we do not allow direct package operations.

So, to cut a long story short, if you want to do a direct git clone, you can do the following:

cd /home/jrun
git clone git@somehost:user/myrepo myrepo
cp -R myrepo /mnt/juliarun/myrepo

The files in /home/jrun will disappear the next time you log in, but the ones in /mnt/juliabox will be persistent. To push to remote, do the reverse (ie, copy it back).

All of this is way too much trouble for most users, and hence we have the UI. But you can, if you want, do this yourself. Hope that helps.

Regards

Avik

1 Like

I’m reviving an old thread, but do some directory names here need updating? I can’t find juliarun, for example. We are having trouble cloning and trouble installing from registered packages using the interface and the errors seem to be related to chdir /mnt/juliabox/.julia/lib/v0.6: no such file or directory (ENOENT),