@Override
		public void run(TaskMonitor monitor) throws CancelledException {

			if (localVersion == serverVersion) {
				return; // skip update if versions now match
			}

			monitor.checkCancelled(); // plugin was shut down while we were scheduled

			ProgramChangeSet changes = null;
			try {
				changes = (ProgramChangeSet) domainFile.getChangesByOthersSinceCheckout();
			}
			catch (IOException e) {
				Msg.warn(this, "Unable to determine program change set: " + e.getMessage());
				return;
			}
			catch (Exception e) {
				ClientUtil.handleException(tool.getProject().getRepository(), e, "Get Change Set",
					false, tool.getToolFrame());
				return;
			}

			AddressSetView remoteChanges =
				changes != null ? changes.getAddressSet() : new AddressSet();
			Swing.runNow(() -> applyChanges(remoteChanges));
		}
A job to grab program changes from the server
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/misc/MyProgramChangesDisplayPlugin.java