As of the 2010.2 release, you can use p4 annotate -I to do a "deep annotate" right in the server! Read all about it here.
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.
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.
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 ) 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.
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.
<Category:Perforce>
As of the 2010.2 release, you can use **p4 annotate -I** to do a "deep annotate" right in the server! [Read all about it here.](http://www.perforce.com/blog/101213/p4-annotate-i-going-deeper) ### 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](Rollback "wikilink"), 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 ) 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. <Category:Perforce>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 13792 | Lester Cheung | Archive of wiki.workshop.perforce.com in raw (mediawiki) and markdown formats. |