Friday, February 03, 2006

Finding and un-removing files that I did a 'cvs remove' on yesterday

Last July, I posted a bash shell script called 'cvsrecent.bsh', the purpose of which was "to get a list of CVS revisions and log messages for all checkins within the past (some number) of days."

I've continued to use this script, to this day, but I found a shortcoming this morning that I hadn't noticed before. It doesn't find files that have been removed from your working directory or the repository. I removed some files from my working directory and did 'cvs remove' on them yesterday, and today I decided I need to undo that.

So, I wrote a set of commands to find and check out the last version of all files that were deleted some number of days ago. Here are the components I used:

First, a bash function to get previous revision of a file:
function cvsprev()
{
  cvs -q log $@ |     grep "^revision " |     head -2 |     tail -1 |     cut -f2 -d" "
}


Next, a bash function to get the date for some number of days ago, and format it the way cvs likes it:
function getdaysagodate()
{
  date --date="$1 days ago" +"%Y-%m-%d"
}


Finally, here's the set of commands I used to:

  1. find all the files that CVS put in the "Attic" some number of days ago (in my case, I used 1 (one) since I removed the files yesterday).
  2. for each file:
    1. get the full working-directory path
    2. find the last revision number, before it was removed
    3. do a 'cvs update -r' to check out the last version of the file
for f in  `cvs -Q log -SNd ">=$(getdaysagodate 1)" |  grep -A1 Attic |  sed -e "s/^.*Attic.*$//"    -e "s/^\-\-$//"    -e "s/Working file: //"`; 
do cvs update -r `cvsprev $f` $f; 
done


Another command could be added to check those files back into CVS automatically, but I wasn't 100% certain that I wanted to check all of them back in. I mainly just wanted to find them, and look at them. Maybe sometime I'll update the cvsrecent.bsh script, so it can handle files that have been removed. At least I'm half-way there after having written these commands today.

Tuesday, December 06, 2005

roundabout connection from my desktop to laptop

hahaha, talk about overkill...

I'm connecting to my laptop from my desktop PC (sitting right next to each other), but it's quite a roundabout way...

- Laptop is wirelessly connecting to router #1
- Desktop is plugged into wireless router #2 (with sveasoft firmware, configured to act as a bridge to router #1)
- Both machines are connected to my company's VPN.

and yet I think that's what I have to do in order to connect from desktop to laptop, and maintain the network environment I need right now. hehe

Thursday, December 01, 2005

Windows XP cmd.exe file/directory name completion

In Windows XP, to enable/customize CMD.EXE file/directory name completion, open REGEDIT and go to this key:

HKEY_CURRENT_USER\Software\Microsoft\Command Processor

Here's some info on the values that may be present, and my own settings.

Value NameValue TypeDefaultMy Setting
CompletionCharREG_DWORD0x06 (Ctrl-F)0x09 (TAB)
PathCompletionCharREG_DWORD0x04 (Ctrl-D)0x09 (TAB)
EnableExtensionsREG_DWORD[not sure]0x01