1. A method for namespace versioning, comprising: receiving a change in a name or a namespace of a digital asset in an existing namespace version, wherein the existing namespace version includes an existing set of identifiers corresponding to the digital asset, wherein the existing set of identifiers includes a first identifier whose value uniquely identifies the digital asset, a second identifier whose value specifies a name of the digital asset, a third identifier whose value identifies a branch, and a fourth identifier whose value identifies a parent; creating, by a computer, a new namespace version that includes a new set of identifiers corresponding to the digital asset, wherein at least one identifier in the new set of identifiers has a different value than a corresponding identifier in the existing set of identifiers, and wherein the new set of identifiers is associated with a path status variable that indicates a type of the change in the name or the namespace that was made to the digital asset; detecting that a merge is being performed between two or more namespaces; generating a dependency graph based on the two or more namespaces; breaking a cycle in the dependency graph by creating a temporary change state for a node in the cycle; identifying disjoint connected components in the dependency graph; concurrently merging the namespace portions associated with each disjoint connected component by processing nodes in dependency chains in the dependency graph in reverse order; and restoring the temporary state of the node to a target state.