diff --git a/tools/commit-tracker b/tools/commit-tracker
index 6e4a235..72a0203 100755
--- a/tools/commit-tracker
+++ b/tools/commit-tracker
@@ -23,6 +23,7 @@
 #        repositories
 ###############################################################################
 
+import argparse
 import logging
 import os
 import re
@@ -36,16 +37,39 @@
 # @param i_args : Command line arguments
 ###############################################################################
 def main(i_args):
-    if 3 != len(i_args):
-        print usage()
-        exit(1)
+    # Parse the arguments
+    l_args_obj = parse_arguments(i_args)
 
-    l_repo_path = i_args[0]
-    l_begin_commit = i_args[1]
-    l_end_commit = i_args[2]
+    # Print every commit
+    print 'Getting commits for ' + l_args_obj.repo_dir
+    print_commits(l_args_obj.repo_dir, l_args_obj.latest_commit,
+                  l_args_obj.earliest_commit)
 
-    print 'Getting commits for ' + l_repo_path
-    print_commits(l_repo_path, l_begin_commit, l_end_commit)
+###############################################################################
+# @brief Parses the arguments from the command line
+#
+# @param i_args : The list of arguments from the command line, excluding the
+#                 name of the script
+#
+# @return An object representin the parsed arguments
+###############################################################################
+def parse_arguments(i_args):
+    l_parser = argparse.ArgumentParser(
+        description='Prints commit information from the given repo and all ' \
+                    +'sub-repos specified with SRC_REV, starting from the ' \
+                    +'most recent commit specified going back to the ' \
+                    +'earliest commit specified.')
+    l_parser.add_argument(
+        'repo_dir',
+        help='The directory of the repo to get commit information for')
+    l_parser.add_argument(
+        'latest_commit',
+        help='A reference (branch name, HEAD, SHA, etc.) to the most ' \
+             +'recent commit to get information for')
+    l_parser.add_argument(
+        'earliest_commit',
+        help='A reference to the earliest commit to get information for')
+    return l_parser.parse_args(i_args)
 
 ###############################################################################
 # @brief Prints all the commits from this repo and commits from
@@ -196,22 +220,6 @@
     print ('  ' * i_level) + RED + i_repo_path + ENDC  + ' ' + BLUE \
         + l_name_rev + ENDC + ' ' + re.sub('\s+', ' ', i_commit.summary)
 
-###############################################################################
-# @brief Prints out the usage for this script
-###############################################################################
-def usage():
-    print 'Usage: commit-tracker <repo_dir> <begin_rev> <end_rev>\n' \
-        + '  Prints commit information from the given repo and all\n' \
-        + '  sub-repos specified with SRC_REV, starting from the most \n' \
-        + '  recent commit specified going back to the earliest commit \n' \
-        + '  specified.\n' \
-        + '    repo_name - The directory of the repo to get commit\n' \
-        + '                information for\n' \
-        + '    begin_rev - A reference (branch name, HEAD, SHA, etc.) to\n' \
-        + '                the most recent commit to get information for\n' \
-        + '    end_rev   - A reference to the earliest commit to get\n' \
-        + '                information for'
-
 # Only run main if run as a script
 if __name__ == '__main__':
     main(sys.argv[1:])
