// // aegis - project change supervisor // Copyright (C) 2004-2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #include #include // for assert #include #include project_ty * project_ty::bind_branch(change::pointer cp) { assert(cp->pp == this); project_ty *pp = 0; trace(("project_ty::bind_branch(this = %08lX, cp = %08lX)\n{\n", (long)this, (long)cp)); trace(("name = \"%s\"\n", name->str_text)); trace(("cp->number = %ld\n", cp->number)); if (cp->number == TRUNK_CHANGE_NUMBER) { trace(("no need to be clever\n")); assert(!parent); pp = project_copy(this); } else { // punctuation? string_ty *project_name = str_format ( "%s.%ld", name->str_text, magic_zero_decode(cp->number) ); trace(("name = \"%s\"\n", project_name->str_text)); pp = project_alloc(project_name); // // FIXME: this method has the WRONG name - it sould be // project_ty::create_branch so that project_ty::bind_branch can // be used for this else clause. // pp->up = get_user(); pp->uid = uid; pp->gid = gid; pp->parent = project_copy(this); pp->parent_bn = cp->number; pp->pcp = cp; pp->changes_path = str_format("%s.branch", change_path_get(cp->number)->str_text); trace(("change path = \"%s\"\n", pp->changes_path->str_text)); } trace(("return %08lX;\n", (long)pp)); trace(("}\n")); return pp; }