# Transfering uncommitted code between machines¶

## As regular tarball¶

For this make sure that you also take the .git directory otherwise compilation will complain with:

fatal: Not a git repository (or any of the parent directories): .git
CMake Error at cmake/ConfigGitRevision.cmake:9 (string):
string sub-command STRIP requires two arguments.

Also make sure that you get all the external sources. In other words if you manually tar up a fresh DIRAC clone without .git that has never been built, externals will be missing.

## How to compile without Git¶

CMake checks whether file cmake/GIT_HASH exists.

If yes, it assumes that this is exported “user” code and will not require Git to fetch external sources.

If the file is not present it assumes development code and assumes that Git is available.

This means that you can trick DIRAC into behaving like user code by creating cmake/GIT_HASH:

echo "whatever" > cmake/GIT_HASH

## Using “make release” tarball¶

The tarball produced with make release does not require Git.

## Using scp¶

This should work. But even better is git clone over ssh (below).

## Git clone¶

You can git clone from one machine to another. Note that you cannot push to a non-bare repository. In other words if you clone a regular clone, you cannot push to it.