Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion Context.sublime-menu
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,22 @@
"caption": "Select Diff Application"
}
]
},
},
{
"command": "perforce_visual",
"args": {"cmd": "history"},
"caption": "History"
},
{
"command": "perforce_visual",
"args": {"cmd": "annotate"},
"caption": "Time Lapse"
},
{
"command": "perforce_visual",
"args": {"cmd": "tree"},
"caption": "Revision Graph"
},
{
"command": "perforce_list_checked_out_files",
"caption": "List Checked Out Files"
Expand Down
15 changes: 15 additions & 0 deletions Default.sublime-commands
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,21 @@
"caption": "Perforce: Diff",
"command": "perforce_diff"
},
{
"caption": "Perforce: History",
"command": "perforce_visual",
"args": {"cmd": "history"}
},
{
"caption": "Perforce: Time Lapse",
"command": "perforce_visual",
"args": {"cmd": "annotate"}
},
{
"caption": "Perforce: Revision Graph",
"command": "perforce_visual",
"args": {"cmd": "tree"}
},
{
"caption": "Perforce: Graphical Diff with Depot",
"command": "perforce_graphical_diff_with_depot"
Expand Down
15 changes: 15 additions & 0 deletions Main.sublime-menu
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,21 @@
}
]
},
{
"command": "perforce_visual",
"args": {"cmd": "history"},
"caption": "History"
},
{
"command": "perforce_visual",
"args": {"cmd": "annotate"},
"caption": "Time Lapse"
},
{
"command": "perforce_visual",
"args": {"cmd": "tree"},
"caption": "Revision Graph"
},
{
"command": "perforce_list_checked_out_files",
"caption": "List Checked Out Files"
Expand Down
47 changes: 47 additions & 0 deletions Perforce.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
# Eric Martel - first implementation of submit
# Eric Martel - Better handling of P4CONFIG files
# Andrew Butt & Eric Martel - threading of the diff task and selector for the graphical diff application
# Matt York - p4v commands to load history, time lapse view, and revision graph

import sublime
import sublime_plugin
Expand Down Expand Up @@ -57,6 +58,18 @@ def ConstructCommand(in_command):
command += in_command
return command

def GetPerforceInfo():
command = ConstructCommand('p4 info')
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=global_folder, shell=True)
result, err = p.communicate()

if(err):
WarnUser("usererr " + err.strip())
return err

settings = dict([entry.split(': ',1) for entry in result.splitlines()])
return settings

def getPerforceConfigFromPreferences(command):
perforce_settings = sublime.load_settings('Perforce.sublime-settings')

Expand Down Expand Up @@ -1025,3 +1038,37 @@ def MakeChangelistsList(self):
resultchangelists.insert(0, "Changelist " + changelistlinesplit[1] + " - " + ' '.join(changelistlinesplit[7:]))

return resultchangelists

class PerforceVisualCommandThread(threading.Thread):
def __init__(self, command, filename):
self.command = command
self.filename = filename
threading.Thread.__init__(self)

def run(self):
p = GetPerforceInfo()
command = ConstructCommand('p4v -p %s -u %s -c %s -cmd "%s %s"' %
(p['Server license-ip'], p['User name'], p['Client name'],
self.command, self.filename))
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=global_folder, shell=True)
result, err = p.communicate()

def PerforceVisualCommandOnFile(command, full_path):
if(full_path):
folder_name, filename = os.path.split(full_path)
if(IsFileInDepot(folder_name, filename)):
PerforceVisualCommandThread(command, full_path).start()
LogResults(1, "Launching thread for Visual Command")
else:
LogResults(0, "File is not under the client root.")
else:
WarnUser("View does not contain a file")

class PerforceVisualCommand(sublime_plugin.TextCommand):
def run(self, edit, cmd):
if(cmd):
PerforceVisualCommandOnFile(cmd, self.view.file_name())
else:
sublime.error_message("no cmd type given for p4v")


6 changes: 6 additions & 0 deletions messages/1.0.14.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Perforce integration 1.0.14 Changelog:

Add
- Added function to extract all info in `p4 info` into a dictionary
- Added a command to launch any p4v window. Window specified in args. Launches in separate thread.
- Added context, main, and command menu items for p4v History, Time Lapse, and Revision Graph windows
2 changes: 1 addition & 1 deletion package-metadata.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"url": "https://github.com/ericmartel/Sublime-Text-2-Perforce-Plugin", "version": "2012.01.12.01.58.03", "description": "Supports auto add and checkout with commands to add, diff, checkout, revert, diff using p4diff and lists all checked out files with quick access to them"}
{"url": "http://www.ericmartel.com/sublime-text-2-perforce-plugin/", "version": "2012.05.08.08.14.02", "description": "Supports auto add and checkout with commands to add, checkout, delete, diff, rename, revert, diff using p4diff and lists all checked out files with quick access to them with simple changelist management"}