草庐IT

java - FishEye 可以做什么我们无法从其他工具获得的 git 存储库?

coder 2023-06-24 原文

我们已经决定使用 Jira 和 Confluence,现在正在寻找其他可以让我们的生活更轻松的 Atlassian 工具。

我知道 FishEye 允许对源代码存储库进行各种可视化,而 CVS 的 native 工具则不能。但是,我们已经迁移到 git,它拥有一个包含非常有用的工具的大型生态系统。

问题是:FishEye 能否告诉我们一些我们无法从原生工具中获得的有用信息? (或具有竞争力价格的商业工具)?

最佳答案

我个人喜欢 Fisheye,但它提供了一个中等规模的开发环境和一个半复杂的分支/开发策略,其中监视存储库的当前状态非常重要。

在我上一份工作中,我们的主要产品是一系列服务器端 Java、白盒 SaaS 产品,所有计费和系统集成都在内部处理。尽管大多数人都是 Emacs/命令行黑客,但我们仍然在所有主要产品线之上使用 Fisheye。

注意事项

  • 这是使用 SVN,而不是 git/hg,所以请对此持保留态度。
  • 还有其他涉及 Bugzilla 的 SVN Hook ,我不能 100% 确定它们是如何工作的

改组后从事没有 Fisheye 的产品的工程师通常不高兴,原因如下:

  • 重构 通常,您要四处移动文件、重命名、 merge 相关更改等。 Fisheye 按基本名称搜索将返回已删除很久的文件并保留其历史记录,因此即使您弄乱了存储库中的历史记录,您也可以了解以前的更改是什么。对于因公司突然扩张而经历一些非常真实的成长痛苦的代码库,这是一个巨大的帮助

  • 代码所有权/审查 即使没有强大的代码所有权/审查流程,您也可以使用 Fisheye 选择加入特定项目/代码库更改。对于团队领导等,这是一种非常简单的方法,可以在其他人改变事情时了解他们在做什么以及为什么,无论您是想接收垃圾邮件还是为 repo 设置 RSS 提要。如果您同时管理多个项目,那将是一件大事。我为我的第一个主要项目设置了一个 RSS 提要,这样我就可以看到它是如何变化的,但真正的好处是在 API 相关项目发生变化时对其进行监控

  • 可用 并非我们所有的工程师都是命令行黑客。对于一些处理 HTML/CSS 的前端工程师来说尤其如此。尽可能多的人倾向于在可能的情况下回退到命令行工具,执行普通文件差异和“谁恢复了我的更改以及何时?”处理浏览器内差异工具比执行“svn blame”等操作更容易。

综上所述,我要说的是,如果我是从头开始做一个开发商店,我根本不会碰它,除非我需要整个项目的可视化而不是时不时地查看一两个特定文件,这可能意味着以下情况为真:

  • 我的团队规模大约有 10 多名具有潜在非技术背景的工程师,并且需要或根据临时策略进行重组
  • 分支/标记可以满足一些特殊需求,就像它可以满足一般版本控制一样
  • 代码所有权和审查至少作为一个松散执行的想法获得牵引力,而不是因为资源限制而采取强硬立场反对它
  • 工程师之间的沟通越来越成为一个问题(无论是纯粹的噪音还是缺乏沟通)。这包括与直接文档的随意交谈

我也忽略了任何分析/工具集成。部分原因是我认为,如果您将 Fisheye 与其他任何东西进行比较,您还应该看看维护 Fisheye 与另一种解决方案相比需要多少额外的工作,但也因为我从未使用过超过一次一个 Atlassian 产品。

在您的情况下,我还会查看 Jira/Fisheye 集成部分,看看在查看其他商业选项时是否需要(或根本不需要)该功能集。

关于java - FishEye 可以做什么我们无法从其他工具获得的 git 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895346/

有关java - FishEye 可以做什么我们无法从其他工具获得的 git 存储库?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  4. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  5. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  6. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  7. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  8. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  9. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  10. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

随机推荐