Fix error in status.py when calling git.resolved
[stgit] / stgit / commands / status.py
CommitLineData
fcee87cf
CM
1
2__copyright__ = """
3Copyright (C) 2005, Catalin Marinas <catalin.marinas@gmail.com>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License version 2 as
7published by the Free Software Foundation.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program; if not, write to the Free Software
16Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17"""
18
19import sys, os
20from optparse import OptionParser, make_option
21
22from stgit.commands.common import *
23from stgit.utils import *
24from stgit import stack, git
25
26
27help = 'show the tree status'
d4356ac6 28usage = """%prog [options] [<files or dirs>]
26aab5b0
CM
29
30Show the status of the whole working copy or the given files. The
31command also shows the files in the current directory which are not
32under revision control. The files are prefixed as follows:
33
34 M - locally modified
35 N - newly added to the repository
36 D - deleted from the repository
37 C - conflict
38 ? - unknown
39
40A 'refresh' command clears the status of the modified, new and deleted
41files."""
fcee87cf 42
d96796ef 43directory = DirectoryHasRepository(needs_current_series = False)
fcee87cf
CM
44options = [make_option('-m', '--modified',
45 help = 'show modified files only',
46 action = 'store_true'),
47 make_option('-n', '--new',
48 help = 'show new files only',
49 action = 'store_true'),
50 make_option('-d', '--deleted',
51 help = 'show deleted files only',
52 action = 'store_true'),
53 make_option('-c', '--conflict',
54 help = 'show conflict files only',
55 action = 'store_true'),
56 make_option('-u', '--unknown',
57 help = 'show unknown files only',
4d4c0e3a
PBG
58 action = 'store_true'),
59 make_option('-x', '--noexclude',
60 help = 'do not exclude any files from listing',
94227db3
CM
61 action = 'store_true'),
62 make_option('--reset',
63 help = 'reset the current tree changes',
0b635fe6
KH
64 action = 'store_true')
65 ] + make_diff_opts_option()
fcee87cf
CM
66
67
ea27ef9d
KH
68def status(files, modified, new, deleted, conflict, unknown, noexclude,
69 diff_flags):
4361d795
DK
70 """Show the tree status
71 """
72 cache_files = git.tree_status(files,
d4356ac6 73 unknown = (not files),
4361d795
DK
74 noexclude = noexclude,
75 diff_flags = diff_flags)
76 filtered = (modified or new or deleted or conflict or unknown)
77
78 if filtered:
79 filestat = []
80 if modified:
81 filestat.append('M')
82 if new:
83 filestat.append('A')
84 filestat.append('N')
85 if deleted:
86 filestat.append('D')
87 if conflict:
88 filestat.append('C')
89 if unknown:
90 filestat.append('?')
91 cache_files = [x for x in cache_files if x[0] in filestat]
92
cbd2f5f3
KH
93 output = []
94 for st, fn in cache_files:
cbd2f5f3
KH
95 if filtered:
96 output.append(fn)
4361d795 97 else:
cbd2f5f3
KH
98 output.append('%s %s' % (st, fn))
99 for o in sorted(output):
100 out.stdout(o)
4361d795 101
fcee87cf
CM
102def func(parser, options, args):
103 """Show the tree status
104 """
d4356ac6
CM
105 args = git.ls_files(args)
106 directory.cd_to_topdir()
107
94227db3 108 if options.reset:
49e316b9 109 if args:
29197bc0 110 conflicts = git.get_conflicts()
6ce2faa0 111 git.resolved([fn for fn in args if fn in conflicts])
49e316b9
CM
112 git.reset(args)
113 else:
114 resolved_all()
115 git.reset()
94227db3 116 else:
4361d795
DK
117 status(args, options.modified, options.new, options.deleted,
118 options.conflict, options.unknown, options.noexclude,
0b635fe6 119 options.diff_flags)