Questions tagged «workflows»

工作流程由一系列串联(连接)的步骤组成。重点放在流程范式上,其中每个步骤都遵循先例,没有延迟或空白,并且在后续步骤可能开始之前就结束了。

17
在日常工作中,您如何在“做到正确”和“尽快做到”之间取得平衡?[关闭]
我发现自己不时地反复思考这个问题。我想以正确的方式做事:编写易于维护的干净,可理解和正确的代码。但是,我最终要做的是在一个补丁上写一个补丁。仅仅因为没有时间,客户在等待,应该一夜之间解决错误,公司在这个问题上赔钱,经理在努力争取等等,等等。 我完全清楚,从长远来看,我在这些补丁上浪费了更多时间,但是由于这段时间要花几个月的时间,所以没人在乎。而且,正如我的一位经理曾经说过的那样:“如果我们现在不解决这个问题,我们不知道是否会长期存在。” 我确信我不是唯一一个陷入无尽的真实/理想选择周期的人。那么,我的程序员同伴如何应对呢? 更新:谢谢大家的有趣的讨论。令人遗憾的是,如此之多的人每天不得不在代码的数量和质量之间进行选择。仍然令人惊讶的是,许多人仍然认为有可能赢得这场战斗,所以谢谢大家的鼓励。

4
git的两阶段提交过程(登台)有什么好处?
我正在学习git,我注意到它有两步提交过程: git add <files> git commit 第一步是将修订内容放入所谓的“临时区域”或“索引”。 我感兴趣的是为什么要做出此设计决定,其好处是什么? 另外,作为git用户,您可以这样做还是只使用git commit -a? 我问这个问题,因为我来自不具备此功能的bzr(集市)。

16
每次更改的版本控制和错误跟踪开销是否过多?
我在一个CVS疯狂和Bugzilla坚果的地方工作。 每个发行版都有太多分支,以至于无法计数。每个人都在不断地自动合并。 这项工作没有流动性。一切都感觉锁步。即使是简单的事情,也需要25个步骤。这不像是在工厂生产线上,而是每天自己建立工厂。 情况示例: 要修复一个错误,首先我要获得一个干净的新虚拟机。然后,根据Bugzilla报告中描述的另一个分支,为该单个错误修复程序创建一个分支。我将分支安装在计算机上,进行设置。我修复了错误。我将其检入,将其和机器留给其他人进行测试。然后,我必须进入错误控制软件,并解释我的工作并编写测试用例以及所有步骤。最终,其他人将其与发行版合并。 无论错误有多微小,我都必须做所有这些事情。有时人们将多个错误的工作结合在一起,但是正如我所说的那样,分支太多了,这几乎是不可能的。 在其他任何工作中,我只想修复该错误即可。我什至不记得使用SCM,尽管我曾经做过的每一项工作都使用过SCM:这是因为在其他每项工作中,他们都以某种方式使其无法使用。 在这个过程中是否有障碍,并成为自身的终结?这甚至是工程吗?

5
在版本控制中从同一代码库维护两个单独的软件版本
假设我正在编写同一软件/程序/应用程序/脚本的两个不同版本,并将它们存储在版本控制下。第一个版本是免费的“基本”版本,而第二个版本是付费的“高级”版本,它采用了免费版本的代码库,并在其上扩展了一些额外的增值功能。任何新的补丁程序,修补程序或功能都需要找到进入两个版本的方式。 我目前正在考虑使用master和develop分支作为主要代码库(免费版本),以及使用边master-premium和develop-premium分支作为付费版本。对免费版本进行更改并合并到master分支(develop当然,在进行了彻底的测试之后),develop-premium通过cherry-pick命令将其复制到分支以进行更多测试,然后合并到中master-premium。 这是处理这种情况的最佳工作流程吗?有潜在的问题,警告或陷阱需要注意吗?是否有比我已经提出的更好的分支策略? 非常感谢您的反馈! PS:这用于存储在Git中的PHP脚本,但是答案应适用于任何语言或VCS。

6
何时使用工作流引擎?
过去,我曾以程序员的身份工作于某些工作流引擎,但从未明确说明为什么我们首先选择工作流引擎。作为程序员,我知道编写代码时至少有100种方法可以执行任何操作,但是只有少数几种是最好的! 我仍然不了解工作流引擎(或更确切地说是它们的概念)能最好地解决哪些用例,而不是设计一个支持DI的应用程序。我正在寻找与领域无关的用例的任何一般特征,其中工作流引擎是最好的选择之一。 所以我的问题是:需求的一般特征是什么,可以作为选择一个好的工作流引擎并对其进行编码的信号?
41 workflows 

6
如果我是唯一的开发人员,是否有在自己的仓库上使用拉取请求的目的?
因此,我从GitHub上的我的一个真实项目开始,进展顺利,想法的流动速度比我最初想象的要快得多。为了使事情井井有条,我设置了一些分支,以便可以分别开发不同的功能。 现在,当我将分支推送到GitHub时,在该部分中有两个按钮:Pull Request以及Compare最近推送到的分支的名称。我知道Compare按钮的用途,但是我不明白为什么要在自己的仓库中创建拉取请求。 有人可以解释一下我为什么要这么做吗?如果我是唯一的开发人员,则在我自己的仓库中发出拉取请求是否有用?
38 github  workflows 

9
如果使用多台计算机,如何同步所有内容?[关闭]
我现在有4到5台计算机,并且我需要一个更好的系统来同步所有内容。我经常使用git和github来同步我的文件以进行编程项目,但随后有数据库,.bash_profile文件,bash脚本等。有时,我不是从同步文件而是从一台计算机切换到另一台计算机。但这变得相当混乱。我的一些计算机是Ubuntu,其他的是OSX。 对于管理跨多台个人计算机的工作流有何建议?

2
像Git Flow这样的合并策略真的是一种反模式吗?
我的公司正在使用Git,并且正在使用一种特殊的分支方案-工作是在master中完成的,分支保留用于发布。只要在迭代中完成的所有工作都可以进入分支,就可以很好地工作,但是,如果出现关键的生产问题,我们必须确保将工作以某种方式进入两个分支。 最近,我们在那些分支机构中获得了一些“乐趣”。这一直是管理上的头疼事,要确保所有工作都进入每个分支,并且某个分支上已修复的一些错误只有在有人指出时才成为主要问题。 我前段时间遇到了Git Flow,我觉得这将解决我们的问题-代码不会一直渗透到发行版中,也不会渗透到整个发行版中。唯一的收获是我的领导说这种发展是一种反模式-疯狂发展了两个星期,然后花了三个星期来解决合并冲突。 我不确定自己是否同意,并且自提出以来,工作恢复正常了。直到最近,我们才有了一些重大的痛点。 我想知道-为什么将这种开发方案视为反模式? 是真的反模式?

11
源代码控制中的二进制文件
当针对嵌入式设备和其他奇异世界进行开发时,很可能您的构建过程将包含多个专有二进制文件,并使用它们的特定版本。所以问题是,它们是否在源代码管理中?我的办公室遵循“从源代码管理中签出包含编译代码所需的一切”的规则,这引起了一些严重的争论。 我反对这一观点的主要论点是使源代码控制数据库过大,缺少差异二进制文件(请参阅有关该主题的先前问题)。这违背了签出,构建,知道您具有先前开发人员想要的精确环境并且没有收集适当文件(具有特定版本的情况!)的能力。

4
使用Git Stash作为工作流是否是反模式?
最近,我一直在研究我和我的团队如何使用Git以及我们的工作流程如何工作。我们目前使用的功能分支工作流程似乎运行良好。 我还看到我们团队中的某些人使用基于git stash的工作流。工作流程如下所示: 在主分支上工作(如master) 随手提交 如果需要更改或切换分支,请将未提交的更改推送到存储中 更新完成后,将更改从隐藏项中弹出。 我应该提到,此工作流代替了功能分支工作流。在这里,开发人员只需要在一个分支上工作,而不是采用分支机构就可以按照自己的意愿推送/弹出堆栈。 实际上,我认为这不是一个很好的工作流程,因此分支比以这种方式使用git stash更合适。我可以将git stash的值视为紧急操作,但不能用于日常的常规工作流程中。 定期使用git stash是否会被视为反模式?如果是这样,可能会出现哪些具体问题?如果没有,有什么好处?

6
TDD和版本控制
我目前正在学习TDD,并试图在我的个人项目中将其付诸实践。在许多这些项目中,我还广泛使用了版本控制。我对这两个工具在典型工作流程中的相互作用感兴趣,尤其是在使提交保持较小的原则上。以下是一些示例: 我开始一个新项目,并编写一个简单的测试以创建一个尚不存在的类。即使测试甚至无法编译,我也应该在编写类之前提交测试吗?还是应该在提交之前编译测试所需的最少代码量? 我找到一个错误并编写测试以重新创建它。我应该提交失败的测试还是实施错误修复然后提交? 这是两个立即想到的例子。随时在您的答案中提供其他示例。 编辑: 我在两个示例中都假设,在编写测试之后,我将立即编写代码以使测试通过。可能还会出现另一种情况:我在使用TDD的项目上工作了几个小时而没有提交。当我最终提交内容时,我想将我的工作分解成小块。(即使您只想在单个文件中提交某些更改,Git也会使此操作相对容易。) 这意味着,我的问题是一样关于为什么承诺,因为它是何时提交。

8
在代码审查期间编写测试是否有益?
我的一个同事提出了一个我发现很有趣的想法。 假设我们不做TDD,那么由进行审核的人员在代码审阅期间编写测试是否有益? 对于这个问题,假定这是一个纯粹的学术项目,因此没有生命危险。而且该团队是4个人。每个人都知道该语言,并且熟悉所使用的所有工具/库/框架,并且可以编写测试。因此,基本上不是高级全职首席忍者工程师,而是体面的编码人员的人。 我发现的优点: 鼓励在审阅期间对代码有更深入的了解,以编写有意义的测试。 然后,您可以添加由正在测试的代码的作者进行的那些测试的代码审查。 我发现的缺点: 代码编写和测试之间的反馈循环不断增长。 编辑:我知道它不能在“正常”的Web应用程序上正常工作。我想到的是一个极端的案例,在该案例中,您需要实施复杂,科学的算法,这些算法都需要注意细节。让我们假设实现自己的图形库,NLP等。我想知道我们正在编写的代码是否与数据库隔离,并且这样很难理解却不会增加控制级别,而另一个需要了解源代码的人代码并进行有意义的测试,从而使整个过程不太容易受到那些不太明显的bug的影响,这些bug不会使应用程序崩溃,但最终会使您的结果混乱?

7
工作流工具的价值是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我是Workflow开发的新手,我认为我并没有真正了解“大局”。或者换句话说,这些工具目前并没有在我的脑海中“点击”。 因此,似乎公司喜欢创建用于描述流程的业务图纸,并且在某个时刻有人决定可以使用像状态机这样的程序来实际控制线和方框(如图表)中的流程。十年后,这些工具非常庞大,极其复杂(我的公司目前正在使用WebSphere,并且我参加了一些培训,这是一个怪兽,甚至像Activiti这样的工作流工具的所谓“极简主义”版本也是如此。庞大而复杂,尽管不如WebSphere afaict的野兽那么复杂)。 用这种方法最大的好处是什么?我可以理解简单的折线图和箱形图很有用,但是据我所知,这些东西目前是可视化的编程语言,带有条件和循环。在这里,程序员似乎在行和框层中进行了大量工作,在我看来,这就像是一种非常糟糕的,非常基础的可视化编程语言。 如果要走的那么远,为什么不只使用某种脚本语言呢?人们有没有为此把婴儿和洗澡水一起扔出去?线条和盒子的事物是否被带到了荒谬的水平,或者我只是不理解所有这些的价值? 我真的很想看到使用此技术的人们对此进行辩护并理解其用途的理由。我看不到其中的价值,但我认识到我对此也很陌生,可能还不太了解。
22 java  workflows  soa  bpm 

1
什么是适当的礼节和推荐的GitHub工作流程,以同时促进上游回购和从上游回购回馈?
我是GitHub和VCS的新手。我多年来一直使用各种语言进行编程,但是我一直在自定义项目(未公开发布)中一直独自工作。我最近开始在我正在研究的项目中使用从GitHub下载的jQuery UI小部件。该存储库不再由原始作者维护。另一个fork已合并了一些原始的请求请求。这是我分叉的那个。 我发现了几个错误,并提出了相应的修复程序。我想提供这些修复程序,但是我还想作很多其他更改,供我们自己使用,这些更改将破坏某些现有功能。另外,我想从另一个分支中引入一个想法。 我仍在学习GIT和GitHub,并试图找出解决所有问题的最佳方法。我已经阅读了很多有关不同概念/任务的文章(在这里,SO,GitHub帮助页面,Pro Git):工作流,合并,拉取请求,挑选,重新设置,分支。我的灰质是游泳,所以我需要开始这样做,这样我才能更好地了解自己阅读的内容。 主要问题: 我想(在某处)我读到您一次只能在一个分支上有一个请求请求。那么这是否意味着我应该为每个错误提供一个单独的分支,然后为每个错误执行一个单独的提取请求? 我想清理空白问题,而且我似乎还记得读过,最好在单独的提交中执行此操作。我应该在我的主数据库还是在另一个分支中进行此操作?我不想对如此琐碎的事情进行拉取请求,但是如果我在分支之前进行空格更改,这会影响对错误修复的拉取请求吗?一些fork进行了空格清理,这实际上使diff变得毫无用处。 我当时想用叉子创建问题,以作为记录bug的一种方式,即使我已经针对它们进行了修复。这是一个好主意吗?如何将问题,提交和合并合并到主节点?如果我向上游发出拉取请求,我的问题也会出现在上游还是会丢失该文档链接?我无法针对上游仓库打开问题(没有问题标签)。 在我想使用他的想法时,最好的办法是赞扬另一个叉子作者?我无法完全使用他的代码,尤其是因为他的更改是针对较旧版本的上游应用的,并且与我的其他更改不兼容。但是我想用这个主意,我想在应得的信贷额上给予好评。我应该只在提交消息中链接到他的回购(或个人资料或特定提交)吗? 更改自述文件和主文件顶部的DocBlock的礼节是什么?可以进行更改,添加我的名字,添加指向我的repo和演示的链接,删除指向原始演示的链接(因为我的fork最终将与原始版本不兼容)吗?当然,我将保留原始作者姓名和许可证信息。作为记录,它已获得MIT许可。 作为从未使用过VCS的独立开发人员,我习惯于重写历史记录。我是一个完美主义者,喜欢事物要整洁。记录历史的想法使我有点紧张,我想第一次做对。我创建了一个新的供您玩耍/学习的仓库,但是我急于继续固定jQuery UI小部件,以便继续进行我的项目。

6
当数百名开发人员正在开发一个解决方案时的开发方法?
我们是一个由大约200名开发人员组成的组织,他们正在不断开发单个产品(使用版本控制Git),并计划在某个日期发布该产品。 由于开发人员数量众多,我们正在尝试创建“跨职能”团队,每个团队中约有10个开发人员,因此组织中大约有20个开发团队。 由于我们希望在主存储库中保持产品的连续“高标准”(意味着当开发人员进行拉动时,产品至少应是可编译的,等等),因此我们想使用某种质量保证。 我不太确定如何表达这个问题,但是我想知道是否可以为如此大量开发单个产品的开发人员提供一些开发方法的建议。 我们认为,范围的一端是允许每个开发人员直接提交到主存储库,但是我们担心由于开发人员/提交的数量过多,“主存储库”可能一直处于崩溃状态,这是由于我们不能为每次提交都提供苛刻的“质量门”。 频谱的另一端可能像是树或金字塔结构(我们认为是Linus Torvalds / Linux做到了),其中“主存储库”仅具有三个拉取源,这三个仅具有少数受信任的拉取源,依此类推但是,我们认为,采用这样的结构,为了进入“主存储库”,更改需要爬很长的链。另外,如果发生合并冲突,问题将落在“原始开发人员”之外的其他开发人员上。 陈述了所有这些背景信息和意见后,我们如何才能学习和阅读针对众多开发人员的推荐开发方法?大型组织(Microsoft,Facebook,Ubuntu等)如何组织其发展?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.