- split functionality that needs prj/pac as commandline arguments into a seperate tool (oscremote? osc -r?)

- memorize used the api server on checkout
  - implmement switch command
- implement 'info' command
- implement 'mv' command
- editmeta: the API will return a 500 if the xml is broken... the document
  could be presented for editing again in that case
- updatepacmetafromspec -- is that useful? 
  In which form would this be integrated best?
- use urllib.urlencode for parameter encoding
- _real_ SSL support, with certificate verification
- zsh completion, or even bash
- add option to disable gpg key checking?
- add support for adding tags to packages?
- plugin-ize subcommand implementation
  - look at Susannes extensions
- Allow the package owners/users to signal an abort build.
  Message-ID: <20070214120205.GA9629@suse.de>
- implement wipe command
- implement editing of project configuration (alrady works in api & backend)
- build: --extra-pkgs ... buildinfo -> &add=...&add=...


checkin: 
	- handle error if PUT fails, so the change is not committed to
	  localmeta	


- changelog handling
  (should also work with multiple spec files <package-name>-<repository-name>.spec, and with <package-name>-<version>.spec)



implement a package search / indexing


> BTW: Can I upload a src.rpm instead of a tarball also?
no, because not all tools will be able to handle a src.rpm. And you will not
be able to build non rpm packages from it.
But someone could patch the commandline tool osc to import a src.rpm by
extracting it (hint hint ;)




<darix> ich hab nen vorschlag fuer osc
<darix> sagen wir ich leg ein server:mail/foo123 an
<darix> dann waere es cool sowas zu koennen wie
<darix> osc importfromspec server:mail foo123
This can actually be done by
	osc createpac server:mail foo123
followed by
	cd foo123; osc init server:mail foo123




bug:
 % osc rm subversion.de.po.bz2 subversion.nb.po.bz2
D    subversion.de.po.bz2
D    subversion.nb.po.bz2
poeml@aust ~/pac/opensuse/Subversion/subversion
 % osc ci subversion.de.po.bz2 subversion.nb.po.bz2
Sending        subversion.changes
Deleting       subversion.de.po.bz2
Deleting       subversion.nb.po.bz2
Sending        subversion.viewcvs.conf
Transmitting file data ..


15:47 < kesselborn> DuDE: beim osc local build: müssen die config vars gesetzt sein, wenn man env vars gesetzt hat?
15:48 < DuDE> kesselborn: hm, weiss ich gerade gar nicht
15:48 < kesselborn> ja, scheint so
15:48 < kesselborn> ok
15:48 < kesselborn> aber er nimmt dann die env vas
15:48 < kesselborn> vars
15:50 < DuDE> kesselborn: hm, das sollte ich aendern





osc repos server:search:ui :
  <repository name="SUSE_Linux_10.1">
    <path project="server:search" repository="SUSE_Linux_10.1" />
    <path project="KDE:KDE4" repository="SUSE_Linux_10.1" />
    <arch>x86_64</arch>
    <arch>i586</arch>
  </repository>
  <repository name="SUSE_Factory">
    <path project="server:search" repository="SUSE_Factory" />
    <path project="KDE:KDE4" repository="SUSE_Factory" />
    <arch>x86_64</arch>
    <arch>i586</arch>
  </repository>



# shorter forms of the packstatus... useful for anything?
#http://api.opensuse.org/result/KDE:KDE3/packstatus?summary
#http://api.opensuse.org/result/KDE:KDE3/packstatus?summaryonly


 # osc build SUSE_Factory i586 xorg-x11-libX11.spec                                                                                          
> ['/usr/bin/osc', 'build', 'i38', 'i386', 'SUSE_Factory', 'i586', 'xorg-x11-libX11.spec']                                                    
> Error: specfile 'SUSE_Factory' does not exist.                                                                                              
BUILD_DIST must *not* be set! Could you add this information to the
'osc help build' text?
 -> possibly kill BUILD_ROOT/BUILD_DIST support altogether? or make its use configurable.



http://api.opensuse.org/result/Apache/SUSE_Linux_10.0/apache2/result
15:06 <darix> kurz zeit ueber 1-2 osc feature request zu reden die ich grade bekommen habe?
15:06 <DuDE_> ja
15:06 <darix> ok
15:06 <darix> das 1. ist
15:06 <darix> osc listpackages [<project>]
15:06 <DuDE_> als Alias?
15:07 <darix> osc listpackages [<project>] [<package>]
15:07 <darix> es soll die gebauten sachen listen
15:07 <DuDE_> ach so, rpms
15:07 <darix> quasi alle rpms/debs die da sind
15:07 <darix> und dann
15:07 <DuDE_> mit Pfad/URL?
15:07 <DuDE_> also praktisch den Link auf software.opesuse.org?
15:07 <darix> osc getpackage [<project>] [<package>] [<rpm>]+
15:07 <darix> nein
15:07 <darix> im zweifel ueber API saugen
15:08 <DuDE_> hm, waere noetig, falls ein Projekt noch nicht durchgebaut hat
15:08 <darix> jau
15:08 <darix> richi wuerde sich wirklich drueber freuen
15:08 <darix> ich weiss dass es ueber die api vom backend geht
15:09 <darix> ich weiss nur nicht ob api alles durchreicht
15:09 <darix> und leider hab ich schon ein paar sachen im api code gefunden
15:09 <darix> der falsch mit dem backend spricht :/
15:09 <DuDE_> ja, macht osc build auch so, eigentlich, allerdings weiss es dann die noetigen Datein aus dem buildinfo (version, release)
15:09 <darix> man kann auf dem backend alle rpms listen lassen


 % osc addremove
A    .swp


Right now, a package must exist in the bs so that it can be built
locally. But this is a bug in osc which I'm going to fix at some point
in time.


editmeta:
Ah, or rather osc _thought_ it was unmodified because it uses a simple 
timestamp to compare the file with. This is basically suitable for 
humans editing, because they need more than a second... I can change
that to a real comparison. Meanwhile, you can add a small sleep ;)

On the other hand, it would be even nicer if there would be a facility 
that wouldn't require you to work around with an EDITOR script at all. 
Noted in the todo.


copypac:
put the current release number into the spec file before sending it

show request body of 400 responses (bad request)



a merge issues:
if I mark a file as "to be added" ("A"), and someone else alread adds (and
commits) the file in between, and I update -- will I get it marked as "D" after update??
D    apr_dbd_mysql.c
M    libapr-util1.spec



in the unusual event that a log file should be there (due to status "building"), but there is none, fail gracefully.
 % osc log openSUSE_10.2 i586
Error: can't get 'https://api.opensuse.org/result/X11:xfce/openSUSE_10.2/xfprint/i586/log?nostream=1&start=0'
HTTP Error 404: Not Found


with no repos defined:
 % osc prjresults
Traceback (most recent call last):
  File "/usr/bin/osc", line 7, in <module>
    commandline.main()
  File "/usr/lib/python2.5/site-packages/osc/commandline.py", line 1072, in main
    cmd(args)
  File "/usr/lib/python2.5/site-packages/osc/commandline.py", line 738, in prjresults
    print '\n'.join(get_prj_results(project))
  File "/usr/lib/python2.5/site-packages/osc/core.py", line 1192, in get_prj_results
    for node in root.find('packstatuslist'):
TypeError: 'NoneType' object is not iterable



19:08 < Beineri> DuDE: can you add an option to "up" which moves instead overwriting a file if it has changed in the repository?
19:08 < darix> Beineri: moves?
19:08 < darix> oO
19:08 < darix> Beineri: use case?
19:09 < Beineri> darix: I want to see what changed when updating (we miss notification and history if you didn't notice). so I want to run "diff foo.myversion foo"
19:09 < darix> Beineri: we have a history?
19:09 < darix> Beineri: you should rtfm the api docs before claiming stuff!:p
19:10 < Beineri> darix: trying to turn around my words?
19:10 < darix> Beineri: no
19:10 < darix> just correcting wrong statements.
19:10 < DuDE> Beineri: doesn't sound too useful
19:10 < Beineri> darix: what's wrong with "we miss history"?
19:10 < DuDE> it's deviating too much from the normal usecase
19:10 < DuDE> which is, merging upstream changes in
19:10 < DuDE> Beineri: but I have a better idea, I think
19:11 < DuDE> Beineri: something that I miss in svn very much
19:11 < Beineri> DuDE: it still shall merge, but make a copy of my version before :-)
19:11 < darix> GET http://api.opensuse.org/source/<project>/<package>/<filename>
19:11 < DuDE> Beineri: you mean, keep a fool.mine file in any case?
19:11 < darix> GET http://api.opensuse.org/source/<project>/<package>/<filename>?rev=1234
19:11 < DuDE> Beineri: what I miss badly, is a command to see upstream changes
19:11 < DuDE> Beineri: such as the good old cvs status
19:12 < DuDE> Beineri: which showed the status of the files on the server
19:12 < Beineri> DuDE: status is not enough, I want to see what changed :-)
19:12 < DuDE> Beineri: I mostly want to know what I have to expect, before up'ping and merging
19:12 < DuDE> Beineri: yes, I also want to see that
19:12 < DuDE> Beineri: some kind of osc updiff
19:13 < DuDE> Beineri: would that help?
19:13 < darix> .oO( i smell nice race conditions^^ )o
19:13 < DuDE> Beineri: sorry, I just recognize that you asked for an option
19:13 < DuDE> Beineri: that's of course always an option
19:14 < DuDE> Beineri: surely
19:14 < Beineri> DuDE: that would help, yes. "my" stuff I could for now do with a wrapper :-)
19:15 < Beineri> darix: and that's how useful without osc/web-frontend support?




when can this happen?
 % osc up
checking out new package t
A    home:poeml/t
A    home:poeml/t/foo
At revision 16.
At revision 9.
D    bar1
Traceback (most recent call last):
  File "/suse/poeml/bin/osc", line 7, in ?
    commandline.main()
  File "/suse/poeml/osc-stable/osc/commandline.py", line 1072, in main
    cmd(args)
  File "/suse/poeml/osc-stable/osc/commandline.py", line 572, in update
    if state == 'M' and p.findfilebyname(filename).md5 == oldp.findfilebyname(filename).md5:
AttributeError: 'NoneType' object has no attribute 'md5'
[1]    11871 exit 1     osc up


21:05 <darix> ping
21:30 <DuDE_> pong
21:31 <darix> osc updatepac... sollte nicht fehlschlagen wenn das rpm anders heisst als das package verzeichnis
21:31 <darix> :p



18:48 <darix> darix@hydrogen:~/osc/server:http/GeoIP> osc results
18:48 <darix> Traceback (most recent call last):
18:48 <darix>   File "/usr/bin/osc", line 7, in <module>
18:48 <darix>     commandline.main()
18:48 <darix>   File "/usr/lib64/python2.5/site-packages/osc/commandline.py", line 1077, in main
18:48 <darix>     cmd(args)
18:48 <darix>   File "/usr/lib64/python2.5/site-packages/osc/commandline.py", line 719, in results
18:48 <darix>     print '\n'.join(get_results(project, package))
18:48 <darix>   File "/usr/lib64/python2.5/site-packages/osc/core.py", line 1169, in get_results
18:48 <darix>     rmap['status'] += ': ' + statusnode.find('details').text
18:48 <darix> AttributeError: 'NoneType' object has no attribute 'text'


21:49 < darix> DuDE: osc editmeta
21:49 < darix> the template is stupid
21:49 < darix> it now has "your_name" as project maintainer
21:50 < darix> that requires you to edit the line everytime when creating a new package
21:50 < DuDE> hm, can't find that
21:50 < DuDE> is that the exact string?
21:52 < DuDE> ah, I find your_username
21:52 < darix> DuDE: http://rafb.net/p/TgxmfB83.txt
21:54 < DuDE> I think that was filled in the past
21:54 < DuDE> since the user account data is now stored in the config per api server, the (in the config) global user/passwd is no longer used otherwise, so it shows the default

-> hits also in edit_user()
