We have a lot of refactoring occurring in our project - constantly files are moving from package to package, project to project, as we see fit for organizing the code.
Though this makes for a better-looking codebase, it is a nightmare in Crucible - the files that are moved show as "file outdated" and if the latest changeset is added, it shows the entire file as deleted. This not ideal, because the file is not deleted, it has simply moved. When this happens we must find the new file location and add it to the review; but even then that leaves us with 2 files and a broken "diff" from the original change in the original file location to the last change in the current/new file location.
What I would like to see is for Crucible to do one or both (and let the user choose on a file-by-file or project-by-project basis) of the following:
- Track the move/rename and allow the diff to encompass both the original file location and the new file location.
- I realize that not everyone might want Crucible to work this way (some people might want to see the new location of the file to ensure it is appropriately located) - however this is still a good option for a user to choose from to suit their needs.
- When the user chooses "Add Latest" to the review, and the file has been moved: prompt to add the file at its new location & mark the original as deleted, rather than exclusively updating the original file location to deleted (as it does today).
- This is also a good option - no one wants to just add the deleted file and leave it that way in the review when there has been subsequent changes made to the file after it has been moved.
File Meat.java was moved in Version Control from /src/path1 to /src/path2, and then some subsequent changes were made. In Crucible it shows the file at/src/path1/Meat.java as outdated. If "Update to Latest" were chosen, Meat.java would then be marked as deleted in the review - not ideal as it is not deleted!
On a sidenote regarding this example:
If I go to the /src/path2/Meat.java in Fisheye, I can see all of the history (Good ). This type of a view is really what I want to see in Crucible, as it unites the original file location and the new file location to seamlessly cover the changes to the file in both the original and new location, and permits diffs between the file when it existed in its old location and its new location.
FYI - We are using Subversion, but this improvement should be VC-agnostic: it should work on any version control that tracks file moves.