Abstract:
A system and method for conflict-free two-way synchronization between a primary repository and a secondary repository, which may be a mirror of the primary repository, are disclosed. An example method includes receiving a child revision associated with a parent revision in a secondary repository. The parent revision may be pointed to by a second user-visible reference in the secondary repository. The hidden reference to the child revision may be stored in a temporary storage area in the secondary repository that is hidden from view of user operations. A first user-visible reference in the primary repository that corresponds to the second user-visible reference in the secondary repository may be identified. This first-user-visible reference may point to a revision in the primary repository. Then, the revision to which the first user-visible reference in the primary repository points may be compared with the revision to which the second user-visible reference in the secondary repository points. If the revision to which the second user-visible reference points in the secondary repository is a copy of the revision to which the first user-visible reference points in the primary repository, the child revision may be pushed from the secondary repository to the primary repository so that the primary repository includes a copy of the child revision from the secondary repository. The first user-visible reference in the primary repository may be updated to point to the copy of the child revision in the primary repository.
Abstract:
Techniques and systems for creating a function call graph for a codebase are disclosed. Graph creation includes identifying functions in the codebase by a function signature and representing a function as a first node in the call graph. For that function, identifying call-to functions, call-from functions, and inheritance parents and children, and a base class from the function signature of that function; adding child nodes to the first node based on the identified call-to and call-from functions; for an interface call to a base class method in the function, adding child nodes to the first node based on implementations of an override of the base class method; for an added child node, removing that child node from the first node if a source file that includes an implementation of an override and a source code file that includes the function don't share at least one common binary file.
Abstract:
Techniques and systems for creating a function call graph for a codebase are disclosed. Graph creation includes identifying functions in the codebase by a function signature and representing a function as a first node in the call graph. For that function, identifying call-to functions, call-from functions, and inheritance parents and children, and a base class from the function signature of that function; adding child nodes to the first node based on the identified call-to and call-from functions; for an interface call to a base class method in the function, adding child nodes to the first node based on implementations of an override of the base class method; for an added child node, removing that child node from the first node if a source file that includes an implementation of an override and a source code file that includes the function don't share at least one common binary file.