有没有一种有效的方法可以以编程方式找出,谁最初在Subversion中添加了一个文件,而不是手动解析历史记录?最好使用SVNKit Java Library或命令行。
我已将最新版本签出到工作副本中。 svn info
向我提供了我需要的所有其他信息,但不是最初的作者(我的意思是,谁在文件上运行了svn add
)。
解析输出的问题是重命名。例如,如果修订版10中的文件startet为myfile.txt
并且在修订版12中重命名为myFancyFile.txt
,则我需要修订版10中的原作者。
我不需要有关已删除文件或文件夹的任何信息,仅需要有关当前工作副本中存在的文件的信息。感谢
为什么我这样做?我们从文件中提取元数据,我需要知道谁最初检查了文件。该报告每晚都会生成。
答案 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
(对于重命名的文件),并从第一个报告的版本中获取所需的信息。
如果您需要许多文件的信息(据我从上一句中了解),您也可以考虑运行日志并从那里获取信息。