3 # git-p4.py -- A tool for bidirectional operation between a Perforce depot and git.
5 # Author: Simon Hausmann <hausmann@kde.org>
6 # License: MIT <http://www.opensource.org/licenses/mit-license.php>
9 import optparse
, sys
, os
, marshal
, popen2
12 cmd
= "p4 -G %s" % cmd
13 pipe
= os
.popen(cmd
, "rb")
18 entry
= marshal
.load(pipe
)
34 sys
.stderr
.write(msg
+ "\n")
37 def currentGitBranch():
38 return os
.popen("git-name-rev HEAD").read().split(" ")[1][:-1]
46 for output
in p4CmdList(" ".join(args
)):
52 # optparse.make_option("--branch", dest="branch", default="refs/heads/master")
55 branch
= currentGitBranch()
56 print "Cleaning out stale p4 import tags..."
57 sout
, sin
, serr
= popen2
.popen3("git-name-rev --tags `git-rev-parse %s`" % branch
)
60 tagIdx
= output
.index(" tags/p4/")
62 print "Cannot find any p4/* tag. Nothing to do."
66 caretIdx
= output
.index("^")
68 caretIdx
= len(output
) - 1
69 rev
= int(output
[tagIdx
+ 9 : caretIdx
])
71 allTags
= os
.popen("git tag -l p4/").readlines()
72 for i
in range(len(allTags
)):
73 allTags
[i
] = int(allTags
[i
][3:-1])
80 print os
.popen("git tag -d p4/%s" % rev
).read()
82 print "%s tags removed." % len(allTags
)
84 def printUsage(commands
):
85 print "usage: %s <command> [options]" % sys
.argv
[0]
87 print "valid commands: %s" % ", ".join(commands
)
89 print "Try %s <command> --help for command specific help." % sys
.argv
[0]
94 "clean-tags" : P4CleanTags()
97 if len(sys
.argv
[1:]) == 0:
98 printUsage(commands
.keys())
102 cmdName
= sys
.argv
[1]
104 cmd
= commands
[cmdName
]
106 print "unknown command %s" % cmdName
108 printUsage(commands
.keys())
111 parser
= optparse
.OptionParser("usage: %prog " + cmdName
+ " [options]", cmd
.options
)
113 (cmd
, args
) = parser
.parse_args(sys
.argv
[2:], cmd
);