1. A computer implemented method for generating a hierarchical edit script, the method comprising: accessing a first hierarchical dataset and a second hierarchical dataset from one or more computer readable storage media; processing, using one or more computer processors, the first hierarchical dataset to generate a first linear sequence, the first linear sequence being a linear sequence of nodes defined in the first hierarchical dataset; processing the second hierarchical dataset to generate a second linear sequence, the second linear sequence being a linear sequence of nodes defined in the second hierarchical dataset; processing the first linear sequence and the second linear sequence using a difference algorithm to generate a linear edit script, the linear edit script defining a linear sequence of operations that can be applied to the first linear sequence to generate the second linear sequence; processing the linear edit script and the first hierarchical dataset to generate a first delta, the first delta having a same hierarchy as the first hierarchical dataset and comprising nodes describing retain operations and delete operations; processing the linear edit script and the second hierarchical dataset to generate a second delta, the second delta having a same hierarchy as the second hierarchical dataset and comprising nodes describing retain operations and insert operations; and processing the first delta and the second delta to generate the hierarchical edit script, the hierarchical edit script describing operations which can be applied to the first hierarchical dataset to generate the second hierarchical dataset, the hierarchical edit script defining at least one move operation, a move operation identifying one or more nodes that have been moved from an original location in the first hierarchical dataset to a new location in the second hierarchical dataset, wherein the hierarchical edit script is different than the linear edit script.