Monday, February 27, 2012

cvs-status: Display a CVS checkout in svn status format

I'm quite easily distracted, so I often leave uncommitted changes hanging around in my CVS checkout. I needed a way to easily detect when I have done this so I can pick up where I left off or revert the changes.

However, CVS does not seem to have a nice compact command for displaying the status of files in a checkout like SVN or git do. cvs status is way too verbose, and the network latency makes it slow.

Portage has a nice little module called "cvstree" that it uses to parse the CVS/Entries files directly and generates a convenient data structure in memory.

So, I wrote a little wrapper that produces output in the style of the svn status command:

cvs-status
#!/usr/bin/env python

from __future__ import print_function
from portage import cvstree

myentries = cvstree.getentries(mydir=".", recursive=1)

mynew     = cvstree.findnew(entries=myentries, recursive=1)
mychanged = cvstree.findchanged(entries=myentries, recursive=1)
mymissing = cvstree.findmissing(entries=myentries, recursive=1)
myunadded = cvstree.findunadded(entries=myentries, recursive=1)
myremoved = cvstree.findremoved(entries=myentries, recursive=1)

for x in mynew:
        print('A      ', x)

for x in mychanged:
        print('M      ', x)

for x in mymissing:
        print('!      ', x)

for x in myunadded:
        print('?      ', x)

for x in myremoved:
        print('D      ', x)

This produces output like this:

floppym@naomi gentoo-x86 % cvs-status
!       net-p2p/freenet/files/freenet.old
?       .ebuild.x
?       metadata/herds.xml
?       profiles/use.local.desc

That first entry is actually a small bug in the cvstree module: it does not handle the case where an ignored file is actually under version control.

Maybe some of my fellow devs will find this useful.

4 comments:

  1. Oh you were so right, thanks for the script.

    justin

    ReplyDelete
  2. PG SLOT ทุนน้อยก็รวยได้ แม้ว่าคุณจะมีทุนน้อย แต่อยากเล่นเกมสล็อตออนไลน์นั่นไม่อยาก​เลย เพราะในแต่รายการใช้เงินลงทุนน้อยมากถึงมากที่สุด พีจีสล็อต ไม่ต้องลงทุนเยอะก็มีโอกาสรวยได้

    ReplyDelete
  3. pg joker ศูนย์รวมค่ายเกมสล็อต คาสิโนที่ดินพวกเราคัดสรรค์มาให้ท่านแล้วที่นี้ พีจี มากไปกว่านั้นเป็น 1 ยูสสามารถเข้าเล่นได้ทุกค่ายในเว็บไซต์ไม่จำกัดพร้อมแอดไม่นดูแลตลอดๆ

    ReplyDelete
  4. ak88bet เป็นคาสิโนออนไลน์ที่เหมาะสมที่สุดเป็นต้นฉบับและไม่ได้ก็อปปี้ มาจากเว็บอื่น พร้อมสัมผัสควา มสนุกสุดมันส์ กับ เกมที่น่าตื่นเต้น และได้ เงินกับ pg slot-th.com แตกง่ายได้เงินจริง

    ReplyDelete