public RemoteRepository lockRepo( Set<String> exclude ) throws InterruptedException {
			Set<RemoteRepository> unexcluded = new HashSet<RemoteRepository>();
			
			for( RemoteRepository repo : repositories ) {
				if( !exclude.contains(repo.url) ) {
					unexcluded.add(repo);
				}
			}
			
			if( unexcluded.size() == 0 ) return null;
			
			synchronized(this) {
				while( true ) {
					for( RemoteRepository repo : unexcluded ) {
						if( !repo.locked ) {
							repo.locked = true;
							return repo;
						}
					}
					this.wait();
				}
			}
		}