public static File findRepoRoot(File f) {
		if (f == null) {
			return null;
		}

		File repoDir = findRepo(f);
		if (repoDir != null) {
			return repoDir.getParentFile();
		}

		// one last check to see if the given file is actually itself a repo root
		File[] children = f.listFiles(file -> file.isDirectory());
		if (children != null) {
			for (File child : children) {
				File childRepo = findRepo(child);
				if (childRepo != null) {
					return childRepo.getParentFile();
				}
			}
		}
		return null;
	}
Returns a file that is the root folder of the repository containing the given file.  'Root'
here means a folder that contains a repository folder.  As an example, given a repo
structure of:

<p><code>/userdir/repoRoot/repoDir/.git</code><br>

<p>then this method, given will produce the following results (input -&gt; output):<br>

<p><code>/userdir/repoRoot/repoDir/.git -&gt; /userdir/repoRoot</code>
<br><code>/userdir/repoRoot/repoDir -&gt; /userdir/repoRoot</code>
<br><code>/userdir/repoRoot -&gt; /userdir/repoRoot</code>


@param f the child file of the desired repo
@return a file that is the root folder of the repository containing the given file; null
        if the given file is not under a repo directory or itself a repo root
Ghidra/Framework/Utility/src/main/java/utility/module/ModuleUtilities.java