Show 65 quoted lines
>
> Signed-off-by: Pete Wyckoff<pw@padd.com>
> ---
> contrib/fast-import/git-p4 | 15 ++++++++++++++-
> t/t9800-git-p4.sh | 14 ++++++++++++++
> 2 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> index 98d2aee..6b9de9e 100755
> --- a/contrib/fast-import/git-p4
> +++ b/contrib/fast-import/git-p4
> @@ -1649,7 +1649,8 @@ class P4Sync(Command, P4UserMap):
> def importHeadRevision(self, revision):
> print "Doing initial import of %s from revision %s into %s" % (' '.join(self.depotPaths), revision, self.branch)
>
> - details = { "user" : "git perforce import user", "time" : int(time.time()) }
> + details = {}
> + details["user"] = "git perforce import user"
> details["desc"] = ("Initial import of %s from the state at revision %s\n"
> % (' '.join(self.depotPaths), revision))
> details["change"] = revision
> @@ -1689,6 +1690,18 @@ class P4Sync(Command, P4UserMap):
> fileCnt = fileCnt + 1
>
> details["change"] = newestRevision
> +
> + # Use time from top-most change so that all git-p4 clones of
> + # the same p4 repo have the same commit SHA1s.
> + res = p4CmdList("describe -s %d" % newestRevision)
> + newestTime = None
> + for r in res:
> + if r.has_key('time'):
> + newestTime = int(r['time'])
> + if newestTime is None:
> + die("\"describe -s\" on newest change %d did not give a time")
> + details["time"] = newestTime
> +
> self.updateOptionDict(details)
> try:
> self.commit(details, self.extractFilesFromCommit(details), self.branch, self.depotPaths)
> diff --git a/t/t9800-git-p4.sh b/t/t9800-git-p4.sh
> index 24a8b79..1b5f4b2 100755
> --- a/t/t9800-git-p4.sh
> +++ b/t/t9800-git-p4.sh
> @@ -265,6 +265,20 @@ test_expect_success 'not preserving user with mixed authorship' '
> p4_check_commit_author usernamefile3 alice
> '
>
> +# Sleep a bit so that the top-most p4 change did not happen "now". Then
> +# import the repo and make sure that the initial import has the same time
> +# as the top-most change.
> +test_expect_success 'initial import time from top change time' '
> + p4change=$(p4 -G changes -m 1 //depot/... | marshal_dump change)&&
> + p4time=$(p4 -G changes -m 1 //depot/... | marshal_dump time)&&
> + sleep 3&&
> + "$GITP4" clone --dest="$git" //depot&&
> + test_when_finished cleanup_git&&
> + cd "$git"&&
> + gittime=$(git show -s --raw --pretty=format:%at HEAD)&&
> + echo $p4time $gittime&&
> + test $p4time = $gittime
> +'
>
> test_expect_success 'shutdown' '
> pid=`pgrep -f p4d`&&