The purpose of the Bring All Changes operation is to apply all the changes of the selected Development Version (previously selected in the Team Development Versions Dialog) to the active version of your local KB. This action automatically merges all the commits done on the selected Development Version with those made in the active version, if any. The merge is made on your local version, a commit with the merged objects then is needed to update the version in the GeneXus Server instance.
When selecting the Bring All Changes option the next dialog will be shown, allowing the user to filter, by date or commit number, which commits will be merged by the operation.
After a filter has been selected a merge dialog, with the last revison, will be shown.
The Revision dialog will display the following information
- Details about the GeneXus Server URL, the Knowledge Base and its current version and the selected Development Version from which changes will be merged.
- Information about the commits included in the Bring All Changes operation such as, the period of dates involved, the number of commits, and its comments.
- A list of the objects involved in the Bring All Changes operation that will be merged locally between the changes made in the GeneXus Server objects and the changes made locally in the version.
- The button to initialize the merge of the selected objects.
In the preview list we can see all afected objects an by right clicking any, a contextual menu will be displayed:
- Open: this action will open and display the object of the revision involved in the Bring Changes Operation.
- Compare with current revision: this action will open the comparer dialog and will compare the local object with the same object of the revision involved in the Bring Changes Operation.
- Revision Changes: this action will display changes between the revision involved in the Bring Changes Operation and the previous state of the object, meaning the object before all involved commits have taken place and the object after all the commits have taken place (comparing only changes that has been committed to the GeneXus Server and not with the local changes).
- Preview Merge: this action will display the local object merged with the revision objects version, but it will not merge the objects (objects will be merged only if button "Merge Selected" is pressed and the object has been selected).
Lets say there is a KB with 3 versions, "KB Trunk", a frozen version "Version 1", and a branch called "Upgrades for Version 1". Both 'KB Trunk' and 'Upgrades for Version 1' are syncronized and have a procedure called 'ProcedureN' that is empty.
Lets also say that User A and User B both work in the 'KB Trunk' version and user C works in the 'Upgrades for Version 1' version. Now both User A and B do the following actions:
Commit # 1: User A commits changes made to procedure 'ProcedureN'.
User B updates the object 'ProcedureN' from the server, in order to get the changes made by User A. After that, User B works on the procedure, adding more code.
Commit # 2: User B commits his own changes made to 'ProcedureN'.
Now, if User C chooses to bring all changes from the second commit (Commit # 2) onwards, it will only bring the changes made by User B, because commit # 1 is older than the selected commit. However, if User C chooses to bring all changes from Commit # 1, or Commit # 0, or from a date before Commit # 1, then the changes made by both User A, and User B will be brought.
The result of bringing all changes from commit # 2 onwards is shown below:
Notice how changes introduced by user A are not present in the procedure.
And the result of bringing all changes from commit # 0 onwards is the following:
Which is exactly the same to the object that User B commited to the server.