我最近将一个方法从一个类/文件移动到另一个类/文件,以便我可以重用它。现在,如果我责怪subversion,我负责所有代码行,这是因为我创建了一个新文件。
有没有办法让subversion识别该方法的来源,以便历史记录保持不变?
答案 0 :(得分:6)
如果您将功能从一个现有文件移动到另一个现有文件,我认为简短的回答是“它无法完成”。如果您将函数从现有文件移动到新文件,即您创建新文件只是为了保存此函数(可能添加其他内容,但从此函数开始),那么您可以复制该文件,从中删除该函数原始,并从副本中删除除功能以外的所有内容。然后原件和副本都会保留历史记录。
答案 1 :(得分:1)
否 - 历史记录是每个文件。 Subversion只知道它是一个充满文本的文件;它不解析文本以理解它是什么。
答案 2 :(得分:1)
如果您确实希望保持历史记录不变,可以使用svn cp
创建一个副本,然后单独编辑。
但是,我从来没有这样做过,也不认为我会这样做。我会做这样的事情的唯一原因是对于一个完全拆分成文件的文件,而不是一个从一个文件移动到另一个文件的方法。
相反,我会使用一个有意义的检查评论:类似“通过从巴兹提取条形图创建的foo”
答案 3 :(得分:1)
历史 - 你的意思是“每行”的历史,比如“svn blame”?
添加评论:
/** Moved from {@link OldClass}. */
并确保在同一版本中签入两个类(新旧)。如果有人真正关心他们可以阅读评论并“责备”旧班。