找到最初在Subversion中添加文件的有效方法

时间:2013-04-24 10:03:02

标签: java svn svnkit

有没有一种有效的方法可以以编程方式找出,谁最初在Subversion中添加了一个文件,而不是手动解析历史记录?最好使用SVNKit Java Library或命令行。

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

解析输出的问题是重命名。例如,如果修订版10中的文件startet为myfile.txt并且在修订版12中重命名为myFancyFile.txt,则我需要修订版10中的原作者。

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

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

1 个答案:

答案 0 :(得分: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(对于重命名的文件),并从第一个报告的版本中获取所需的信息。

如果您需要许多文件的信息(据我从上一句中了解),您也可以考虑运行日志并从那里获取信息。