p4lock.py #1

  • //
  • guest/
  • perforce_software/
  • sdp/
  • main/
  • Maintenance/
  • p4lock.py
  • View
  • Commits
  • Open Download .zip Download (2 KB)
#!/usr/bin/python
# ==============================================================================
# Copyright and license info is available in the LICENSE file included with
# the Server Deployment Package (SDP), and also available online:
# https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE
# ------------------------------------------------------------------------------

"""
This program should lock a perforce label.

The only command line parameter is the label
p4lock.py LABEL
"""

import isitalabel
import os
import re
import sys

def lock (label):
  x = isitalabel.check(label)
  if x == 0:
    print("There is no label %s.") % (label)
    sys.exit(1)
    
  label_pattern = re.compile(r"^Label:\s+.*")
  lock_pattern = re.compile(r"^Options:\s+unlocked")
  
  tempfile = open("temp.txt", "w")
  linelist = []

  # owner.txt is a one line file generated by the p4unlock.py script. It saves
  # the name of the label owner so it can be put back by this script.
  # The owner line is removed by p4unlock.py because Perforce doesn't allow 
  # anyone except the owner of a label to update the label.

  found_owner = True
  if os.path.isfile("owner.txt"):
    ownerfile = open("owner.txt", "r")
    for line in ownerfile.readlines():
      owner = line
    ownerfile.close()
    os.remove("owner.txt")
  else:
    found_owner = False
  
  for line in os.popen("p4 label -o %s" % (label), "r").readlines():
    if found_owner:
      match = label_pattern.match(line)
      if match != None:
        linelist = linelist + ["Owner:\t%s\n" % (owner)]
    line = lock_pattern.sub(r"Options:	locked", line)
    linelist = linelist + [line]

  tempfile.writelines(linelist)
  tempfile.close ()
  os.system("p4 label -i < temp.txt")
  os.remove("temp.txt")

def main():
  if len(sys.argv) < 2:
    print ('Invalid input')
    print ('You must specify a label')
    print ('usage: p4lock.py LABELNAME')
  else:
    label = sys.argv[1]
    lock(label)

###########################################################################
# main
if __name__ == '__main__': 
  main()

# Change User Description Committed
#3 27331 C. Thomas Tyler Released SDP 2020.1.27325 (2021/01/29).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#2 26161 C. Thomas Tyler Released SDP 2019.3.26159 (2019/11/06).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#1 20353 C. Thomas Tyler Released SDP 2016.1.20348.
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev',
with selective removal of changes related to work-in-progress
changes.
//guest/perforce_software/sdp/dev/Maintenance/p4lock.py
#1 20289 Russell C. Jackson (Rusty) Script to convert labels to autoreload labels