private String createVTSessionName(String sourceName, String destinationName) {

		// if together they are within the bounds just return session name with both full names
		if (sourceName.length() + destinationName.length() <= 2 *
			VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH) {
			return "VT_" + sourceName + "_" + destinationName;
		}

		// give destination name all space not used by source name 
		if (sourceName.length() < VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH) {
			int leftover = VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH - sourceName.length();
			destinationName = StringUtilities.trimMiddle(destinationName,
				VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH + leftover);
			return "VT_" + sourceName + "_" + destinationName;
		}

		// give source name all space not used by destination name 
		if (destinationName.length() < VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH) {
			int leftover = VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH - destinationName.length();
			sourceName = StringUtilities.trimMiddle(sourceName,
				VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH + leftover);
			return "VT_" + sourceName + "_" + destinationName;
		}

		// if both too long, shorten both of them
		sourceName = StringUtilities.trimMiddle(sourceName, VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH);
		destinationName =
			StringUtilities.trimMiddle(destinationName, VTSESSION_NAME_PROGRAM_NAME_MAX_LENGTH);

		return "VT_" + sourceName + "_" + destinationName;
	}
Presents the user with a tree of the existing project folders and allows
them to pick one
Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/wizard/session/SessionConfigurationPanel.java