Build a utility to interact with TFS.
Review Request #8303 — Created July 20, 2016 and submitted
The "tf" command that ships with Team Explorer Everywhere is pretty good, but
it is missing some functionality that we'd like. Most notably, there's no way
to get the content of files within a shelveset without unshelving it. That
means that in order to be able to post shelvesets, we need our own adapter.
This change is the beginnings of such an adapter, using the TFS SDK for Java.Because we have such an adapter now, we can make it do exactly what we need for
interacting with TFS, which dramatically reduces the number of times it needs
to be called. This is good because each time it is called, we have to spin up
the whole JRE.I've written this using a modular command format with individual commands for
each of the steps we have. These steps are:
- Verify the workspace and get the URL of the collection.
- Parse a given revision spec (with zero, one, or two "revisions" specified).
This converts those revisions into either numeric changesets or special
internal keys representing either the working copy or a shelveset. - Do a diff based on the parsed revisions. Diffs are currently implemented for
the working directory and shelvesets. I haven't yet implemented diffs for
committed revisions, because that's somewhat more complex, but the existing
tf.cmd-based implementation doesn't do it either.
This does not yet handle rbtools' -I and -X flags.
Used this to post pending and shelved changes.
Description | From | Last Updated |
---|---|---|
Looks like you meant to have an itemized list of some sort in the description. A bunch of line are … |
chipx86 | |
Well over 80 chars. We should probably keep the line length limits. |
chipx86 | |
Probably here too. |
chipx86 | |
In JavaScript, we have these align. Should probably be consistent with that. |
chipx86 | |
Might be nice to flesh this out, saying what needs to be done a bit? |
chipx86 | |
We should probably stick with the standard multi-line format we have for the doc comments and that we use in … |
chipx86 | |
Same as above with alignment. |
chipx86 | |
Just to check, only SHELVESET_PREFIX needs a colon? |
chipx86 |
-
I don't have a lot to say about the logic, as I don't really know how the pieces fit together so well. I mostly have stylistic comments designed to keep us in sync with other similar code (JavaScript, in particular) that we write.
-
Looks like you meant to have an itemized list of some sort in the description. A bunch of line are pretty squashed together.
-
-
-
-
-
We should probably stick with the standard multi-line format we have for the doc comments and that we use in JavaScript.
-
-
- Description:
-
The "tf" command that ships with Team Explorer Everywhere is pretty good, but
it is missing some functionality that we'd like. Most notably, there's no way to get the content of files within a shelveset without unshelving it. That means that in order to be able to post shelvesets, we need our own adapter. This change is the beginnings of such an adapter, using the TFS SDK for Java. Because we have such an adapter now, we can make it do exactly what we need for
interacting with TFS, which dramatically reduces the number of times it needs to be called. This is good because each time it is called, we have to spin up the whole JRE. I've written this using a modular command format with individual commands for
each of the steps we have. These steps are: ~ Verify the workspace and get the URL of the collection.
~ Parse a given revision spec (with zero, one, or two "revisions" specified). ~ This converts those revisions into either numeric changesets or special ~ - Verify the workspace and get the URL of the collection.
~ - Parse a given revision spec (with zero, one, or two "revisions" specified).
This converts those revisions into either numeric changesets or special
internal keys representing either the working copy or a shelveset.
~ - Do a diff based on the parsed revisions. Diffs are currently implemented for
the working directory and shelvesets. I haven't yet implemented diffs for
committed revisions, because that's somewhat more complex, but the existing
tf.cmd-based implementation doesn't do it either.
- internal keys representing either the working copy or a shelveset. - Do a diff based on the parsed revisions. Diffs are currently implemented for - the working directory and shelvesets. I haven't yet implemented diffs for - committed revisions, because that's somewhat more complex, but the existing - tf.cmd-based implementation doesn't do it either. This does not yet handle rbtools' -I and -X flags.
- Commit:
-
31b595a2740212c8e27a0402ce100f956420dd64a3aeb6e9439febee3b54af8badcead3751e8558f
-
Tool: PEP8 Style Checker Ignored Files: build.xml log4j.properties org/reviewboard/tfs/Application.java ivysettings.xml ivy.xml org/reviewboard/tfs/Command.java org/reviewboard/tfs/CommandGetCollection.java org/reviewboard/tfs/Revision.java org/reviewboard/tfs/CommandParseRevision.java org/reviewboard/tfs/TFSDiffer.java org/reviewboard/tfs/CommandDiff.java org/reviewboard/tfs/TFSCollection.java Tool: Pyflakes Ignored Files: build.xml log4j.properties org/reviewboard/tfs/Application.java ivysettings.xml ivy.xml org/reviewboard/tfs/Command.java org/reviewboard/tfs/CommandGetCollection.java org/reviewboard/tfs/Revision.java org/reviewboard/tfs/CommandParseRevision.java org/reviewboard/tfs/TFSDiffer.java org/reviewboard/tfs/CommandDiff.java org/reviewboard/tfs/TFSCollection.java