sscm.rb

Summary
Copyright © 2007 Katherine Rhodes (masu.nosp@m.komi@masuko.nosp@m.mi.org)
MIT License
The todo notes have been moved to the TODO.html file.
Manages user interaction and tells the current SCMs what actions to perform.
Sets up everything SSCM will need to do it’s run
Iterates over the array of status lines SSCM was initialized with and passes them off to the appropriate scm line processor.
Asks the user if they want to add a newly discovered file.
Asks the user if they’d like to keep the changes, roll back to the previous version, or do nothing.
When a user responds with something that wasn’t expected this is called to let them know
Commits your changes with a short message to all the SCMs that support such an operation
Tags the repos with your message

Copyright

Copyright © 2007 Katherine Rhodes (masu.nosp@m.komi@masuko.nosp@m.mi.org)

License

MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Docs

For basic FAQ questions please see: http://dnp.masukomi.org

TODO

The todo notes have been moved to the TODO.html file.  NOTES: Throughout this code (D)SCM is used to refer to (Distributed) Source Control Manager

SSCMRunner

Manages user interaction and tells the current SCMs what actions to perform.

Summary
Sets up everything SSCM will need to do it’s run
Iterates over the array of status lines SSCM was initialized with and passes them off to the appropriate scm line processor.
Asks the user if they want to add a newly discovered file.
Asks the user if they’d like to keep the changes, roll back to the previous version, or do nothing.
When a user responds with something that wasn’t expected this is called to let them know
Commits your changes with a short message to all the SCMs that support such an operation
Tags the repos with your message

Functions

initialize

def initialize()

Sets up everything SSCM will need to do it’s run

Parameters

status_linesAn array of status output lines
scmsAn array of scms to work with
default_scmThe default SCM to use as a reference point
less_mind_numbing(true / false) by default it will ask you if you want to keep uncommitted adds made previously.
quiet(true / false) if true this will hide the more verbose output.  The default is to show it.

process_lines

def process_lines(status_lines,
default_scm)

Iterates over the array of status lines SSCM was initialized with and passes them off to the appropriate scm line processor.

Parameters

status_linesthe array of status lines SSCM was initialized with
default_scmThe scm that should be used to process these lines.  Theoretically this is the same one that created them.

process_add

def process_add(file_path)

Asks the user if they want to add a newly discovered file.  If so it will be marked for addition in their scm and Perforce.

Parameters

file_paththe path to the newly discovered file

process_modify

def process_modify(file_path)

Asks the user if they’d like to keep the changes, roll back to the previous version, or do nothing.

Parameters

file_paththe path to the modified file
scmA symbol representing the SCM system to use

unknown_response_notice

def unknown_response_notice(response)

When a user responds with something that wasn’t expected this is called to let them know

Parameters

responseThe unexpected thing the user entered.

commit

def commit(message)

Commits your changes with a short message to all the SCMs that support such an operation

Parameters

messageThe commit message to use.

tag

def tag(message)

Tags the repos with your message

Parameters

messageThe message to tag the repos with.
def initialize()
Sets up everything SSCM will need to do it’s run
def process_lines(status_lines,
default_scm)
Iterates over the array of status lines SSCM was initialized with and passes them off to the appropriate scm line processor.
def process_add(file_path)
Asks the user if they want to add a newly discovered file.
def process_modify(file_path)
Asks the user if they’d like to keep the changes, roll back to the previous version, or do nothing.
def unknown_response_notice(response)
When a user responds with something that wasn’t expected this is called to let them know
def commit(message)
Commits your changes with a short message to all the SCMs that support such an operation
def tag(message)
Tags the repos with your message