Browse Source

Delete the iplog generator

It stopped working when we moved to the Eclipse foundation's Gerrit
server since it doesn't use the Gerrit internal user store but LDAP.
Instead, since 2.0, we use the Eclipse foundation's automatic IP log
generator [1] to generate IP logs for releasing jgit and egit.

[1] http://www.eclipse.org/projects/ip_log_selector.php

Change-Id: I98dc65efb62909bc0258e6c680df0c93a57e9677
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-2.3
Matthias Sohn 12 years ago
parent
commit
850e5bc24e
  1. 8
      org.eclipse.jgit.iplog/.classpath
  2. 2
      org.eclipse.jgit.iplog/.gitignore
  3. 34
      org.eclipse.jgit.iplog/.project
  4. 3
      org.eclipse.jgit.iplog/.settings/org.eclipse.core.resources.prefs
  5. 3
      org.eclipse.jgit.iplog/.settings/org.eclipse.core.runtime.prefs
  6. 393
      org.eclipse.jgit.iplog/.settings/org.eclipse.jdt.core.prefs
  7. 61
      org.eclipse.jgit.iplog/.settings/org.eclipse.jdt.ui.prefs
  8. 4
      org.eclipse.jgit.iplog/.settings/org.eclipse.mylyn.tasks.ui.prefs
  9. 3
      org.eclipse.jgit.iplog/.settings/org.eclipse.mylyn.team.ui.prefs
  10. 94
      org.eclipse.jgit.iplog/.settings/org.eclipse.pde.api.tools.prefs
  11. 3
      org.eclipse.jgit.iplog/.settings/org.eclipse.pde.core.prefs
  12. 23
      org.eclipse.jgit.iplog/META-INF/MANIFEST.MF
  13. 54
      org.eclipse.jgit.iplog/README
  14. 59
      org.eclipse.jgit.iplog/about.html
  15. 6
      org.eclipse.jgit.iplog/build.properties
  16. 2
      org.eclipse.jgit.iplog/plugin.properties
  17. 103
      org.eclipse.jgit.iplog/pom.xml
  18. 17
      org.eclipse.jgit.iplog/resources/org/eclipse/jgit/iplog/IpLogText.properties
  19. 164
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/CQ.java
  20. 130
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/CSV.java
  21. 206
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Committer.java
  22. 100
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Contributor.java
  23. 320
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IPZillaQuery.java
  24. 634
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java
  25. 241
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java
  26. 79
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogText.java
  27. 134
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Project.java
  28. 124
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/SimpleCookieManager.java
  29. 99
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/SingleContribution.java
  30. 22
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/gsql_query.txt
  31. 2
      org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/sample_gerrit_committers
  32. 7
      org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
  33. 6
      org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
  34. 2
      org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
  35. 2
      org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin
  36. 6
      org.eclipse.jgit.pgm/pom.xml
  37. 6
      org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties
  38. 1
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java
  39. 121
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java
  40. 99
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Ipzilla.java
  41. 6
      org.eclipse.jgit.test/pom.xml
  42. 6
      org.eclipse.jgit.test/tst/org/eclipse/jgit/nls/RootLocaleTest.java
  43. 1
      pom.xml

8
org.eclipse.jgit.iplog/.classpath

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

2
org.eclipse.jgit.iplog/.gitignore vendored

@ -1,2 +0,0 @@
/bin
/target

34
org.eclipse.jgit.iplog/.project

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.eclipse.jgit.iplog</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
</natures>
</projectDescription>

3
org.eclipse.jgit.iplog/.settings/org.eclipse.core.resources.prefs

@ -1,3 +0,0 @@
#Mon Aug 11 16:46:12 PDT 2008
eclipse.preferences.version=1
encoding/<project>=UTF-8

3
org.eclipse.jgit.iplog/.settings/org.eclipse.core.runtime.prefs

@ -1,3 +0,0 @@
#Mon Mar 24 18:55:50 EDT 2008
eclipse.preferences.version=1
line.separator=\n

393
org.eclipse.jgit.iplog/.settings/org.eclipse.jdt.core.prefs

@ -1,393 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.doc.comment.support=enabled
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=warning
org.eclipse.jdt.core.compiler.problem.comparingIdentical=error
org.eclipse.jdt.core.compiler.problem.deadCode=error
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
org.eclipse.jdt.core.compiler.problem.nullReference=error
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=warning
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedImport=error
org.eclipse.jdt.core.compiler.problem.unusedLabel=error
org.eclipse.jdt.core.compiler.problem.unusedLocal=error
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_assignment=0
org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
org.eclipse.jdt.core.formatter.blank_lines_after_package=1
org.eclipse.jdt.core.formatter.blank_lines_before_field=1
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
org.eclipse.jdt.core.formatter.blank_lines_before_method=1
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
org.eclipse.jdt.core.formatter.blank_lines_before_package=0
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
org.eclipse.jdt.core.formatter.comment.format_block_comments=true
org.eclipse.jdt.core.formatter.comment.format_comments=true
org.eclipse.jdt.core.formatter.comment.format_header=false
org.eclipse.jdt.core.formatter.comment.format_html=true
org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
org.eclipse.jdt.core.formatter.comment.format_line_comments=true
org.eclipse.jdt.core.formatter.comment.format_source_code=true
org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
org.eclipse.jdt.core.formatter.comment.line_length=80
org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
org.eclipse.jdt.core.formatter.compact_else_if=true
org.eclipse.jdt.core.formatter.continuation_indentation=2
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_empty_lines=false
org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
org.eclipse.jdt.core.formatter.indentation.size=4
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
org.eclipse.jdt.core.formatter.join_lines_in_comments=true
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
org.eclipse.jdt.core.formatter.lineSplit=80
org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
org.eclipse.jdt.core.formatter.tabulation.char=tab
org.eclipse.jdt.core.formatter.tabulation.size=4
org.eclipse.jdt.core.formatter.use_on_off_tags=true
org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

61
org.eclipse.jgit.iplog/.settings/org.eclipse.jdt.ui.prefs

@ -1,61 +0,0 @@
eclipse.preferences.version=1
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
formatter_profile=_JGit Format
formatter_settings_version=12
org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;org;com;
org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.staticondemandthreshold=99
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/>
sp_cleanup.add_default_serial_version_id=true
sp_cleanup.add_generated_serial_version_id=false
sp_cleanup.add_missing_annotations=false
sp_cleanup.add_missing_deprecated_annotations=true
sp_cleanup.add_missing_methods=false
sp_cleanup.add_missing_nls_tags=false
sp_cleanup.add_missing_override_annotations=true
sp_cleanup.add_missing_override_annotations_interface_methods=false
sp_cleanup.add_serial_version_id=false
sp_cleanup.always_use_blocks=true
sp_cleanup.always_use_parentheses_in_expressions=false
sp_cleanup.always_use_this_for_non_static_field_access=false
sp_cleanup.always_use_this_for_non_static_method_access=false
sp_cleanup.convert_to_enhanced_for_loop=false
sp_cleanup.correct_indentation=false
sp_cleanup.format_source_code=true
sp_cleanup.format_source_code_changes_only=true
sp_cleanup.make_local_variable_final=false
sp_cleanup.make_parameters_final=false
sp_cleanup.make_private_fields_final=true
sp_cleanup.make_type_abstract_if_missing_method=false
sp_cleanup.make_variable_declarations_final=false
sp_cleanup.never_use_blocks=false
sp_cleanup.never_use_parentheses_in_expressions=true
sp_cleanup.on_save_use_additional_actions=true
sp_cleanup.organize_imports=false
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
sp_cleanup.remove_private_constructors=true
sp_cleanup.remove_trailing_whitespaces=true
sp_cleanup.remove_trailing_whitespaces_all=true
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
sp_cleanup.remove_unnecessary_casts=false
sp_cleanup.remove_unnecessary_nls_tags=false
sp_cleanup.remove_unused_imports=false
sp_cleanup.remove_unused_local_variables=false
sp_cleanup.remove_unused_private_fields=true
sp_cleanup.remove_unused_private_members=false
sp_cleanup.remove_unused_private_methods=true
sp_cleanup.remove_unused_private_types=true
sp_cleanup.sort_members=false
sp_cleanup.sort_members_all=false
sp_cleanup.use_blocks=false
sp_cleanup.use_blocks_only_for_return_and_throw=false
sp_cleanup.use_parentheses_in_expressions=false
sp_cleanup.use_this_for_non_static_field_access=false
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
sp_cleanup.use_this_for_non_static_method_access=false
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true

4
org.eclipse.jgit.iplog/.settings/org.eclipse.mylyn.tasks.ui.prefs

@ -1,4 +0,0 @@
#Tue Jul 19 20:11:28 CEST 2011
eclipse.preferences.version=1
project.repository.kind=bugzilla
project.repository.url=https\://bugs.eclipse.org/bugs

3
org.eclipse.jgit.iplog/.settings/org.eclipse.mylyn.team.ui.prefs

@ -1,3 +0,0 @@
#Tue Jul 19 20:11:28 CEST 2011
commit.comment.template=${task.description} \n\nBug\: ${task.key}
eclipse.preferences.version=1

94
org.eclipse.jgit.iplog/.settings/org.eclipse.pde.api.tools.prefs

@ -1,94 +0,0 @@
#Tue Oct 18 00:52:01 CEST 2011
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
ILLEGAL_EXTEND=Warning
ILLEGAL_IMPLEMENT=Warning
ILLEGAL_INSTANTIATE=Warning
ILLEGAL_OVERRIDE=Warning
ILLEGAL_REFERENCE=Warning
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
INVALID_JAVADOC_TAG=Ignore
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error
LEAK_EXTEND=Warning
LEAK_FIELD_DECL=Warning
LEAK_IMPLEMENT=Warning
LEAK_METHOD_PARAM=Warning
LEAK_METHOD_RETURN_TYPE=Warning
METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
UNUSED_PROBLEM_FILTERS=Warning
automatically_removed_unused_problem_filters=false
eclipse.preferences.version=1
incompatible_api_component_version=Error
incompatible_api_component_version_include_major_without_breaking_change=Disabled
incompatible_api_component_version_include_minor_without_api_change=Disabled
invalid_since_tag_version=Error
malformed_since_tag=Error
missing_since_tag=Error
report_api_breakage_when_major_version_incremented=Disabled
report_resolution_errors_api_component=Warning

3
org.eclipse.jgit.iplog/.settings/org.eclipse.pde.core.prefs

@ -1,3 +0,0 @@
#Thu Jan 14 14:34:32 CST 2010
eclipse.preferences.version=1
resolve.requirebundle=false

23
org.eclipse.jgit.iplog/META-INF/MANIFEST.MF

@ -1,23 +0,0 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.iplog
Bundle-Version: 2.3.0.qualifier
Bundle-Vendor: %provider_name
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: org.eclipse.jgit.diff;version="[2.3.0,2.4.0)",
org.eclipse.jgit.dircache;version="[2.3.0,2.4.0)",
org.eclipse.jgit.errors;version="[2.3.0,2.4.0)",
org.eclipse.jgit.lib;version="[2.3.0,2.4.0)",
org.eclipse.jgit.nls;version="[2.3.0,2.4.0)",
org.eclipse.jgit.revplot;version="[2.3.0,2.4.0)",
org.eclipse.jgit.revwalk;version="[2.3.0,2.4.0)",
org.eclipse.jgit.revwalk.filter;version="[2.3.0,2.4.0)",
org.eclipse.jgit.storage.file;version="[2.3.0,2.4.0)",
org.eclipse.jgit.transport;version="[2.3.0,2.4.0)",
org.eclipse.jgit.treewalk;version="[2.3.0,2.4.0)",
org.eclipse.jgit.treewalk.filter;version="[2.3.0,2.4.0)",
org.eclipse.jgit.util;version="[2.3.0,2.4.0)"
Export-Package: org.eclipse.jgit.iplog;version="2.3.0"

54
org.eclipse.jgit.iplog/README

@ -1,54 +0,0 @@
# -----------------------------------------------------------
# This document describes how to generate the Eclipse ip log
# for the eclipse project technology.jgit using a local clone
# of the git repository
# git://egit.eclipse.org/jgit.git
# starting point is a manually written file
# .eclipse_iplog
# located in the repository's work dir root path
# which is describing the project, see first section of this
# file in the jgit root directory:
# $JGIT_BASE/.eclipse_iplog
# -----------------------------------------------------------
# Prepare:
# jgit executable (assuming jgit mvn build is up to date)
export jgit="~/src/git/jgit/org.eclipse.jgit.pgm/target/jgit"
# repository work dir root path
export WORK_DIR="~/src/git/jgit/"
# cd to repository work dir root path
cd $WORK_DIR
# -----------------------------------------------------------
# Update the CQ list:
# - this command updates file .eclipse_iplog
jgit eclipse-ipzilla
# - if there are any updates 'git commit' them
git add .eclipse_iplog
git commit
# - type in ipzilla user and password
# -----------------------------------------------------------
# Get the committer data from gerrit:
# - start gerrit gsql via ssh
# options:
# -p : ssh port gerrit is listening on
ssh -p 29418 username@egit.eclipse.org gerrit gsql --format PRETTY
# - type in ssh passphrase for your ssh key
# - run the SQL query (cut and paste content to interactive gerrit shell)
# org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/gsql_query.txt
# - copy the query result into the file (no headers, no blank lines):
# $WORK_DIR/.git/gerrit_committers
# -----------------------------------------------------------
# Generate the iplog:
# options:
# -- version : the project version the iplog is to be generated for
# - o : the output file
jgit eclipse-iplog --version=1.3.0 -o $WORK_DIR/jgit-1.3.0.xml

59
org.eclipse.jgit.iplog/about.html

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Eclipse Distribution License - Version 1.0</title>
<style type="text/css">
body {
size: 8.5in 11.0in;
margin: 0.25in 0.5in 0.25in 0.5in;
tab-interval: 0.5in;
}
p {
margin-left: auto;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
p.list {
margin-left: 0.5in;
margin-top: 0.05em;
margin-bottom: 0.05em;
}
</style>
</head>
<body lang="EN-US">
<p><b>Eclipse Distribution License - v 1.0</b></p>
<p>Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. </p>
<p>All rights reserved.</p>
<p>Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
<ul><li>Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer. </li>
<li>Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. </li>
<li>Neither the name of the Eclipse Foundation, Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission. </li></ul>
</p>
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.</p>
</body>
</html>

6
org.eclipse.jgit.iplog/build.properties

@ -1,6 +0,0 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.properties,\
about.html

2
org.eclipse.jgit.iplog/plugin.properties

@ -1,2 +0,0 @@
plugin_name=JGit IP Log Generator
provider_name=Eclipse.org

103
org.eclipse.jgit.iplog/pom.xml

@ -1,103 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2009-2010, Google Inc.
Copyright (C) 2008, Imran M Yousuf <imyousuf@smartitengineering.com>
and other copyright owners as documented in the project's IP log.
This program and the accompanying materials are made available
under the terms of the Eclipse Distribution License v1.0 which
accompanies this distribution, is reproduced below, and is
available at http://www.eclipse.org/org/documents/edl-v10.php
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
- Neither the name of the Eclipse Foundation, Inc. nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior
written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
<version>2.3.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.iplog</artifactId>
<name>JGit - Eclipse IP Log Generator</name>
<description>
Creates an IP log for Git based projects.
</description>
<properties>
<translate-qualifier/>
</properties>
<dependencies>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/</sourceDirectory>
<resources>
<resource>
<directory>.</directory>
<includes>
<include>plugin.properties</include>
<include>about.html</include>
</includes>
</resource>
<resource>
<directory>resources/</directory>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>${bundle-manifest}</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>

17
org.eclipse.jgit.iplog/resources/org/eclipse/jgit/iplog/IpLogText.properties

@ -1,17 +0,0 @@
CQString=CQ {0}
CSVParsingError=CSV parsing error: {0}
cannotLock=Cannot lock {0}
cannotSerializeXML=Cannot serialize XML
cannotWrite=Cannot write {0}
committerString=Committer {0} {1}
configurationFileInCommitHasNoProjectsDeclared=Configuration file {0} in commit {1} has no projects declared.
configurationFileInCommitIsInvalid=Configuration file {0} in commit {1} is invalid
contributorString=Contributor {0}
incorrectlyScanned=Incorrectly scanned {0}
invalidDate=Invalid date: {0}
invalidURIFormat=Invalid URI format: {0}
loginFailed=Login as {0} to {1} failed: {2}
pageTitleWas=page title was "{0}"
projectString=Project {0} ({1})
queryFailed=Query {0} failed: {1}
responseNotHTMLAsExpected=Response not HTML as expected

164
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/CQ.java

@ -1,164 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import static java.lang.Long.valueOf;
import java.text.MessageFormat;
import java.util.Comparator;
/**
* A contribution questionnaire stored in IPzilla.
*
* @see <a href="http://wiki.eclipse.org/IPzilla">IPzilla - Eclipsepedia</a>
* @see <a href="https://dev.eclipse.org/ipzilla/">IPzilla - Login</a>
*/
class CQ {
/** Sorts CQs by their unique number. */
static final Comparator<CQ> COMPARATOR = new Comparator<CQ>() {
public int compare(CQ a, CQ b) {
int cmp = state(a) - state(b);
if (cmp == 0)
cmp = compare(a.getID(), b.getID());
return cmp;
}
private int state(CQ a) {
if ("approved".equals(a.getState()))
return 1;
return 50;
}
private int compare(long a, long b) {
return a < b ? -1 : a == b ? 0 : 1;
}
};
private final long id;
private String description;
private String license;
private String use;
private String state;
private String comments;
/**
* @param id
*/
CQ(final long id) {
this.id = id;
}
/** @return unique id number of the contribution questionnaire. */
long getID() {
return id;
}
/** @return short description of this CQ record. */
String getDescription() {
return description;
}
void setDescription(String description) {
this.description = description;
}
/** @return the license the contribution is under. */
String getLicense() {
return license;
}
void setLicense(String license) {
this.license = license;
}
/** @return how this code is used by the project, e.g. "unmodified binary". */
String getUse() {
return use;
}
void setUse(String use) {
this.use = use;
}
/** @return TODO find out what state is */
String getState() {
return state;
}
void setState(String state) {
this.state = state;
}
/** @return any additional comments about this particular CQ. */
String getComments() {
return comments;
}
void setComments(String comments) {
this.comments = comments;
}
@Override
public int hashCode() {
return (int) getID();
}
@Override
public boolean equals(Object other) {
if (other instanceof CQ) {
return ((CQ) other).getID() == getID();
}
return false;
}
@Override
public String toString() {
return MessageFormat.format(IpLogText.get().CQString, valueOf(getID()));
}
}

130
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/CSV.java

@ -1,130 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.io.BufferedReader;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** A crude CSV file parser. */
class CSV {
private final BufferedReader in;
private List<String> columns;
CSV(BufferedReader br) throws IOException {
in = br;
columns = readLine();
}
Map<String, String> next() throws IOException {
List<String> row = readLine();
if (columns == null || row == null)
return null;
Map<String, String> r = new LinkedHashMap<String, String>();
for (int col = 0; col < columns.size(); col++)
r.put(columns.get(col), row.get(col));
return r;
}
private List<String> readLine() throws IOException {
String line = in.readLine();
if (line == null || line.length() == 0)
return null;
ArrayList<String> row;
if (columns != null)
row = new ArrayList<String>(columns.size());
else
row = new ArrayList<String>();
int p = 0;
while (p < line.length()) {
if (line.charAt(p) == '"') {
p++; // skip the opening quote.
StringBuilder b = new StringBuilder();
SCAN: while (p < line.length()) {
char c = line.charAt(p);
switch (c) {
case '"':
p++;
break SCAN;
case '\\':
b.append(line.charAt(p + 1));
p += 2;
break;
default:
b.append(c);
p++;
break;
}
}
if (p < line.length() && line.charAt(p) != ',')
throw new IOException(MessageFormat.format(IpLogText.get().CSVParsingError, line));
row.add(b.toString());
p++; // skip the trailing comma (if present)
} else if (line.charAt(p) == ',') {
row.add("");
p++;
if (p == line.length())
row.add("");
} else {
int comma = line.indexOf(',', p);
row.add(line.substring(p, comma));
p = comma + 1;
}
}
return row;
}
}

206
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Committer.java

@ -1,206 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/** A project committer. */
class Committer {
/** Sorts committers by their name first name, then last name. */
static final Comparator<Committer> COMPARATOR = new Comparator<Committer>() {
public int compare(Committer a, Committer b) {
int cmp = a.firstName.compareTo(b.firstName);
if (cmp == 0)
cmp = a.lastName.compareTo(b.lastName);
return cmp;
}
};
private final String id;
private String firstName;
private String lastName;
private String affiliation;
private boolean hasCommits;
private String comments;
private final Set<String> emailAddresses = new HashSet<String>();
private final List<ActiveRange> active = new ArrayList<ActiveRange>(2);
/**
* @param id
* unique identity of the committer
*/
Committer(String id) {
this.id = id;
}
/** @return unique identity of this committer in the foundation database. */
String getID() {
return id;
}
/** @return first name of the committer; their given name. */
String getFirstName() {
return firstName;
}
void setFirstName(String firstName) {
this.firstName = firstName;
}
/** @return last name of the committer; their surname or family name. */
String getLastName() {
return lastName;
}
void setLastName(String lastName) {
this.lastName = lastName;
}
/** @return the organization the committer is affiliated with. */
String getAffiliation() {
return affiliation;
}
void setAffiliation(String affiliation) {
this.affiliation = affiliation;
}
/** @return true if this committer is still an active member of the project. */
boolean isActive() {
if (active.isEmpty())
return false;
ActiveRange last = active.get(active.size() - 1);
return last.end == null;
}
/** @return true if this committer has commits in the project. */
boolean hasCommits() {
return hasCommits;
}
void setHasCommits(boolean hasCommits) {
this.hasCommits = hasCommits;
}
/** @return any additional comments about this committer. */
String getComments() {
return comments;
}
void setComments(String comments) {
this.comments = comments;
}
void addEmailAddress(String email) {
emailAddresses.add(email);
}
void addActiveRange(ActiveRange r) {
active.add(r);
Collections.sort(active, new Comparator<ActiveRange>() {
public int compare(ActiveRange a, ActiveRange b) {
return a.begin.compareTo(b.begin);
}
});
}
/**
* @param when
* @return true if the event occurred while an active committer.
*/
boolean inRange(Date when) {
for (ActiveRange ar : active) {
if (ar.contains(when))
return true;
}
return false;
}
@Override
public String toString() {
return MessageFormat.format(IpLogText.get().committerString, getFirstName(), getLastName());
}
/** Date period during which the committer was active. */
static class ActiveRange {
private final Date begin;
private final Date end;
/**
* @param begin
* @param end
*/
ActiveRange(Date begin, Date end) {
this.begin = begin;
this.end = end;
}
/**
* @param when
* @return true if {@code when} is within this date span.
*/
boolean contains(Date when) {
if (when.compareTo(begin) < 0)
return false;
if (end == null)
return true;
return when.compareTo(end) < 0;
}
}
}

100
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Contributor.java

@ -1,100 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/** A project contributor (non-committer). */
class Contributor {
/** Sorts contributors by their name first name, then last name. */
static final Comparator<Contributor> COMPARATOR = new Comparator<Contributor>() {
public int compare(Contributor a, Contributor b) {
return a.name.compareTo(b.name);
}
};
private final String id;
private final String name;
private final List<SingleContribution> contributions = new ArrayList<SingleContribution>();
/**
* @param id
* @param name
*/
Contributor(String id, String name) {
this.id = id;
this.name = name;
}
/** @return unique identity of this contributor in the foundation database. */
String getID() {
return id;
}
/** @return name of the contributor. */
String getName() {
return name;
}
/** @return all known contributions. */
Collection<SingleContribution> getContributions() {
return Collections.unmodifiableCollection(contributions);
}
void add(SingleContribution bug) {
contributions.add(bug);
}
@Override
public String toString() {
return MessageFormat.format(IpLogText.get().contributorString, getName());
}
}

320
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IPZillaQuery.java

@ -1,320 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.ConnectException;
import java.net.CookieHandler;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLEncoder;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.jgit.util.HttpSupport;
/** A crude interface to query IPzilla. */
class IPZillaQuery {
private static final String RE_EPL = "^.*(Eclipse Public License|EPL).*$";
private final URL base;
private final String username;
private final String password;
private final ProxySelector proxySelector = ProxySelector.getDefault();
IPZillaQuery(URL base, String username, String password) {
this.base = base;
this.username = username;
this.password = password;
}
Set<CQ> getCQs(Collection<Project> projects) throws IOException {
try {
login();
Set<CQ> cqs = new HashSet<CQ>();
for (Project project : projects)
cqs.addAll(queryOneProject(project));
return cqs;
} finally {
// Kill the IPzilla session and log us out from there.
logout();
}
}
private Set<CQ> queryOneProject(Project project) throws IOException {
Map<String, String> p = new LinkedHashMap<String, String>();
p.put("bugidtype", "include");
p.put("chfieldto", "Now");
p.put("component", project.getID());
p.put("field-1-0-0", "component");
p.put("type-1-0-0", "anyexact");
p.put("value-1-0-0", project.getID());
p.put("ctype", "csv");
StringBuilder req = new StringBuilder();
for (Map.Entry<String, String> e : p.entrySet()) {
if (req.length() > 0)
req.append('&');
req.append(URLEncoder.encode(e.getKey(), "UTF-8"));
req.append('=');
req.append(URLEncoder.encode(e.getValue(), "UTF-8"));
}
URL csv = new URL(new URL(base, "buglist.cgi").toString() + "?" + req);
req = new StringBuilder();
for (String name : new String[] { "bug_severity", "bug_status",
"resolution", "short_desc", "cf_license", "keywords" }) {
if (req.length() > 0)
req.append("%20");
req.append(name);
}
setCookie(csv, "COLUMNLIST", req.toString());
HttpURLConnection conn = open(csv);
if (HttpSupport.response(conn) != HttpURLConnection.HTTP_OK) {
throw new IOException(MessageFormat.format(IpLogText.get().queryFailed
, csv, conn.getResponseCode() + " " + conn.getResponseMessage()));
}
BufferedReader br = reader(conn);
try {
Set<CQ> cqs = new HashSet<CQ>();
CSV in = new CSV(br);
Map<String, String> row;
while ((row = in.next()) != null) {
CQ cq = parseOneCQ(row);
if (cq != null)
cqs.add(cq);
}
return cqs;
} finally {
br.close();
}
}
private static BufferedReader reader(HttpURLConnection conn)
throws UnsupportedEncodingException, IOException {
String encoding = conn.getContentEncoding();
InputStream in = conn.getInputStream();
if (encoding != null && !encoding.equals(""))
return new BufferedReader(new InputStreamReader(in, encoding));
return new BufferedReader(new InputStreamReader(in));
}
private void login() throws MalformedURLException,
UnsupportedEncodingException, ConnectException, IOException {
final URL login = new URL(base, "index.cgi");
StringBuilder req = new StringBuilder();
req.append("Bugzilla_login=");
req.append(URLEncoder.encode(username, "UTF-8"));
req.append('&');
req.append("Bugzilla_password=");
req.append(URLEncoder.encode(password, "UTF-8"));
byte[] reqbin = req.toString().getBytes("UTF-8");
HttpURLConnection c = open(login);
c.setDoOutput(true);
c.setFixedLengthStreamingMode(reqbin.length);
c.setRequestProperty(HttpSupport.HDR_CONTENT_TYPE,
"application/x-www-form-urlencoded");
OutputStream out = c.getOutputStream();
out.write(reqbin);
out.close();
if (HttpSupport.response(c) != HttpURLConnection.HTTP_OK) {
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed
, username, login, c.getResponseCode() + " " + c.getResponseMessage()));
}
String content = readFully(c);
Matcher matcher = Pattern.compile("<title>(.*)</title>",
Pattern.CASE_INSENSITIVE).matcher(content);
if (!matcher.find()) {
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed
, username, login, IpLogText.get().responseNotHTMLAsExpected));
}
String title = matcher.group(1);
if (!"IPZilla Main Page".equals(title)) {
throw new IOException(MessageFormat.format(IpLogText.get().loginFailed
, username, login
, MessageFormat.format(IpLogText.get().pageTitleWas, title)));
}
}
private static String readFully(HttpURLConnection c) throws IOException {
String enc = c.getContentEncoding();
Reader reader;
if (enc != null) {
reader = new InputStreamReader(c.getInputStream(), enc);
} else {
reader = new InputStreamReader(c.getInputStream(), "ISO-8859-1");
}
try {
StringBuilder b = new StringBuilder();
BufferedReader r = new BufferedReader(reader);
String line;
while ((line = r.readLine()) != null) {
b.append(line).append('\n');
}
return b.toString();
} finally {
reader.close();
}
}
private void logout() throws MalformedURLException, ConnectException,
IOException {
HttpSupport.response(open(new URL(base, "relogin.cgi")));
}
private HttpURLConnection open(URL url) throws ConnectException,
IOException {
Proxy proxy = HttpSupport.proxyFor(proxySelector, url);
HttpURLConnection c = (HttpURLConnection) url.openConnection(proxy);
c.setUseCaches(false);
return c;
}
private static void setCookie(URL url, String name, String value)
throws IOException {
Map<String, List<String>> cols = new HashMap<String, List<String>>();
cols.put("Set-Cookie", Collections.singletonList(name + "=" + value));
try {
CookieHandler.getDefault().put(url.toURI(), cols);
} catch (URISyntaxException e) {
IOException err = new IOException(MessageFormat.format(IpLogText.get().invalidURIFormat, url));
err.initCause(e);
throw err;
}
}
private static CQ parseOneCQ(Map<String, String> row) {
long id = Long.parseLong(row.get("bug_id"));
String state = row.get("bug_severity");
String bug_status = row.get("bug_status");
String resolution = row.get("resolution");
String short_desc = row.get("short_desc");
String license = row.get("cf_license");
Set<String> keywords = new TreeSet<String>();
for (String w : row.get("keywords").split(", *"))
keywords.add(w);
// Skip any CQs that were not accepted.
//
if ("closed".equalsIgnoreCase(state)
|| "rejected".equalsIgnoreCase(state)
|| "withdrawn".equalsIgnoreCase(state))
return null;
// Skip any CQs under the EPL without nonepl keyword
// Skip any CQs with the EPL keyword
//
if (!keywords.contains("nonepl") && license.matches(RE_EPL))
return null;
if (keywords.contains("epl"))
return null;
// Work around CQs that were closed in the wrong state.
//
if ("new".equalsIgnoreCase(state)
|| "under_review".equalsIgnoreCase(state)
|| state.startsWith("awaiting_")) {
if ("RESOLVED".equalsIgnoreCase(bug_status)
|| "CLOSED".equalsIgnoreCase(bug_status)) {
if ("FIXED".equalsIgnoreCase(resolution))
state = "approved";
else
return null;
}
}
StringBuilder use = new StringBuilder();
for (String n : new String[] { "unmodified", "modified", "source",
"binary" }) {
if (keywords.contains(n)) {
if (use.length() > 0)
use.append(' ');
use.append(n);
}
}
if (keywords.contains("sourceandbinary")) {
if (use.length() > 0)
use.append(' ');
use.append("source & binary");
}
CQ cq = new CQ(id);
cq.setDescription(short_desc);
cq.setLicense(license);
cq.setState(state);
if (use.length() > 0)
cq.setUse(use.toString().trim());
return cq;
}
}

634
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java

@ -1,634 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.text.MessageFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.eclipse.jgit.diff.Edit;
import org.eclipse.jgit.diff.EditList;
import org.eclipse.jgit.diff.MyersDiff;
import org.eclipse.jgit.diff.RawText;
import org.eclipse.jgit.diff.RawTextComparator;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.iplog.Committer.ActiveRange;
import org.eclipse.jgit.lib.BlobBasedConfig;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.MutableObjectId;
import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.NameConflictTreeWalk;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
import org.eclipse.jgit.util.RawParseUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Creates an Eclipse IP log in XML format.
*
* @see <a href="http://www.eclipse.org/projects/xml/iplog.xsd">IP log XSD</a>
*/
public class IpLogGenerator {
private static final String IPLOG_NS = "http://www.eclipse.org/projects/xml/iplog";
private static final String IPLOG_PFX = "iplog:";
private static final String INDENT = "{http://xml.apache.org/xslt}indent-amount";
/** Projects indexed by their ID string, e.g. {@code technology.jgit}. */
private final Map<String, Project> projects = new TreeMap<String, Project>();
/** Projects indexed by their ID string, e.g. {@code technology.jgit}. */
private final Map<String, Project> consumedProjects = new TreeMap<String, Project>();
/** Known committers, indexed by their foundation ID. */
private final Map<String, Committer> committersById = new HashMap<String, Committer>();
/** Known committers, indexed by their email address. */
private final Map<String, Committer> committersByEmail = new HashMap<String, Committer>();
/** Discovered contributors. */
private final Map<String, Contributor> contributorsByName = new HashMap<String, Contributor>();
/** All known CQs matching the projects we care about. */
private final Set<CQ> cqs = new HashSet<CQ>();
/** Root commits which were scanned to gather project data. */
private final Set<RevCommit> commits = new HashSet<RevCommit>();
/** The meta file we loaded to bootstrap our definitions. */
private IpLogMeta meta;
/** URL to obtain review information about a specific contribution. */
private String reviewUrl;
private String characterEncoding = "UTF-8";
private Repository db;
private RevWalk rw;
private NameConflictTreeWalk tw;
private ObjectReader curs;
private final MutableObjectId idbuf = new MutableObjectId();
private Document doc;
/** Create an empty generator. */
public IpLogGenerator() {
// Do nothing.
}
/**
* Set the character encoding used to write the output file.
*
* @param encodingName
* the character set encoding name.
*/
public void setCharacterEncoding(String encodingName) {
characterEncoding = encodingName;
}
/**
* Scan a Git repository's history to compute the changes within it.
*
* @param repo
* the repository to scan.
* @param startCommit
* commit the IP log is needed for.
* @param version
* symbolic label for the version.
* @throws IOException
* the repository cannot be read.
* @throws ConfigInvalidException
* the {@code .eclipse_iplog} file present at the top level of
* {@code startId} is not a valid configuration file.
*/
public void scan(Repository repo, RevCommit startCommit, String version)
throws IOException, ConfigInvalidException {
try {
db = repo;
curs = db.newObjectReader();
rw = new RevWalk(curs);
tw = new NameConflictTreeWalk(curs);
RevCommit c = rw.parseCommit(startCommit);
loadEclipseIpLog(version, c);
loadCommitters(repo);
scanProjectCommits(meta.getProjects().get(0), c);
commits.add(c);
} finally {
curs.release();
db = null;
rw = null;
tw = null;
}
}
private void loadEclipseIpLog(String version, RevCommit commit)
throws IOException, ConfigInvalidException {
TreeWalk log = TreeWalk.forPath(db, IpLogMeta.IPLOG_CONFIG_FILE, commit
.getTree());
if (log == null)
return;
meta = new IpLogMeta();
try {
meta.loadFrom(new BlobBasedConfig(null, db, log.getObjectId(0)));
} catch (ConfigInvalidException e) {
throw new ConfigInvalidException(MessageFormat.format(IpLogText.get().configurationFileInCommitIsInvalid
, log.getPathString(), commit.name()), e);
}
if (meta.getProjects().isEmpty()) {
throw new ConfigInvalidException(MessageFormat.format(IpLogText.get().configurationFileInCommitHasNoProjectsDeclared
, log.getPathString(), commit.name()));
}
for (Project p : meta.getProjects()) {
p.setVersion(version);
projects.put(p.getName(), p);
}
for (Project p : meta.getConsumedProjects()) {
consumedProjects.put(p.getName(), p);
}
cqs.addAll(meta.getCQs());
reviewUrl = meta.getReviewUrl();
}
private void loadCommitters(Repository repo) throws IOException {
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
File list = new File(repo.getDirectory(), "gerrit_committers");
BufferedReader br = new BufferedReader(new FileReader(list));
try {
String line;
while ((line = br.readLine()) != null) {
String[] field = line.trim().split(" *\\| *");
String user = field[1];
String name = field[2];
String email = field[3];
Date begin = parseDate(dt, field[4]);
Date end = parseDate(dt, field[5]);
if (user.startsWith("username:"))
user = user.substring("username:".length());
Committer who = committersById.get(user);
if (who == null) {
who = new Committer(user);
int sp = name.indexOf(' ');
if (0 < sp) {
who.setFirstName(name.substring(0, sp).trim());
who.setLastName(name.substring(sp + 1).trim());
} else {
who.setFirstName(name);
who.setLastName(null);
}
committersById.put(who.getID(), who);
}
who.addEmailAddress(email);
who.addActiveRange(new ActiveRange(begin, end));
committersByEmail.put(email, who);
}
} finally {
br.close();
}
}
private static Date parseDate(SimpleDateFormat dt, String value)
throws IOException {
if ("NULL".equals(value) || "".equals(value) || value == null)
return null;
int dot = value.indexOf('.');
if (0 < dot)
value = value.substring(0, dot);
try {
return dt.parse(value);
} catch (ParseException e) {
IOException err = new IOException(MessageFormat.format(IpLogText.get().invalidDate, value));
err.initCause(e);
throw err;
}
}
private void scanProjectCommits(Project proj, RevCommit start)
throws IOException {
rw.reset();
rw.markStart(start);
RevCommit commit;
while ((commit = rw.next()) != null) {
if (proj.isSkippedCommit(commit)) {
continue;
}
final PersonIdent author = commit.getAuthorIdent();
final Date when = author.getWhen();
Committer who = committersByEmail.get(author.getEmailAddress());
if (who != null && who.inRange(when)) {
// Commit was written by the committer while they were
// an active committer on the project.
//
who.setHasCommits(true);
continue;
}
// Commit from a non-committer contributor.
//
final int cnt = commit.getParentCount();
if (2 <= cnt) {
// Avoid a pointless merge attributed to a non-committer.
// Skip this commit if every file matches at least one
// of the parent commits exactly, if so then the blame
// for code in that file can be fully passed onto that
// parent and this non-committer isn't responsible.
//
tw.setFilter(TreeFilter.ANY_DIFF);
tw.setRecursive(true);
RevTree[] trees = new RevTree[1 + cnt];
trees[0] = commit.getTree();
for (int i = 0; i < cnt; i++)
trees[i + 1] = commit.getParent(i).getTree();
tw.reset(trees);
boolean matchAll = true;
while (tw.next()) {
boolean matchOne = false;
for (int i = 1; i <= cnt; i++) {
if (tw.getRawMode(0) == tw.getRawMode(i)
&& tw.idEqual(0, i)) {
matchOne = true;
break;
}
}
if (!matchOne) {
matchAll = false;
break;
}
}
if (matchAll)
continue;
}
Contributor contributor = contributorsByName.get(author.getName());
if (contributor == null) {
String id = author.getEmailAddress();
String name = author.getName();
contributor = new Contributor(id, name);
contributorsByName.put(name, contributor);
}
String id = commit.name();
String subj = commit.getShortMessage();
SingleContribution item = new SingleContribution(id, when, subj);
if (2 <= cnt) {
item.setSize("(merge)");
contributor.add(item);
continue;
}
int addedLines = 0;
if (1 == cnt) {
final RevCommit parent = commit.getParent(0);
tw.setFilter(TreeFilter.ANY_DIFF);
tw.setRecursive(true);
tw.reset(new RevTree[] { parent.getTree(), commit.getTree() });
while (tw.next()) {
if (tw.getFileMode(1).getObjectType() != Constants.OBJ_BLOB)
continue;
byte[] oldImage;
if (tw.getFileMode(0).getObjectType() == Constants.OBJ_BLOB)
oldImage = openBlob(0);
else
oldImage = new byte[0];
EditList edits = MyersDiff.INSTANCE.diff(
RawTextComparator.DEFAULT, new RawText(oldImage),
new RawText(openBlob(1)));
for (Edit e : edits)
addedLines += e.getEndB() - e.getBeginB();
}
} else { // no parents, everything is an addition
tw.setFilter(TreeFilter.ALL);
tw.setRecursive(true);
tw.reset(commit.getTree());
while (tw.next()) {
if (tw.getFileMode(0).getObjectType() == Constants.OBJ_BLOB) {
byte[] buf = openBlob(0);
for (int ptr = 0; ptr < buf.length;) {
ptr = RawParseUtils.nextLF(buf, ptr);
addedLines++;
}
}
}
}
if (addedLines < 0)
throw new IOException(MessageFormat.format(IpLogText.get().incorrectlyScanned, commit.name()));
if (1 == addedLines)
item.setSize("+1 line");
else
item.setSize("+" + addedLines + " lines");
contributor.add(item);
}
}
private byte[] openBlob(int side) throws IOException {
tw.getObjectId(idbuf, side);
return curs.open(idbuf, Constants.OBJ_BLOB).getCachedBytes();
}
/**
* Dump the scanned information into an XML file.
*
* @param out
* the file stream to write to. The caller is responsible for
* closing the stream upon completion.
* @throws IOException
* the stream cannot be written.
*/
public void writeTo(OutputStream out) throws IOException {
try {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer s = factory.newTransformer();
s.setOutputProperty(OutputKeys.ENCODING, characterEncoding);
s.setOutputProperty(OutputKeys.METHOD, "xml");
s.setOutputProperty(OutputKeys.INDENT, "yes");
s.setOutputProperty(INDENT, "2");
s.transform(new DOMSource(toXML()), new StreamResult(out));
} catch (ParserConfigurationException e) {
IOException err = new IOException(IpLogText.get().cannotSerializeXML);
err.initCause(e);
throw err;
} catch (TransformerConfigurationException e) {
IOException err = new IOException(IpLogText.get().cannotSerializeXML);
err.initCause(e);
throw err;
} catch (TransformerException e) {
IOException err = new IOException(IpLogText.get().cannotSerializeXML);
err.initCause(e);
throw err;
}
}
private Document toXML() throws ParserConfigurationException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
doc = factory.newDocumentBuilder().newDocument();
Element root = createElement("iplog");
doc.appendChild(root);
if (projects.size() == 1) {
Project soleProject = projects.values().iterator().next();
root.setAttribute("name", soleProject.getID());
}
Set<String> licenses = new TreeSet<String>();
for (Project project : sort(projects, Project.COMPARATOR)) {
root.appendChild(createProject(project));
licenses.addAll(project.getLicenses());
}
if (!consumedProjects.isEmpty())
appendBlankLine(root);
for (Project project : sort(consumedProjects, Project.COMPARATOR)) {
root.appendChild(createConsumes(project));
licenses.addAll(project.getLicenses());
}
for (RevCommit c : sort(commits))
root.appendChild(createCommitMeta(c));
if (licenses.size() > 1)
appendBlankLine(root);
for (String name : sort(licenses))
root.appendChild(createLicense(name));
if (!cqs.isEmpty())
appendBlankLine(root);
for (CQ cq : sort(cqs, CQ.COMPARATOR))
root.appendChild(createCQ(cq));
if (!committersByEmail.isEmpty())
appendBlankLine(root);
for (Committer committer : sort(committersById, Committer.COMPARATOR))
root.appendChild(createCommitter(committer));
for (Contributor c : sort(contributorsByName, Contributor.COMPARATOR)) {
appendBlankLine(root);
root.appendChild(createContributor(c));
}
return doc;
}
private void appendBlankLine(Element root) {
root.appendChild(doc.createTextNode("\n\n "));
}
private Element createProject(Project p) {
Element project = createElement("project");
populateProjectType(p, project);
return project;
}
private Element createConsumes(Project p) {
Element project = createElement("consumes");
populateProjectType(p, project);
return project;
}
private static void populateProjectType(Project p, Element project) {
required(project, "id", p.getID());
required(project, "name", p.getName());
optional(project, "comments", p.getComments());
optional(project, "version", p.getVersion());
}
private Element createCommitMeta(RevCommit c) {
Element meta = createElement("meta");
required(meta, "key", "git-commit");
required(meta, "value", c.name());
return meta;
}
private Element createLicense(String name) {
Element license = createElement("license");
required(license, "id", name);
optional(license, "description", null);
optional(license, "comments", null);
return license;
}
private Element createCQ(CQ cq) {
Element r = createElement("cq");
required(r, "id", Long.toString(cq.getID()));
required(r, "description", cq.getDescription());
optional(r, "license", cq.getLicense());
optional(r, "use", cq.getUse());
optional(r, "state", mapCQState(cq.getState()));
optional(r, "comments", cq.getComments());
return r;
}
private static String mapCQState(String state) {
// "approved" CQs shall be listed as "active" in the iplog
if (state.equals("approved"))
return "active";
return state;
}
private Element createCommitter(Committer who) {
Element r = createElement("committer");
required(r, "id", who.getID());
required(r, "firstName", who.getFirstName());
required(r, "lastName", who.getLastName());
optional(r, "affiliation", who.getAffiliation());
required(r, "active", Boolean.toString(who.isActive()));
required(r, "hasCommits", Boolean.toString(who.hasCommits()));
optional(r, "comments", who.getComments());
return r;
}
private Element createContributor(Contributor c) {
Element r = createElement("contributor");
required(r, "id", c.getID());
required(r, "name", c.getName());
for (SingleContribution s : sort(c.getContributions(),
SingleContribution.COMPARATOR))
r.appendChild(createContribution(s));
return r;
}
private Element createContribution(SingleContribution s) {
Element r = createElement("contribution");
required(r, "id", s.getID());
required(r, "description", s.getSummary());
required(r, "size", s.getSize());
if (reviewUrl != null)
optional(r, "url", reviewUrl + s.getID());
return r;
}
private Element createElement(String name) {
return doc.createElementNS(IPLOG_NS, IPLOG_PFX + name);
}
private static void required(Element r, String name, String value) {
if (value == null)
value = "";
r.setAttribute(name, value);
}
private static void optional(Element r, String name, String value) {
if (value != null && value.length() > 0)
r.setAttribute(name, value);
}
private static <T, Q extends Comparator<T>> Iterable<T> sort(
Collection<T> objs, Q cmp) {
ArrayList<T> sorted = new ArrayList<T>(objs);
Collections.sort(sorted, cmp);
return sorted;
}
private static <T, Q extends Comparator<T>> Iterable<T> sort(
Map<?, T> objs, Q cmp) {
return sort(objs.values(), cmp);
}
@SuppressWarnings("unchecked")
private static <T extends Comparable> Iterable<T> sort(Collection<T> objs) {
ArrayList<T> sorted = new ArrayList<T>(objs);
Collections.sort(sorted);
return sorted;
}
}

241
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogMeta.java

@ -1,241 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.storage.file.LockFile;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
/**
* Manages the {@code .eclipse_iplog} file in a project.
*/
public class IpLogMeta {
/** Default name of the {@code .eclipse_iplog} file. */
public static final String IPLOG_CONFIG_FILE = ".eclipse_iplog";
private static final String S_PROJECT = "project";
private static final String S_CQ = "CQ";
private static final String S_CONSUMES = "consumes";
private static final String S_REVIEW = "review";
private static final String K_URL = "url";
private static final String K_NAME = "name";
private static final String K_VERSION = "version";
private static final String K_COMMENTS = "comments";
private static final String K_SKIP_COMMIT = "skipCommit";
private static final String K_LICENSE = "license";
private static final String K_DESCRIPTION = "description";
private static final String K_USE = "use";
private static final String K_STATE = "state";
private List<Project> projects = new ArrayList<Project>();
private List<Project> consumedProjects = new ArrayList<Project>();
private Set<CQ> cqs = new HashSet<CQ>();
private String reviewUrl;
List<Project> getProjects() {
return projects;
}
List<Project> getConsumedProjects() {
return consumedProjects;
}
Set<CQ> getCQs() {
return cqs;
}
String getReviewUrl() {
return reviewUrl;
}
void loadFrom(Config cfg) {
projects.clear();
consumedProjects.clear();
cqs.clear();
projects.addAll(parseProjects(cfg, S_PROJECT));
consumedProjects.addAll(parseProjects(cfg, S_CONSUMES));
for (String id : cfg.getSubsections(S_CQ)) {
CQ cq = new CQ(Long.parseLong(id));
cq.setDescription(cfg.getString(S_CQ, id, K_DESCRIPTION));
cq.setLicense(cfg.getString(S_CQ, id, K_LICENSE));
cq.setUse(cfg.getString(S_CQ, id, K_USE));
cq.setState(cfg.getString(S_CQ, id, K_STATE));
cq.setComments(cfg.getString(S_CQ, id, K_COMMENTS));
cqs.add(cq);
}
reviewUrl = cfg.getString(S_REVIEW, null, K_URL);
}
private static List<Project> parseProjects(final Config cfg,
final String sectionName) {
final List<Project> dst = new ArrayList<Project>();
for (String id : cfg.getSubsections(sectionName)) {
String name = cfg.getString(sectionName, id, K_NAME);
Project project = new Project(id, name);
project.setVersion(cfg.getString(sectionName, id, K_VERSION));
project.setComments(cfg.getString(sectionName, id, K_COMMENTS));
for (String c : cfg.getStringList(sectionName, id, K_SKIP_COMMIT))
project.addSkipCommit(ObjectId.fromString(c));
for (String license : cfg.getStringList(sectionName, id, K_LICENSE))
project.addLicense(license);
dst.add(project);
}
return dst;
}
/**
* Query the Eclipse Foundation's IPzilla database for CQ records.
* <p>
* Updates the local {@code .eclipse_iplog} configuration file with current
* information by deleting CQs which are no longer relevant, and adding or
* updating any CQs which currently exist in the database.
*
* @param file
* local file to update with current CQ records.
* @param fs
* the file system abstraction which will be necessary to perform
* certain file system operations.
* @param base
* base https:// URL of the IPzilla server.
* @param username
* username to login to IPzilla as. Must be a Bugzilla username
* of someone authorized to query the project's IPzilla records.
* @param password
* password for {@code username}.
* @throws IOException
* IPzilla cannot be queried, or the local file cannot be read
* from or written to.
* @throws ConfigInvalidException
* the local file cannot be read, as it is not a valid
* configuration file format.
*/
public void syncCQs(File file, FS fs, URL base, String username,
String password) throws IOException, ConfigInvalidException {
FileUtils.mkdirs(file.getParentFile(), true);
LockFile lf = new LockFile(file, fs);
if (!lf.lock())
throw new IOException(MessageFormat.format(IpLogText.get().cannotLock, file));
try {
FileBasedConfig cfg = new FileBasedConfig(file, fs);
cfg.load();
loadFrom(cfg);
IPZillaQuery ipzilla = new IPZillaQuery(base, username, password);
Set<CQ> current = ipzilla.getCQs(projects);
for (CQ cq : sort(current, CQ.COMPARATOR)) {
String id = Long.toString(cq.getID());
set(cfg, S_CQ, id, K_DESCRIPTION, cq.getDescription());
set(cfg, S_CQ, id, K_LICENSE, cq.getLicense());
set(cfg, S_CQ, id, K_USE, cq.getUse());
set(cfg, S_CQ, id, K_STATE, cq.getState());
set(cfg, S_CQ, id, K_COMMENTS, cq.getComments());
}
for (CQ cq : cqs) {
if (!current.contains(cq))
cfg.unsetSection(S_CQ, Long.toString(cq.getID()));
}
lf.write(Constants.encode(cfg.toText()));
if (!lf.commit())
throw new IOException(MessageFormat.format(IpLogText.get().cannotWrite, file));
} finally {
lf.unlock();
}
}
private static void set(Config cfg, String section, String subsection,
String key, String value) {
if (value == null || "".equals(value))
cfg.unset(section, subsection, key);
else
cfg.setString(section, subsection, key, value);
}
private static <T, Q extends Comparator<T>> Iterable<T> sort(
Collection<T> objs, Q cmp) {
ArrayList<T> sorted = new ArrayList<T>(objs);
Collections.sort(sorted, cmp);
return sorted;
}
}

79
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogText.java

@ -1,79 +0,0 @@
/*
* Copyright (C) 2010, Sasa Zivkov <sasa.zivkov@sap.com>
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import org.eclipse.jgit.nls.NLS;
import org.eclipse.jgit.nls.TranslationBundle;
/**
* Translation bundle for JGit IP Log
*/
public class IpLogText extends TranslationBundle {
/**
* @return an instance of this translation bundle
*/
public static IpLogText get() {
return NLS.getBundleFor(IpLogText.class);
}
// @formatter:off
/***/ public String CQString;
/***/ public String CSVParsingError;
/***/ public String cannotLock;
/***/ public String cannotSerializeXML;
/***/ public String cannotWrite;
/***/ public String committerString;
/***/ public String configurationFileInCommitHasNoProjectsDeclared;
/***/ public String configurationFileInCommitIsInvalid;
/***/ public String contributorString;
/***/ public String incorrectlyScanned;
/***/ public String invalidDate;
/***/ public String invalidURIFormat;
/***/ public String loginFailed;
/***/ public String pageTitleWas;
/***/ public String projectString;
/***/ public String queryFailed;
/***/ public String responseNotHTMLAsExpected;
}

134
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/Project.java

@ -1,134 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectIdSubclassMap;
/** Description of a project. */
class Project {
/** Sorts projects by unique identities. */
static final Comparator<Project> COMPARATOR = new Comparator<Project>() {
public int compare(Project a, Project b) {
return a.getID().compareTo(b.getID());
}
};
private final String id;
private final String name;
private String comments;
private final Set<String> licenses = new TreeSet<String>();
private final ObjectIdSubclassMap<ObjectId> skipCommits = new ObjectIdSubclassMap<ObjectId>();
private String version;
/**
* @param id
* @param name
*/
Project(String id, String name) {
this.id = id;
this.name = name;
}
/** @return unique identity of this project. */
String getID() {
return id;
}
/** @return name of this project. */
String getName() {
return name;
}
/** @return any additional comments about this project. */
String getComments() {
return comments;
}
void setComments(String comments) {
this.comments = comments;
}
/** @return the licenses this project is released under. */
Set<String> getLicenses() {
return Collections.unmodifiableSet(licenses);
}
void addLicense(String licenseName) {
licenses.add(licenseName);
}
void addSkipCommit(AnyObjectId commit) {
skipCommits.add(commit.copy());
}
boolean isSkippedCommit(AnyObjectId commit) {
return skipCommits.contains(commit);
}
String getVersion() {
return version;
}
void setVersion(String v) {
version = v;
}
@Override
public String toString() {
return MessageFormat.format(IpLogText.get().projectString, getID(), getName());
}
}

124
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/SimpleCookieManager.java

@ -1,124 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.io.IOException;
import java.net.CookieHandler;
import java.net.URI;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Dumb implementation of a CookieManager for the JRE.
* <p>
* Cookies are keyed only by the host name in the URI. Cookie attributes like
* domain and path are ignored to simplify the implementation.
* <p>
* If we are running on Java 6 or later we should favor using the standard
* {@code java.net.CookieManager} class instead.
*/
public class SimpleCookieManager extends CookieHandler {
private Map<String, Map<String, String>> byHost = new HashMap<String, Map<String, String>>();
@Override
public Map<String, List<String>> get(URI uri,
Map<String, List<String>> requestHeaders) throws IOException {
String host = hostOf(uri);
Map<String, String> map = byHost.get(host);
if (map == null || map.isEmpty())
return requestHeaders;
Map<String, List<String>> r = new HashMap<String, List<String>>();
r.putAll(requestHeaders);
StringBuilder buf = new StringBuilder();
for (Map.Entry<String, String> e : map.entrySet()) {
if (buf.length() > 0)
buf.append("; ");
buf.append(e.getKey());
buf.append('=');
buf.append(e.getValue());
}
r.put("Cookie", Collections.singletonList(buf.toString()));
return Collections.unmodifiableMap(r);
}
@Override
public void put(URI uri, Map<String, List<String>> responseHeaders)
throws IOException {
List<String> list = responseHeaders.get("Set-Cookie");
if (list == null || list.isEmpty()) {
return;
}
String host = hostOf(uri);
Map<String, String> map = byHost.get(host);
if (map == null) {
map = new HashMap<String, String>();
byHost.put(host, map);
}
for (String hdr : list) {
String attributes[] = hdr.split(";");
String nameValue = attributes[0].trim();
int eq = nameValue.indexOf('=');
String name = nameValue.substring(0, eq);
String value = nameValue.substring(eq + 1);
map.put(name, value);
}
}
private static String hostOf(URI uri) {
StringBuilder key = new StringBuilder();
key.append(uri.getScheme());
key.append(':');
key.append(uri.getHost());
if (0 < uri.getPort())
key.append(':' + uri.getPort());
return key.toString();
}
}

99
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/SingleContribution.java

@ -1,99 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.iplog;
import java.util.Comparator;
import java.util.Date;
/** A single contribution by a {@link Contributor}. */
class SingleContribution {
/** Sorts contributors by their name first name, then last name. */
public static final Comparator<SingleContribution> COMPARATOR = new Comparator<SingleContribution>() {
public int compare(SingleContribution a, SingleContribution b) {
return a.created.compareTo(b.created);
}
};
private final String id;
private String summary;
private Date created;
private String size;
/**
* @param id
* @param created
* @param summary
*/
SingleContribution(String id, Date created, String summary) {
this.id = id;
this.summary = summary;
this.created = created;
}
/** @return unique identity of the contribution. */
String getID() {
return id;
}
/** @return date the contribution was created. */
Date getCreated() {
return created;
}
/** @return summary of the contribution. */
String getSummary() {
return summary;
}
String getSize() {
return size;
}
void setSize(String sz) {
size = sz;
}
}

22
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/gsql_query.txt

@ -1,22 +0,0 @@
# Query for Gerrit Code Review gsql to produce the .git/gerrit_committers
# file for a project. Needing to do this manually is a horrible hack.
SELECT a.account_id,
u.external_id,
a.full_name,
b.email_address,
r.added_on,
r.removed_on
FROM accounts a,
account_external_ids b,
account_groups g,
account_group_members_audit r,
account_external_ids u
WHERE a.account_id = b.account_id
AND b.email_address IS NOT NULL
AND r.account_id = a.account_id
AND r.group_id = g.group_id
AND u.account_id = a.account_id
AND u.external_id like 'username:%'
AND g.name = 'technology.jgit-committers'
ORDER BY a.full_name, r.added_on;

2
org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/sample_gerrit_committers

@ -1,2 +0,0 @@
1 | username:spearce | Shawn Pearce | sop@google.com | 2009-09-29 16:47:03.0 | NULL
1 | username:spearce | Shawn Pearce | spearce@spearce.org | 2009-09-29 16:47:03.0 | NULL

7
org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml

@ -33,13 +33,6 @@
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.jgit.iplog"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.jgit.ui"
download-size="0"

6
org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml

@ -77,12 +77,6 @@
<version>2.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.iplog</artifactId>
<version>2.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ui</artifactId>

2
org.eclipse.jgit.pgm/META-INF/MANIFEST.MF

@ -16,7 +16,6 @@ Import-Package: org.apache.commons.compress.archivers;version="[1.3,2.0)",
org.eclipse.jgit.diff;version="[2.3.0,2.4.0)",
org.eclipse.jgit.dircache;version="[2.3.0,2.4.0)",
org.eclipse.jgit.errors;version="[2.3.0,2.4.0)",
org.eclipse.jgit.iplog;version="[2.3.0,2.4.0)",
org.eclipse.jgit.lib;version="[2.3.0,2.4.0)",
org.eclipse.jgit.merge;version="2.3.0",
org.eclipse.jgit.nls;version="[2.3.0,2.4.0)",
@ -45,7 +44,6 @@ Export-Package: org.eclipse.jgit.pgm;version="2.3.0";
org.eclipse.jgit.awtui,
org.eclipse.jgit.transport",
org.eclipse.jgit.pgm.debug;version="2.3.0",
org.eclipse.jgit.pgm.eclipse;version="2.3.0",
org.eclipse.jgit.pgm.opt;version="2.3.0"
Main-Class: org.eclipse.jgit.pgm.Main
Implementation-Title: JGit Command Line Interface

2
org.eclipse.jgit.pgm/META-INF/services/org.eclipse.jgit.pgm.TextBuiltin

@ -45,5 +45,3 @@ org.eclipse.jgit.pgm.debug.ShowPackDelta
org.eclipse.jgit.pgm.debug.TextHashFunctions
org.eclipse.jgit.pgm.debug.WriteDirCache
org.eclipse.jgit.pgm.eclipse.Iplog
org.eclipse.jgit.pgm.eclipse.Ipzilla

6
org.eclipse.jgit.pgm/pom.xml

@ -82,12 +82,6 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.iplog</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.ui</artifactId>

6
org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties

@ -5,7 +5,6 @@ ARGUMENTS=ARGUMENTS
# default meta variable defined in the org.kohsuke.args4j.spi.OneArgumentOptionHandler
N=N
IPZillaPasswordPrompt=IPZilla Password
alreadyOnBranch=Already on ''{0}''
alreadyUpToDate=Already up-to-date.
archiveEntryModeIgnored=warning: mode of {0} ignored
@ -178,9 +177,6 @@ usage_CreateABareRepository=Create a bare repository
usage_CreateATag=Create a tag
usage_CreateAnEmptyGitRepository=Create an empty git repository
usage_DisplayTheVersionOfJgit=Display the version of jgit
usage_IPZillaPassword=IPZilla Password
usage_IPZillaURL=IPZilla URL
usage_IPZillausername=IPZilla Username
usage_MergesTwoDevelopmentHistories=Merges two development histories
usage_RepositoryToReadFrom=Repository to read from
usage_RepositoryToReceiveInto=Repository to receive into
@ -258,7 +254,6 @@ usage_outputFile=Output file
usage_path=path
usage_performFsckStyleChecksOnReceive=perform fsck style checks on receive
usage_portNumberToListenOn=port number to listen on
usage_produceAnEclipseIPLog=Produce an Eclipse IP log
usage_pruneStaleTrackingRefs=prune stale tracking refs
usage_recordChangesToRepository=Record changes to the repository
usage_recurseIntoSubtrees=recurse into subtrees
@ -276,7 +271,6 @@ usage_showNotes=Add this ref to the list of note branches from which notes are d
usage_squash=Squash commits as if a real merge happened, but do not make a commit or move the HEAD.
usage_srcPrefix=show the source prefix instead of "a/"
usage_symbolicVersionForTheProject=Symbolic version for the project
usage_synchronizeIPZillaData=Synchronize IPZilla data
usage_tagMessage=tag message
usage_updateRemoteRefsFromAnotherRepository=Update remote refs from another repository
usage_useNameInsteadOfOriginToTrackUpstream=use <name> instead of 'origin' to track upstream

1
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java

@ -74,7 +74,6 @@ public class CLIText extends TranslationBundle {
}
// @formatter:off
/***/ public String IPZillaPasswordPrompt;
/***/ public String alreadyOnBranch;
/***/ public String alreadyUpToDate;
/***/ public String archiveEntryModeIgnored;

121
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Iplog.java

@ -1,121 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.pgm.eclipse;
import java.io.File;
import java.io.OutputStream;
import java.net.CookieHandler;
import java.text.MessageFormat;
import org.eclipse.jgit.iplog.IpLogGenerator;
import org.eclipse.jgit.iplog.SimpleCookieManager;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.pgm.CLIText;
import org.eclipse.jgit.pgm.Command;
import org.eclipse.jgit.pgm.TextBuiltin;
import org.eclipse.jgit.revwalk.RevObject;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.storage.file.LockFile;
import org.eclipse.jgit.util.FileUtils;
import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.Option;
@Command(name = "eclipse-iplog", common = false, usage = "usage_produceAnEclipseIPLog")
class Iplog extends TextBuiltin {
@Option(name = "--version", aliases = { "-r" }, metaVar = "metaVar_version", usage = "usage_symbolicVersionForTheProject")
private String version;
@Option(name = "--output", aliases = { "-o" }, metaVar = "metaVar_file", usage = "usage_outputFile")
private File output;
@Argument(index = 0, metaVar = "metaVar_commitOrTag")
private ObjectId commitId;
@Override
protected void run() throws Exception {
if (CookieHandler.getDefault() == null)
CookieHandler.setDefault(new SimpleCookieManager());
final IpLogGenerator log = new IpLogGenerator();
if (commitId == null) {
System.err.println(MessageFormat.format(
CLIText.get().warningNoCommitGivenOnCommandLine, Constants.HEAD));
commitId = db.resolve(Constants.HEAD);
}
final RevWalk rw = new RevWalk(db);
final RevObject start = rw.parseAny(commitId);
if (version == null && start instanceof RevTag)
version = ((RevTag) start).getTagName();
else if (version == null)
throw die(MessageFormat.format(CLIText.get().notATagVersionIsRequired, start.name()));
log.scan(db, rw.parseCommit(start), version);
if (output != null) {
FileUtils.mkdirs(output.getParentFile(), true);
LockFile lf = new LockFile(output, db.getFS());
if (!lf.lock())
throw die(MessageFormat.format(CLIText.get().cannotLock, output));
try {
OutputStream os = lf.getOutputStream();
try {
log.writeTo(os);
} finally {
os.close();
}
if (!lf.commit())
throw die(MessageFormat.format(CLIText.get().cannotWrite, output));
} finally {
lf.unlock();
}
} else {
log.writeTo(outs);
outs.flush();
}
}
}

99
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/eclipse/Ipzilla.java

@ -1,99 +0,0 @@
/*
* Copyright (C) 2010, Google Inc.
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Distribution License v1.0 which
* accompanies this distribution, is reproduced below, and is
* available at http://www.eclipse.org/org/documents/edl-v10.php
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following
* conditions are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
*
* - Neither the name of the Eclipse Foundation, Inc. nor the
* names of its contributors may be used to endorse or promote
* products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.eclipse.jgit.pgm.eclipse;
import java.io.File;
import java.net.Authenticator;
import java.net.CookieHandler;
import java.net.PasswordAuthentication;
import java.net.URL;
import org.eclipse.jgit.iplog.IpLogMeta;
import org.eclipse.jgit.iplog.SimpleCookieManager;
import org.eclipse.jgit.pgm.CLIText;
import org.eclipse.jgit.pgm.Command;
import org.eclipse.jgit.pgm.TextBuiltin;
import org.kohsuke.args4j.Option;
@Command(name = "eclipse-ipzilla", common = false, usage = "usage_synchronizeIPZillaData")
class Ipzilla extends TextBuiltin {
@Option(name = "--url", metaVar = "metaVar_url", usage = "usage_IPZillaURL")
private String url = "https://dev.eclipse.org/ipzilla/"; //$NON-NLS-1$
@Option(name = "--username", metaVar = "metaVar_user", usage = "usage_IPZillaUsername")
private String username;
@Option(name = "--password", metaVar = "metaVar_pass", usage = "usage_IPZillaPassword")
private String password;
@Option(name = "--file", aliases = { "-f" }, metaVar = "metaVar_file", usage = "usage_inputOutputFile")
private File output;
@Override
protected void run() throws Exception {
if (CookieHandler.getDefault() == null)
CookieHandler.setDefault(new SimpleCookieManager());
final URL ipzilla = new URL(url);
if (username == null) {
final PasswordAuthentication auth = Authenticator
.requestPasswordAuthentication(ipzilla.getHost(), //
null, //
ipzilla.getPort(), //
ipzilla.getProtocol(), //
CLIText.get().IPZillaPasswordPrompt, //
ipzilla.getProtocol(), //
ipzilla, //
Authenticator.RequestorType.SERVER);
username = auth.getUserName();
password = new String(auth.getPassword());
}
if (output == null)
output = new File(db.getWorkTree(), IpLogMeta.IPLOG_CONFIG_FILE);
IpLogMeta meta = new IpLogMeta();
meta.syncCQs(output, db.getFS(), ipzilla, username, password);
}
}

6
org.eclipse.jgit.test/pom.xml

@ -100,12 +100,6 @@
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.iplog</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.pgm</artifactId>

6
org.eclipse.jgit.test/tst/org/eclipse/jgit/nls/RootLocaleTest.java

@ -46,7 +46,6 @@ package org.eclipse.jgit.nls;
import org.eclipse.jgit.awtui.UIText;
import org.eclipse.jgit.console.ConsoleText;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.iplog.IpLogText;
import org.eclipse.jgit.pgm.CLIText;
import org.junit.Before;
import org.junit.Test;
@ -76,9 +75,4 @@ public class RootLocaleTest {
public void testUIText() {
NLS.getBundleFor(UIText.class);
}
@Test
public void testIpLogText() {
NLS.getBundleFor(IpLogText.class);
}
}

1
pom.xml

@ -474,7 +474,6 @@
<module>org.eclipse.jgit.ant</module>
<module>org.eclipse.jgit.ui</module>
<module>org.eclipse.jgit.http.server</module>
<module>org.eclipse.jgit.iplog</module>
<module>org.eclipse.jgit.pgm</module>
<module>org.eclipse.jgit.junit</module>
<module>org.eclipse.jgit.junit.http</module>

Loading…
Cancel
Save