Improve handling of branches

We don't allow nested branches. If we encounter one we simply assume
it's because of a bad branch spec that lists subdirectories
separately. In that case we remove the branch from our list.
Renamed tests
Don't remove Jobs field from p4 submit template.
Merge branch 'master' of git://github.com/ermshiperete/git-p4
Pipe fast-import data directly to git.

This prevents out of memory issues from occurring on large repositories
when we try to buffer all of the dat using cStringIO.  It is also a
little faster because we can run fast-import while waiting for the p4
server.

LargeFileWriter now doesn't store all the data.  The debug data can be
written to any file like object, this is used to implement the debug
data dumping.

Exception handling for fast-import has been moved to enclose all of the
fast-import code and be in one place.  We no longer bother to read
stderr from git and output it on our own stderr, instead we just let git
inherit our stderr.  This ensures all the error output will get printed.

Note: most of this change is indentation changes, you can pass
--ignore-space-change or similar to git diff to see the "real" changes.
Fix bug with filenames containing $ character

Also properly treat filenames with @,#,*,% characters that have
special meaning in p4.
Removed old python 2.5 file

This file is no longer maintained, so we can remove it
just as well.
Fix files with dollar sign on Windows
Fix bug with deleting files with dollar sign on Windows
Fix for loadUserMapFromCache problem

Applied patch from Craig Joly. Thanks!
Add new abort option to submit

When the user doesn't edit the submit template we bring up a question
"Submit anyway". This patch renames the "No" otpion to "Abort" which
doesn't submit the current (and all subsequent) changes, leaving the
repo in the current state.

The "No" option available in older versions seems to be too
dangerous and confusing so it got removed: choosing "No" used to
skip the current patch, but still updated the pointers. This causes
the git and p4 repos to be out of sync, making it very likely that
subsequent commits will fail. If it is necessary to skip a patch
that is in the git repo, this can be achieved by doing "git update-ref
refs/remotes/p4/master <sha1>".

This fixes issue #5
Merge pull request #13 from adoakley/master

- Don't discard Jobs: field from perforce commit template
- Pipe fast-import data directly to git.
git-p4: don't convert utf16 files.

Some repository has some utf16 files git-p4 don't know
how to convert. For those files, git-p4 just write the utf8
files. That is wrong, because git get different file than
perforce does, causing some windows resource file fail
to compile.

Using the "p4 print -o tmpfile depotfile" can avoid this
convertion (and possible failure) all together.

Signed-off-by: Chris Li <git@chrisli.org>
git-p4: support clone --bare

Just like git clone --bare, build a .git directory but no
checked out files.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Acked-By: Tor Arvid Lund <torarvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: Allow filtering Perforce branches by user

All branches in the Perforce server are downloaded to allow branch detection. If
you have a centralized server on a remote location and there is a big number of
branches this operation can take some time.
This patch adds the configuration option git-p4.branchUser to allow filtering
the branch list by user. Although this limits the branch maintenance in Perforce
to be done by a single user, it might be an advantage when the number of
branches being used in a specific depot is very small when compared with the
branches available in the server.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: Allow branch definition with git config

Perforce does not strictly require the usage of branch specifications to create
branches. In these cases the branch detection code of git-p4 will not be able to
import them.
This patch adds support for git-p4.branchList configuration option, allowing
branches to be defined in git config.

Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: accommodate new move/delete type in p4

562d53f (git-p4: Fix sync errors due to new server version, 2010-01-21)
taught git-p4 sync to recognize the new move/delete type, but this type
can also show up in an initial clone and labels output.

Instead of replicating the support in three places, hoist the definition
somewhere global.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Acked-By: Tor Arvid Lund <torarvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: fix key error for p4 problem

Some p4 failures result in an error, but the info['code'] is not
set.  These include a bad p4 executable, or a core dump from p4,
and other odd internal errors where p4 fails to generate proper
marshaled output.

Make sure the info key exists before using it to avoid a python
traceback.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: reinterpret confusing p4 message

Error output will look like this:

glom$ git p4 clone //deopt
Importing from //deopt into .
Reinitialized existing Git repository in /tmp/x/.git/
Doing initial import of //deopt from revision #head into refs/remotes/p4/master
p4 returned an error: //deopt/... - must refer to client glom.

This particular p4 error is misleading.
Perhaps the depot path was misspelled.
Depot path:  //deopt

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4: commit time should be most recent p4 change time

When importing a repo, the time on the initial commit had been
just "now".  But this causes problems when trying to share among
git-p4 repos that were created identically, although at different
times.  Instead, use the time in the top-most p4 change as the
time for the git import commit.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Acked-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>