We don't need sc-list.txt anymore. We only use a global to maintain a list of tracked files that are in IRIS and Git.
Package (.pkg) and project (.prj) files will no longer be in source control. Instead, all the individual files in the package will be in source control. This means that the user can easily remove a single file from source control. See Feature 2 for an explanation on how it all works.
When we can't find a match for a file in the configured mappings, we no longer export the file.
Features
Uncommitted check on checkout:
On branch checkout, the WebUI requests information about uncommitted changes from api/uncommitted and confirms that the user knows another user has uncommitted changes and that they will carry them over on checkout.
This applies to checking out existing local and remote branches and creating new local branches.
Single file delete: If a package was in source control, then it was not possible to remove a single file or group of files from source control.
For packages, both options — Add and Remove are displayed. We are no longer concerned with figuring out whether a package should be in source control - it never is!
No packages or sub-packages should be added to source control. When the user adds a package to source control, all its files not already in source control get added.
When the user removes a package from source control, all its files in source control will get removed.
We don't have to worry about any weird edge cases this way and behavior is more consistent overall.
Navigation between Settings page and WebUI:
There are buttons added to both pages to enable easy navigation.
Enhancements
Configurability for how the "%" symbol is changed on export of % classes.
Removed sc-list.txt from the project.
New files diff in Workspace: A diff for new files is now displayed in the WebUI Workspace.
NoFolders mappings:
Added granularity: The NoFolders setting can now be applied to specific packages (instead of covering all files of a type).
The user can now add paths to NoFolders mappings. This way, all files that match the mapping will be stored with no further sub-folder creation at the specific path root.
Bug Fixes
Changed the name of the % class replace field to be correct.
Added newlines to outputs wherever necessary for better formatting.
NameToInternalName() tries to get internal names for all file types that have mappings.
NameToInternalName() no longer returns an empty string for a % class.
Name() now matches mappings correctly.
No more Bifrost: Got rid of the many lines that were created after the first commit because of a bug in the way we were getting substrings.
Commit graph does not flash and fill up the whole Commit History pane anymore.
Stash drop now properly drops the stash entry.
Fixed an issue where the NoFolders toggle on a new mapping triggered the toggle on the first mapping instead of the clicked toggle.
Centered the Settings page and added input validation to the form fields.
Removed entries from ^SYS("SourceControl","Git","items") in ImportRoutines() if we find that the file has been deleted.
RefreshUncommitted() now uses git status to prune out files that were committed through means other than the Commit changes option is the Server Source Control menu. It also adds records to track uncommitted files, if applicable. This should help with ensuring that multiple users never edit the same file at the same time because of a missing record of change. It will also help with cases where a user might be blocked from editing a file because of a stale record in the uncommitted queue.
We don't try to source control ZPM documents.
Documentation
Updated the Help modal on the WebUI to include up-to-date screenshots and documentation for all new features.