{{Antiquated}} As of the 2010.2 release, you can use '''p4 annotate -I''' to do a "deep annotate" right in the server! [http://www.perforce.com/blog/101213/p4-annotate-i-going-deeper Read all about it here.] {{Project | DeepAnnotate | curator=Sam Stafford | path=//guest/sam_stafford/deepannotate/ | download=//guest/sam_stafford/deepannotate/bin.ntx86/deepannotate.exe | license=PPL | language=C/C++ }} [[Category:Perforce]] ===About this project=== DeepAnnotate is a first attempt at combining '''p4 annotate''' output with integration history to produce a record of when each edit was originally introduced and in what codeline. Like [[Rollback]], it is designed to easily hook into applications that use the Perforce C++ API. ===Command line usage=== deepannotate [-aq] file The output produced is identical to that of '''p4 annotate''', except that revisions are always reported as changelists, and may not pertain directly to the starting file. The '''-a''' and '''-q''' options work exactly like the ones passed to '''p4 annotate'''. === API usage === The "deepannotate" command can be executed in a P4API application almost exactly as if it were a normal server-side command by instantiating a DeepAnnotate object (declared in {{DepotBrief|//guest/sam_stafford/deepannotate/DeepAnnotate.h}}) and calling the following function: void DeepAnnotate::Run( ClientApi* c, ClientUser* ui, int argc, char** argv ); This function call behaves very much like a call to ClientApi::Run(). It requires that the supplied ClientApi object have an initialized connection (as before a normal Run()), and all of the output from the command will be passed back through the supplied ClientUser. If the "tag" protocol is enabled on the ClientApi, output will be passed back in tagged form via OutputStat() as with most server commands. === Work in progress === The logic used to connect lines to one another is a bit convoluted and still a work in progress. Feel free to email me or leave a note on the talk page if you have questions or ideas for improvement. ==== To do ==== * Add support for -d whitespace flags. * Add file paths to tagged output. * Try to simplify the more tangled bits of code. {{RecentChanges|//guest/sam_stafford/deepannotate/}} {{License|PPL|2008|Sam Stafford}} {{Sam Stafford}}