# Project synchronization

This tool synchronize several images of a project developed in parallel by several users. The synchronization is made by replacing old files by new ones. Note that the files are copied, not merged.

To use Project synchro several conditions must be followed, else the synchronization may broke you projects :

- To detect a file must be replaced by a new one, the tool uses the revision, not the date when the file was saved the last time. Because the revision is used, it is not possible to use the tool to synchronize projects modified by the releases of BOUML strictly less than 2.21 . If you already have several images of a project, you must first resynchronize them by yourself to obtain a unique image.

- Each user has his own copy of the project and works only on this copy. Obviously each user has his own BOUML_ID.

- A given project file must be modified by only one user, for instance thanks to Project Control. This means that when the owner of a file change, you must perform a synchronization before (obviously it is useless to do a synchronization when a file without owner since the last synchronization become owned by someone).

- The synchronization is not possible for an image having a read-only file.

Project Synchro is not a plug-out, it is launch like BOUML or any tool, when you start it the following window appears :

The menu Project is used to load several images of the same project, to synchronize them or a part of them. it is also possible to start the tool given a list of project images in parameter.

To avoid inconsistencies, you can't apply Project Synchro several times on a given project, and you can't use it on a project while it is edited by BOUML or by Project Control, if this is the case a message warns you :

A project directory must also not contain bak files, these temporary files are present when BOUML or File Synchro crash during the modification of the files :

When only one project image is load the aspect is the following :

When you load a second project image, the color of the icons representing each package indicates if this one must be updated or not :

A package is green when it is up to date in all the images. It is orange when it must be updated, this means that an other image has a new version of this package, and this new version is blue. A new package is also in blue. At least a deleted package is gray. In the previous picture package5 is blue because it is new (it doesn't exist in /home/bruno/uml/pr) and package1 is blue on the right because it was modified to add the sub-package package5.

Each time a new image of the project is load, the colors are computed (obviously it is not possible to load several times the same project image) :

As you can see incl is gray indicating it was deleted, and the project itself was modified, at least to remove incl.

On the bottom of each image you have the number packages whose need to be updated or deleted. The indication RO means that at least one file of the project image is read-only, in this case the image can't be synchronized, even if the file correspond to an up to date package.

When enough images was load, you can ask for the synchronization through the menu Project or the shortcut control-S. A dialog appears :

As you can see only two of the three images may be synchronized because of read only files in the second image. However the second image will be used during the synchronization to get the new version of package1 and the new package package5.

After selecting at least one image and hitting on synchronize the synchronization the selected images are updated, then a dialog indicating the end of the synchronization appears :

When you confirm the execution of Project Synchro is done. Supposing the synchronization done for the first and third image, restarting Project Synchro this the same images, one obtains :

Obviously the first and third images have the same aspect and don't contain old packages.

As I said it is possible to start the tool giving the project images in parameter, for instance under Linux :

projectControl ~bruno/uml/pr/pr.prj /tmp/pr/pr.prj ~bruno/pr/pr.prj

Previous : Project control

Next : Multi user considerations