|
|
|
@ -10,6 +10,7 @@ import getpass
|
|
|
|
|
import os
|
|
|
|
|
import random
|
|
|
|
|
import re
|
|
|
|
|
import shutil
|
|
|
|
|
import string
|
|
|
|
|
import subprocess
|
|
|
|
|
import sys
|
|
|
|
@ -21,7 +22,7 @@ import xml.dom.minidom
|
|
|
|
|
# gcl now depends on gclient.
|
|
|
|
|
import gclient
|
|
|
|
|
|
|
|
|
|
__version__ = '1.0'
|
|
|
|
|
__version__ = '1.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CODEREVIEW_SETTINGS = {
|
|
|
|
@ -34,7 +35,6 @@ CODEREVIEW_SETTINGS = {
|
|
|
|
|
# globals that store the root of the current repository and the directory where
|
|
|
|
|
# we store information about changelists.
|
|
|
|
|
repository_root = ""
|
|
|
|
|
gcl_info_dir = ""
|
|
|
|
|
|
|
|
|
|
# Filename where we store repository specific information for gcl.
|
|
|
|
|
CODEREVIEW_SETTINGS_FILE = "codereview.settings"
|
|
|
|
@ -110,10 +110,12 @@ def GetRepositoryRoot():
|
|
|
|
|
|
|
|
|
|
def GetInfoDir():
|
|
|
|
|
"""Returns the directory where gcl info files are stored."""
|
|
|
|
|
global gcl_info_dir
|
|
|
|
|
if not gcl_info_dir:
|
|
|
|
|
gcl_info_dir = os.path.join(GetRepositoryRoot(), '.svn', 'gcl_info')
|
|
|
|
|
return gcl_info_dir
|
|
|
|
|
return os.path.join(GetRepositoryRoot(), '.svn', 'gcl_info')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def GetChangesDir():
|
|
|
|
|
"""Returns the directory where gcl change files are stored."""
|
|
|
|
|
return os.path.join(GetInfoDir(), 'changes')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def GetCodeReviewSetting(key):
|
|
|
|
@ -373,7 +375,7 @@ def GetChangelistInfoFile(changename):
|
|
|
|
|
"""Returns the file that stores information about a changelist."""
|
|
|
|
|
if not changename or re.search(r'[^\w-]', changename):
|
|
|
|
|
ErrorExit("Invalid changelist name: " + changename)
|
|
|
|
|
return os.path.join(GetInfoDir(), changename)
|
|
|
|
|
return os.path.join(GetChangesDir(), changename)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def LoadChangelistInfoForMultiple(changenames, fail_on_not_found=True,
|
|
|
|
@ -442,7 +444,7 @@ def LoadChangelistInfo(changename, fail_on_not_found=True,
|
|
|
|
|
|
|
|
|
|
def GetCLs():
|
|
|
|
|
"""Returns a list of all the changelists in this repository."""
|
|
|
|
|
cls = os.listdir(GetInfoDir())
|
|
|
|
|
cls = os.listdir(GetChangesDir())
|
|
|
|
|
if CODEREVIEW_SETTINGS_FILE in cls:
|
|
|
|
|
cls.remove(CODEREVIEW_SETTINGS_FILE)
|
|
|
|
|
return cls
|
|
|
|
@ -1020,10 +1022,19 @@ def main(argv=None):
|
|
|
|
|
Help()
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
# Create the directory where we store information about changelists if it
|
|
|
|
|
# Create the directories where we store information about changelists if it
|
|
|
|
|
# doesn't exist.
|
|
|
|
|
if not os.path.exists(GetInfoDir()):
|
|
|
|
|
os.mkdir(GetInfoDir())
|
|
|
|
|
if not os.path.exists(GetChangesDir()):
|
|
|
|
|
os.mkdir(GetChangesDir())
|
|
|
|
|
# For smooth upgrade support, move the files in GetInfoDir() to
|
|
|
|
|
# GetChangesDir().
|
|
|
|
|
# TODO(maruel): Remove this code in August 2009.
|
|
|
|
|
for file in os.listdir(unicode(GetInfoDir())):
|
|
|
|
|
file_path = os.path.join(unicode(GetInfoDir()), file)
|
|
|
|
|
if os.path.isfile(file_path) and file != CODEREVIEW_SETTINGS_FILE:
|
|
|
|
|
shutil.move(file_path, GetChangesDir())
|
|
|
|
|
|
|
|
|
|
# Commands that don't require an argument.
|
|
|
|
|
command = argv[1]
|
|
|
|
|