3

除了手动解析历史记录之外,是否有一种有效的方式以编程方式找出谁最初在 Subversion 中添加了文件?最好使用 SVNKit Java 库或在命令行上。

我已将最新版本签出到工作副本中。svn info给了我我需要的所有其他信息,但不是最初的作者(我的意思是,谁svn add在文件上运行)。

解析输出的问题是重命名。例如,如果文件 startet 与第myfile.txt10 版一样,并myFancyFile.txt在第 12 版中重命名,我仍然需要第 10 版中的原作者。

我不需要有关已删除文件或文件夹的任何信息,只需要我当前工作副本中存在的文件。谢谢

我为什么要这样做?我们正在从文件中提取元数据,我需要知道谁最初签入了文件。该报告每晚生成。

4

1 回答 1

1

.svn/wc.db不包含有关节点创建属性的信息,因为查看数据库显示:

sqlite> .schema nodes
CREATE TABLE NODES ( wc_id  INTEGER NOT NULL REFERENCES WCROOT (id), local_relpath  TEXT NOT NULL, op_depth INTEGER NOT NULL,   parent_relpath  TEXT, repos_id  INTEGER REFERENCES REPOSITORY (id), repos_path  TEXT, revision  INTEGER, presence  TEXT NOT NULL, moved_here  INTEGER, moved_to  TEXT, kind  TEXT NOT NULL, properties  BLOB, depth  TEXT, checksum  TEXT, symlink_target  TEXT,   changed_revision  INTEGER, changed_date INTEGER, changed_author TEXT, translated_size  INTEGER, last_mod_time  INTEGER, dav_cache  BLOB, file_external  TEXT, PRIMARY KEY (wc_id, local_relpath, op_depth) );

因此,您需要查询存储库

对于 SVNKit,我会在这里使用SVNRepository#getFileRevisions和/或SVNRepository#getLocations(对于重命名的文件)并从第一个报告的修订版中获取所需的信息。

如果您需要许多文件的信息(正如我从您的最后一句话中理解的那样),您也可以考虑遍历日志并从那里获取信息。

于 2013-04-24T10:11:32.053 回答