I have a fairly substantial Python project that I have developed as an educational endeavor.  The version of the code that shall be given to students has exercises throughout, in the form of code that I have deleted and replaced with an exception.  To be specific:    def mk_eq_term(i):        # raise ExerciseError(BitBlaster::bitblast_EQ_Core)        return PL.And(val,PL.Iff(le.bits[i],re.bits[i]))The last line is the real code; the second line is what shall be in the code given to students, once un-commented.  I am not an expert on version control (in fact, at present, I do not use revision control), but my reading on the subject indicates that this use case is suboptimal.  It seems like I will have to maintain two separate branches, and that any change I make against the production version will need to be reconciled against the educational version, even though I do not expect or intend to make changes to the codebase that will modify the exercise solutions.What is the best solution for maintaining something like this?
Version control for code that contains student exercises
python;version control