Patent ID: 8418141

Claim:
A method for bidirectional refactoring-aware synchronization between a first workspace (W 1 ) and a second workspace (W 2 ), said workspaces (W 1 , W 2 ) being connected to a version control system (V), said workspaces (W 1 , W 2 ) contain a project (P 1 ) with a file (F), and said project (P 1 ) is shared between said workspaces (W 1 , W 2 ), the method comprising: a. for a first refactoring operation (ROP 1 ) being performed by a first refactoring engine VCS extension on said first workspace (W 1 ), i. performing a first refactoring step, resulting in a first modification of said file (F) of said project (P 1 ), wherein said file (F) declares a programming language element, said programming language element is a function, a class, or a STRUCT, ii. storing the first modification in a change information (C) for said file (F) of said project (P 1 ), iii. storing, in a change information recording step, said change information (C), iv. storing, in a descriptor recording step, refactoring information for a plurality of refactorings, the refactoring information comprising: the programming language element to be refactored, a time of a refactoring execution, an identifier of a refactoring type, and parameters specific to the refactoring type, said refactoring information enabling execution of a second refactoring operation (ROP 2 ) corresponding to said first refactoring step during an update operation (UOP), b. for a commit operation (COP), i. delivering, in a change information delivery step, said change information (C) to said version control system (V), ii. delivering, in a descriptor commit step, said refactoring information to said version control system (V), c. for said update operation (UOP) being performed by a second refactoring engine VCS extension on said second workspace (W 2 ), i. retrieving, into said second workspace (W 2 ) in a load step from said version control system (V), said change information (C) and said refactoring information, ii. selecting an order of refactorings to be performed, from said plurality of refactorings to be performed, iii. performing said second refactoring operation (ROP 2 ) using said refactoring information, resulting in a second modification of the file (F) of said project (P 1 ), iv. performing, in an execution step, an update of the file (F) of said project (P 1 ) in said second workspace (W 2 ) using said change information (C), wherein said execution step operates to automatically resolve conflicts between modifications of said file (F) of said project (P 1 ), d. for said bidirectional refactoring-aware synchronization, reversing a direction of the refactoring operations (ROP 1 , ROP 2 ), the commit operation and the update operation wherein the second refactoring VCS extension may operates to update the first refactoring engine VCS extension.