mirror of
https://github.com/openSUSE/osc.git
synced 2025-01-27 15:06:15 +01:00
- fix 'status <filename>'
- use filename matching to exclude files [#208969] - add '.gitignore', '.pc', '*~' to ignore list - add testcase
This commit is contained in:
parent
2b4a5ae46a
commit
5f8fc4e340
1
NEWS
1
NEWS
@ -1,4 +1,5 @@
|
|||||||
since 0.8:
|
since 0.8:
|
||||||
|
- fix 'status' to work with project directories as arguments
|
||||||
- 'rebuildpac' now accepts additional repo and arch argument. Note:
|
- 'rebuildpac' now accepts additional repo and arch argument. Note:
|
||||||
the syntax has changed.
|
the syntax has changed.
|
||||||
- add 'prjresults' command to display aggregated build status over
|
- add 'prjresults' command to display aggregated build status over
|
||||||
|
2
TODO
2
TODO
@ -68,8 +68,6 @@ Transmitting file data ..
|
|||||||
15:50 < DuDE> kesselborn: hm, das sollte ich aendern
|
15:50 < DuDE> kesselborn: hm, das sollte ich aendern
|
||||||
|
|
||||||
|
|
||||||
17:30 < DuDE> jbl_: at the moment there is only exclude_stuff = [store, '.svn', 'CVS'], it should be extended to use globs
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -349,6 +349,8 @@ usage: osc st
|
|||||||
pacpaths += [arg + '/' + n for n in prj.pacs_have]
|
pacpaths += [arg + '/' + n for n in prj.pacs_have]
|
||||||
elif is_package_dir(arg):
|
elif is_package_dir(arg):
|
||||||
pacpaths.append(arg)
|
pacpaths.append(arg)
|
||||||
|
elif os.path.isfile(arg):
|
||||||
|
pacpaths.append(arg)
|
||||||
else:
|
else:
|
||||||
sys.exit('osc: error: %s is neither a project or a package directory' % arg)
|
sys.exit('osc: error: %s is neither a project or a package directory' % arg)
|
||||||
|
|
||||||
@ -362,6 +364,8 @@ usage: osc st
|
|||||||
p.todo = p.filenamelist + p.filenamelist_unvers
|
p.todo = p.filenamelist + p.filenamelist_unvers
|
||||||
|
|
||||||
for filename in p.todo:
|
for filename in p.todo:
|
||||||
|
if filename in p.excluded:
|
||||||
|
continue
|
||||||
s = p.status(filename)
|
s = p.status(filename)
|
||||||
if s == 'F':
|
if s == 'F':
|
||||||
print statfrmt('!', pathjoin(p.dir, filename))
|
print statfrmt('!', pathjoin(p.dir, filename))
|
||||||
@ -390,7 +394,7 @@ usage: osc add file1 file2 ...
|
|||||||
|
|
||||||
for pac in pacs:
|
for pac in pacs:
|
||||||
for filename in pac.todo:
|
for filename in pac.todo:
|
||||||
if filename in exclude_stuff:
|
if filename in pac.excluded:
|
||||||
continue
|
continue
|
||||||
if filename in pac.filenamelist:
|
if filename in pac.filenamelist:
|
||||||
print 'osc: warning: \'%s\' is already under version control' % filename
|
print 'osc: warning: \'%s\' is already under version control' % filename
|
||||||
@ -413,8 +417,6 @@ usage: osc addremove
|
|||||||
p.todo = p.filenamelist + p.filenamelist_unvers
|
p.todo = p.filenamelist + p.filenamelist_unvers
|
||||||
|
|
||||||
for filename in p.todo:
|
for filename in p.todo:
|
||||||
if filename in exclude_stuff:
|
|
||||||
continue
|
|
||||||
if os.path.isdir(filename):
|
if os.path.isdir(filename):
|
||||||
continue
|
continue
|
||||||
state = p.status(filename)
|
state = p.status(filename)
|
||||||
|
13
osc/core.py
13
osc/core.py
@ -22,7 +22,7 @@ scheme = 'http'
|
|||||||
|
|
||||||
BUFSIZE = 1024*1024
|
BUFSIZE = 1024*1024
|
||||||
store = '.osc'
|
store = '.osc'
|
||||||
exclude_stuff = [store, '.svn', 'CVS', '.git']
|
exclude_stuff = [store, '.svn', 'CVS', '.git', '.gitignore', '.pc', '*~']
|
||||||
|
|
||||||
|
|
||||||
new_project_templ = """\
|
new_project_templ = """\
|
||||||
@ -159,6 +159,7 @@ class Project:
|
|||||||
class Package:
|
class Package:
|
||||||
"""represent a package (its directory) and read/keep/write its metadata"""
|
"""represent a package (its directory) and read/keep/write its metadata"""
|
||||||
def __init__(self, workingdir):
|
def __init__(self, workingdir):
|
||||||
|
import fnmatch
|
||||||
self.dir = workingdir
|
self.dir = workingdir
|
||||||
self.absdir = os.path.abspath(self.dir)
|
self.absdir = os.path.abspath(self.dir)
|
||||||
self.storedir = os.path.join(self.dir, store)
|
self.storedir = os.path.join(self.dir, store)
|
||||||
@ -194,9 +195,12 @@ class Package:
|
|||||||
self.todo_send = []
|
self.todo_send = []
|
||||||
self.todo_delete = []
|
self.todo_delete = []
|
||||||
|
|
||||||
# gather unversioned files (the ones not listed in _meta)
|
# gather unversioned files, but ignore some stuff
|
||||||
|
self.excluded = [ i for i in os.listdir(self.dir)
|
||||||
|
for j in exclude_stuff
|
||||||
|
if fnmatch.fnmatch(i, j) ]
|
||||||
self.filenamelist_unvers = [ i for i in os.listdir(self.dir)
|
self.filenamelist_unvers = [ i for i in os.listdir(self.dir)
|
||||||
if i not in exclude_stuff
|
if i not in self.excluded
|
||||||
if i not in self.filenamelist ]
|
if i not in self.filenamelist ]
|
||||||
|
|
||||||
def addfile(self, n):
|
def addfile(self, n):
|
||||||
@ -507,9 +511,6 @@ def is_package_dir(d):
|
|||||||
def findpacs(files):
|
def findpacs(files):
|
||||||
pacs = []
|
pacs = []
|
||||||
for f in files:
|
for f in files:
|
||||||
if f in exclude_stuff:
|
|
||||||
break
|
|
||||||
|
|
||||||
p = filedir_to_pac(f)
|
p = filedir_to_pac(f)
|
||||||
known = None
|
known = None
|
||||||
for i in pacs:
|
for i in pacs:
|
||||||
|
13
tests.py
13
tests.py
@ -187,11 +187,16 @@ Transmitting file data
|
|||||||
self.assertEqual(self.err, '')
|
self.assertEqual(self.err, '')
|
||||||
self.assertEqual(self.out, 'A %s/foo2\n? %s/onlyinwc\n' % (os.getcwd(), os.getcwd()))
|
self.assertEqual(self.out, 'A %s/foo2\n? %s/onlyinwc\n' % (os.getcwd(), os.getcwd()))
|
||||||
|
|
||||||
# status with a relative directory as argument
|
# status with an absolute directory as argument
|
||||||
reldir = os.path.basename(os.getcwd())
|
self.out, self.err = runosc('st %s' % os.getcwd())
|
||||||
self.out, self.err = runosc('st ../%s' % reldir)
|
|
||||||
self.assertEqual(self.err, '')
|
self.assertEqual(self.err, '')
|
||||||
self.assertEqual(self.out, 'A ../%s/foo2\n? ../%s/onlyinwc\n' % (reldir, reldir))
|
self.assertEqual(self.out, 'A %s/foo2\n? %s/onlyinwc\n' % (os.getcwd(), os.getcwd()))
|
||||||
|
|
||||||
|
# status with a single file as argument
|
||||||
|
reldir = os.path.basename(os.getcwd())
|
||||||
|
self.out, self.err = runosc('st foo2')
|
||||||
|
self.assertEqual(self.err, '')
|
||||||
|
self.assertEqual(self.out, 'A foo2\n')
|
||||||
|
|
||||||
# check in a single argument
|
# check in a single argument
|
||||||
self.out, self.err = runosc('ci foo2')
|
self.out, self.err = runosc('ci foo2')
|
||||||
|
Loading…
Reference in New Issue
Block a user