Florian Koeberle <florianskarten@web.de> wrote:Isn't `final File workingDirectoryFile = new File(".")` easier to write? And if we are going to throw a checked exception because we cannot find a repository in ".", maybe that should be a new checked exception, like NoGitRepositoryFoundException? References to C Git aren't common in jgit source code. We aren't a reference implementation, but that hasn't stopped people from finding out code a sane description of "how things work". I'd rather not describe our code in terms of C Git's code; especially what happens if C Git refactors one day, this reference might no longer make sense. Anyone coming back here to improve jgit or use this method will be confused about what we are doing. We usually omit { and } on simple conditions like this. Its a coding pattern we stole from C Git, which stole it from the Linux kernel. Would this perhaps be a shorter, easier to follow variant of the same algorithm? directory = directory.getAbsoluteFile(); File workdir = directory; while (workdir != null) { final File gitdir = new File(workdir, REPOSITORY_DIRECTORY_NAME); if (isRepository(gitdir)) return new WorkTree(workdir, new Repository(gitdir)); if (isRepository(workdir)) return new WorkTree(null, new Repository(workdir)); workdir = workdir.getParentFile(); } throw new NoGitRepositoryFoundException("No repository for " + directory); I often do write infinite loops with "for (;;) {", but usually its because the loop condition is based on an iterator-style method returning null at the end and I want to store the result in a local variable scoped to only the body of the loop: for (;;) { final RevCommit next = walk.next(); if (next == null) break; // use next somehow } Otherwise I try to avoid infinite loops in my final version of something. Though on a recent job interview the interviewer noticed I tend to start writing code with an infinite loop, then go back and correct the loop condition before saying "done". ;-) -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Mike Travis | [RFC 00/15] x86_64: Optimize percpu accesses |
| Nick Piggin | Re: [PATCH 0 of 4] Generic AIO by scheduling stacks |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
git: | |
| Kevin Ballard | Re: git on MacOSX and files with decomposed utf-8 file names |
| Jon Smirl | ! [rejected] master -> master (non-fast forward) |
| Linus Torvalds | Re: kernel.org mirroring (Re: [GIT PULL] MMC update) |
| Nguyen Thai Ngoc Duy | Re: VCS comparison table |
| Leon Dippenaar | New tcp stack attack |
| Richard Stallman | Real men don't attack straw men |
| Kevin Neff | Patching a SSH 'Weakness' |
| Chris | sudo & wheel group |
| David Miller | [GIT]: Networking |
| Wang Chen | [PATCH 2/15] netdevice 82596: Convert directly reference of netdev->priv to net... |
| Valentine Barshak | [PATCH] USB: net: Fix asix read transfer buffer allocations. |
| Natalie Protasevich | [BUG] New Kernel Bugs |
