1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#!/usr/bin/env python 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# Use of this source code is governed by a BSD-style license 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# that can be found in the LICENSE file in the root of the source 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# tree. An additional intellectual property rights grant can be found 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# in the file PATENTS. All contributing project authors may 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org# be found in the AUTHORS file in the root of the source tree. 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org"""Get svn revision of working copy 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgThis script tries to get the svn revision as much as it can. It supports 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgboth git-svn and svn. It will fail if not in a git-svn or svn repository; 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgin this case the script will return "n/a". 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgThis script is a simplified version of lastchange.py which is in Chromium's 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgsrc/build/util folder. 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org""" 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport os 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport subprocess 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgimport sys 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgdef popen_cmd_and_get_output(cmd, directory): 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org """Return (status, output) of executing cmd in a shell.""" 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org try: 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org proc = subprocess.Popen(cmd, 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org stdout=subprocess.PIPE, 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org stderr=subprocess.PIPE, 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org cwd=directory, 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org shell=(sys.platform=='win32')) 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org except OSError: 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org # command is apparently either not installed or not executable. 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return None 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if not proc: 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return None 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org for line in proc.stdout: 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org line = line.strip() 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if not line: 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org continue 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org words = line.split() 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org for index, word in enumerate(words): 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if word == "Revision:": 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return words[index+1] 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org # return None if cannot find keyword Revision 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return None 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgdef main(): 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org directory = os.path.dirname(sys.argv[0]); 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org version = popen_cmd_and_get_output(['git', 'svn', 'info'], directory) 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if version == None: 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org version = popen_cmd_and_get_output(['svn', 'info'], directory) 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if version == None: 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org print "n/a" 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org print version 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return 0 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgif __name__ == '__main__': 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org sys.exit(main()) 62