OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """A wrapper script to manage a set of client modules in different SCM. | 6 """A wrapper script to manage a set of client modules in different SCM. |
7 | 7 |
8 This script is intended to be used to help basic management of client | 8 This script is intended to be used to help basic management of client |
9 program sources residing in one or more Subversion modules and Git | 9 program sources residing in one or more Subversion modules and Git |
10 repositories, along with other modules it depends on, also in Subversion or Git, | 10 repositories, along with other modules it depends on, also in Subversion or Git, |
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 | 795 |
796 | 796 |
797 #### gclient commands. | 797 #### gclient commands. |
798 | 798 |
799 | 799 |
800 def CMDcleanup(parser, args): | 800 def CMDcleanup(parser, args): |
801 """Cleans up all working copies. | 801 """Cleans up all working copies. |
802 | 802 |
803 Mostly svn-specific. Simply runs 'svn cleanup' for each module. | 803 Mostly svn-specific. Simply runs 'svn cleanup' for each module. |
804 """ | 804 """ |
| 805 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
| 806 help="override deps for the specified (comma-separated) " |
| 807 "platform(s); 'all' will process all deps_os " |
| 808 "references") |
805 (options, args) = parser.parse_args(args) | 809 (options, args) = parser.parse_args(args) |
806 client = GClient.LoadCurrentConfig(options) | 810 client = GClient.LoadCurrentConfig(options) |
807 if not client: | 811 if not client: |
808 raise gclient_utils.Error("client not configured; see 'gclient config'") | 812 raise gclient_utils.Error("client not configured; see 'gclient config'") |
809 if options.verbose: | 813 if options.verbose: |
810 # Print out the .gclient file. This is longer than if we just printed the | 814 # Print out the .gclient file. This is longer than if we just printed the |
811 # client dict, but more legible, and it might contain helpful comments. | 815 # client dict, but more legible, and it might contain helpful comments. |
812 print(client.ConfigContent()) | 816 print(client.ConfigContent()) |
813 return client.RunOnDeps('cleanup', args) | 817 return client.RunOnDeps('cleanup', args) |
814 | 818 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 safesync_url = "" | 854 safesync_url = "" |
851 if len(args) > 1: | 855 if len(args) > 1: |
852 safesync_url = args[1] | 856 safesync_url = args[1] |
853 client.SetDefaultConfig(name, base_url, safesync_url) | 857 client.SetDefaultConfig(name, base_url, safesync_url) |
854 client.SaveConfig() | 858 client.SaveConfig() |
855 return 0 | 859 return 0 |
856 | 860 |
857 | 861 |
858 def CMDexport(parser, args): | 862 def CMDexport(parser, args): |
859 """Wrapper for svn export for all managed directories.""" | 863 """Wrapper for svn export for all managed directories.""" |
| 864 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
| 865 help="override deps for the specified (comma-separated) " |
| 866 "platform(s); 'all' will process all deps_os " |
| 867 "references") |
860 (options, args) = parser.parse_args(args) | 868 (options, args) = parser.parse_args(args) |
861 if len(args) != 1: | 869 if len(args) != 1: |
862 raise gclient_utils.Error("Need directory name") | 870 raise gclient_utils.Error("Need directory name") |
863 client = GClient.LoadCurrentConfig(options) | 871 client = GClient.LoadCurrentConfig(options) |
864 | 872 |
865 if not client: | 873 if not client: |
866 raise gclient_utils.Error("client not configured; see 'gclient config'") | 874 raise gclient_utils.Error("client not configured; see 'gclient config'") |
867 | 875 |
868 if options.verbose: | 876 if options.verbose: |
869 # Print out the .gclient file. This is longer than if we just printed the | 877 # Print out the .gclient file. This is longer than if we just printed the |
870 # client dict, but more legible, and it might contain helpful comments. | 878 # client dict, but more legible, and it might contain helpful comments. |
871 print(client.ConfigContent()) | 879 print(client.ConfigContent()) |
872 return client.RunOnDeps('export', args) | 880 return client.RunOnDeps('export', args) |
873 | 881 |
874 | 882 |
875 @attr('epilog', """Example: | 883 @attr('epilog', """Example: |
876 gclient pack > patch.txt | 884 gclient pack > patch.txt |
877 generate simple patch for configured client and dependences | 885 generate simple patch for configured client and dependences |
878 """) | 886 """) |
879 def CMDpack(parser, args): | 887 def CMDpack(parser, args): |
880 """Generate a patch which can be applied at the root of the tree. | 888 """Generate a patch which can be applied at the root of the tree. |
881 | 889 |
882 Internally, runs 'svn diff'/'git diff' on each checked out module and | 890 Internally, runs 'svn diff'/'git diff' on each checked out module and |
883 dependencies, and performs minimal postprocessing of the output. The | 891 dependencies, and performs minimal postprocessing of the output. The |
884 resulting patch is printed to stdout and can be applied to a freshly | 892 resulting patch is printed to stdout and can be applied to a freshly |
885 checked out tree via 'patch -p0 < patchfile'. | 893 checked out tree via 'patch -p0 < patchfile'. |
886 """ | 894 """ |
| 895 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
| 896 help="override deps for the specified (comma-separated) " |
| 897 "platform(s); 'all' will process all deps_os " |
| 898 "references") |
887 (options, args) = parser.parse_args(args) | 899 (options, args) = parser.parse_args(args) |
888 client = GClient.LoadCurrentConfig(options) | 900 client = GClient.LoadCurrentConfig(options) |
889 if not client: | 901 if not client: |
890 raise gclient_utils.Error("client not configured; see 'gclient config'") | 902 raise gclient_utils.Error("client not configured; see 'gclient config'") |
891 if options.verbose: | 903 if options.verbose: |
892 # Print out the .gclient file. This is longer than if we just printed the | 904 # Print out the .gclient file. This is longer than if we just printed the |
893 # client dict, but more legible, and it might contain helpful comments. | 905 # client dict, but more legible, and it might contain helpful comments. |
894 print(client.ConfigContent()) | 906 print(client.ConfigContent()) |
895 return client.RunOnDeps('pack', args) | 907 return client.RunOnDeps('pack', args) |
896 | 908 |
897 | 909 |
898 def CMDstatus(parser, args): | 910 def CMDstatus(parser, args): |
899 """Show modification status for every dependencies.""" | 911 """Show modification status for every dependencies.""" |
900 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", | 912 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
901 help="sync deps for the specified (comma-separated) " | 913 help="override deps for the specified (comma-separated) " |
902 "platform(s); 'all' will sync all platforms") | 914 "platform(s); 'all' will process all deps_os " |
| 915 "references") |
903 (options, args) = parser.parse_args(args) | 916 (options, args) = parser.parse_args(args) |
904 client = GClient.LoadCurrentConfig(options) | 917 client = GClient.LoadCurrentConfig(options) |
905 if not client: | 918 if not client: |
906 raise gclient_utils.Error("client not configured; see 'gclient config'") | 919 raise gclient_utils.Error("client not configured; see 'gclient config'") |
907 if options.verbose: | 920 if options.verbose: |
908 # Print out the .gclient file. This is longer than if we just printed the | 921 # Print out the .gclient file. This is longer than if we just printed the |
909 # client dict, but more legible, and it might contain helpful comments. | 922 # client dict, but more legible, and it might contain helpful comments. |
910 print(client.ConfigContent()) | 923 print(client.ConfigContent()) |
911 return client.RunOnDeps('status', args) | 924 return client.RunOnDeps('status', args) |
912 | 925 |
(...skipping 22 matching lines...) Expand all Loading... |
935 "solution@rev/hash, e.g. -r src@123") | 948 "solution@rev/hash, e.g. -r src@123") |
936 parser.add_option("--head", action="store_true", | 949 parser.add_option("--head", action="store_true", |
937 help="skips any safesync_urls specified in " | 950 help="skips any safesync_urls specified in " |
938 "configured solutions and sync to head instead") | 951 "configured solutions and sync to head instead") |
939 parser.add_option("--delete_unversioned_trees", action="store_true", | 952 parser.add_option("--delete_unversioned_trees", action="store_true", |
940 help="delete any unexpected unversioned trees " | 953 help="delete any unexpected unversioned trees " |
941 "that are in the checkout") | 954 "that are in the checkout") |
942 parser.add_option("--reset", action="store_true", | 955 parser.add_option("--reset", action="store_true", |
943 help="resets any local changes before updating (git only)") | 956 help="resets any local changes before updating (git only)") |
944 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", | 957 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
945 help="sync deps for the specified (comma-separated) " | 958 help="override deps for the specified (comma-separated) " |
946 "platform(s); 'all' will sync all platforms") | 959 "platform(s); 'all' will process all deps_os " |
| 960 "references") |
947 parser.add_option("--manually_grab_svn_rev", action="store_true", | 961 parser.add_option("--manually_grab_svn_rev", action="store_true", |
948 help="Skip svn up whenever possible by requesting " | 962 help="Skip svn up whenever possible by requesting " |
949 "actual HEAD revision from the repository") | 963 "actual HEAD revision from the repository") |
950 (options, args) = parser.parse_args(args) | 964 (options, args) = parser.parse_args(args) |
951 client = GClient.LoadCurrentConfig(options) | 965 client = GClient.LoadCurrentConfig(options) |
952 | 966 |
953 if not client: | 967 if not client: |
954 raise gclient_utils.Error("client not configured; see 'gclient config'") | 968 raise gclient_utils.Error("client not configured; see 'gclient config'") |
955 | 969 |
956 if not options.head: | 970 if not options.head: |
(...skipping 26 matching lines...) Expand all Loading... |
983 print(client.ConfigContent()) | 997 print(client.ConfigContent()) |
984 return client.RunOnDeps('update', args) | 998 return client.RunOnDeps('update', args) |
985 | 999 |
986 | 1000 |
987 def CMDupdate(parser, args): | 1001 def CMDupdate(parser, args): |
988 """Alias for the sync command. Deprecated.""" | 1002 """Alias for the sync command. Deprecated.""" |
989 return CMDsync(parser, args) | 1003 return CMDsync(parser, args) |
990 | 1004 |
991 def CMDdiff(parser, args): | 1005 def CMDdiff(parser, args): |
992 """Displays local diff for every dependencies.""" | 1006 """Displays local diff for every dependencies.""" |
| 1007 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
| 1008 help="override deps for the specified (comma-separated) " |
| 1009 "platform(s); 'all' will process all deps_os " |
| 1010 "references") |
993 (options, args) = parser.parse_args(args) | 1011 (options, args) = parser.parse_args(args) |
994 client = GClient.LoadCurrentConfig(options) | 1012 client = GClient.LoadCurrentConfig(options) |
995 if not client: | 1013 if not client: |
996 raise gclient_utils.Error("client not configured; see 'gclient config'") | 1014 raise gclient_utils.Error("client not configured; see 'gclient config'") |
997 if options.verbose: | 1015 if options.verbose: |
998 # Print out the .gclient file. This is longer than if we just printed the | 1016 # Print out the .gclient file. This is longer than if we just printed the |
999 # client dict, but more legible, and it might contain helpful comments. | 1017 # client dict, but more legible, and it might contain helpful comments. |
1000 print(client.ConfigContent()) | 1018 print(client.ConfigContent()) |
1001 return client.RunOnDeps('diff', args) | 1019 return client.RunOnDeps('diff', args) |
1002 | 1020 |
1003 | 1021 |
1004 def CMDrevert(parser, args): | 1022 def CMDrevert(parser, args): |
1005 """Revert all modifications in every dependencies.""" | 1023 """Revert all modifications in every dependencies.""" |
1006 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", | 1024 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
1007 help="sync deps for the specified (comma-separated) " | 1025 help="override deps for the specified (comma-separated) " |
1008 "platform(s); 'all' will sync all platforms") | 1026 "platform(s); 'all' will process all deps_os " |
| 1027 "references") |
1009 parser.add_option("--nohooks", action="store_true", | 1028 parser.add_option("--nohooks", action="store_true", |
1010 help="don't run hooks after the revert is complete") | 1029 help="don't run hooks after the revert is complete") |
1011 (options, args) = parser.parse_args(args) | 1030 (options, args) = parser.parse_args(args) |
1012 # --force is implied. | 1031 # --force is implied. |
1013 options.force = True | 1032 options.force = True |
1014 client = GClient.LoadCurrentConfig(options) | 1033 client = GClient.LoadCurrentConfig(options) |
1015 if not client: | 1034 if not client: |
1016 raise gclient_utils.Error("client not configured; see 'gclient config'") | 1035 raise gclient_utils.Error("client not configured; see 'gclient config'") |
1017 return client.RunOnDeps('revert', args) | 1036 return client.RunOnDeps('revert', args) |
1018 | 1037 |
1019 | 1038 |
1020 def CMDrunhooks(parser, args): | 1039 def CMDrunhooks(parser, args): |
1021 """Runs hooks for files that have been modified in the local working copy.""" | 1040 """Runs hooks for files that have been modified in the local working copy.""" |
1022 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", | 1041 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
1023 help="sync deps for the specified (comma-separated) " | 1042 help="override deps for the specified (comma-separated) " |
1024 "platform(s); 'all' will sync all platforms") | 1043 "platform(s); 'all' will process all deps_os " |
| 1044 "references") |
1025 parser.add_option("--force", action="store_true", default=True, | 1045 parser.add_option("--force", action="store_true", default=True, |
1026 help="Deprecated. No effect.") | 1046 help="Deprecated. No effect.") |
1027 (options, args) = parser.parse_args(args) | 1047 (options, args) = parser.parse_args(args) |
1028 client = GClient.LoadCurrentConfig(options) | 1048 client = GClient.LoadCurrentConfig(options) |
1029 if not client: | 1049 if not client: |
1030 raise gclient_utils.Error("client not configured; see 'gclient config'") | 1050 raise gclient_utils.Error("client not configured; see 'gclient config'") |
1031 if options.verbose: | 1051 if options.verbose: |
1032 # Print out the .gclient file. This is longer than if we just printed the | 1052 # Print out the .gclient file. This is longer than if we just printed the |
1033 # client dict, but more legible, and it might contain helpful comments. | 1053 # client dict, but more legible, and it might contain helpful comments. |
1034 print(client.ConfigContent()) | 1054 print(client.ConfigContent()) |
1035 options.force = True | 1055 options.force = True |
1036 options.nohooks = False | 1056 options.nohooks = False |
1037 return client.RunOnDeps('runhooks', args) | 1057 return client.RunOnDeps('runhooks', args) |
1038 | 1058 |
1039 | 1059 |
1040 def CMDrevinfo(parser, args): | 1060 def CMDrevinfo(parser, args): |
1041 """Outputs details for every dependencies.""" | 1061 """Outputs details for every dependencies.""" |
| 1062 parser.add_option("--deps", dest="deps_os", metavar="OS_LIST", |
| 1063 help="override deps for the specified (comma-separated) " |
| 1064 "platform(s); 'all' will process all deps_os " |
| 1065 "references") |
1042 parser.add_option("--snapshot", action="store_true", | 1066 parser.add_option("--snapshot", action="store_true", |
1043 help="create a snapshot file of the current " | 1067 help="create a snapshot file of the current " |
1044 "version of all repositories") | 1068 "version of all repositories") |
1045 (options, args) = parser.parse_args(args) | 1069 (options, args) = parser.parse_args(args) |
1046 client = GClient.LoadCurrentConfig(options) | 1070 client = GClient.LoadCurrentConfig(options) |
1047 options.deps_os = None | |
1048 if not client: | 1071 if not client: |
1049 raise gclient_utils.Error("client not configured; see 'gclient config'") | 1072 raise gclient_utils.Error("client not configured; see 'gclient config'") |
1050 client.PrintRevInfo() | 1073 client.PrintRevInfo() |
1051 return 0 | 1074 return 0 |
1052 | 1075 |
1053 | 1076 |
1054 def Command(name): | 1077 def Command(name): |
1055 return getattr(sys.modules[__name__], 'CMD' + name, None) | 1078 return getattr(sys.modules[__name__], 'CMD' + name, None) |
1056 | 1079 |
1057 | 1080 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1118 | 1141 |
1119 | 1142 |
1120 if "__main__" == __name__: | 1143 if "__main__" == __name__: |
1121 try: | 1144 try: |
1122 sys.exit(Main(sys.argv[1:])) | 1145 sys.exit(Main(sys.argv[1:])) |
1123 except gclient_utils.Error, e: | 1146 except gclient_utils.Error, e: |
1124 print >> sys.stderr, "Error: %s" % str(e) | 1147 print >> sys.stderr, "Error: %s" % str(e) |
1125 sys.exit(1) | 1148 sys.exit(1) |
1126 | 1149 |
1127 # vim: ts=2:sw=2:tw=80:et: | 1150 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |