标签: collaboration

Github:只读访问私人仓库

我正在Github上开发一些私有项目,我想在我的部署服务器上添加夜间cronjobs以从github中提取最新版本.我目前正在通过在每个部署服务器上生成密钥对并将公钥作为"部署密钥"添加到github项目来实现此目的.

但是,我最近发现这些部署密钥确实具有对项目的写访问权.因此,每个服务器管理员都可能开始编辑.此外,我可以将每个部署密钥仅添加到一个存储库,而我希望能够在同一个部署服务器上部署多个存储库.

有没有办法为Github上的选定用户提供私有存储库的只读访问权限?

git collaboration github readonly public-key

133
推荐指数
2
解决办法
7万
查看次数

在科学环境中编程的实践?

背景

去年,我在一所大学的物理研究小组实习.在这一组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据.对于前两个目的,这非常正常,但对于数据分析,这是一个真正的痛苦.最重要的是,每个人都大多是自学成才,因此编写的代码通常非常混乱(难怪每个博士都迅速决定从头开始重写所有内容).由于IT部门严格的软件和网络规定,版本控制未知,无法设置.

现在,实际上事情确实令人惊讶,但是自然科学中的人们如何进行软件开发呢?

问题

一些具体问题:

  • 您使用哪些语言/环境来开发科学软件,尤其是数据分析?什么图书馆?(例如,你用什么来绘图?)
  • 对于没有任何重要编程背景的人进行过培训吗?
  • 你有没有像版本控制和错误跟踪的东西?
  • 您将如何尝试为编程创造一个体面的环境,而不会对个别科学家造成太大影响(特别是物理学家是顽固的人!)

到目前为止的答案摘要

到目前为止的答案(或我对它们的解释):( 2008-10-11)

  • 似乎使用最广泛的语言/包:
  • 几乎所有受访者都使用版本控制; 错误跟踪和其他过程不太常见.
  • 软件木工课程是向科学家传授编程和开发技术的好方法.
  • 如何改善事物?
    • 不要强迫人们遵守严格的协议.
    • 自己设置一个环境,并向他人展示好处.帮助他们自己开始使用版本控制,错误跟踪等.
    • 查看其他人的代码可能会有所帮助,但要注意并非每个人都可以理解这一点.

collaboration physics scientific-computing

92
推荐指数
8
解决办法
7247
查看次数

任何用于本地化Android应用程序的协作工具/网站?

我的开源Android应用程序采用Android方式进行国际化,使用strings.xml文件.

社区有许多来自许多国家的人,他们愿意使用协作网站贡献/改进翻译.

Launchpad,但它只支持gettext格式,所以我们必须使用脚本,不是很方便.

什么网站方便翻译开源Android应用程序?
任何人都必须能够在没有任何事先批准的情况下开始贡献.

collaboration android localization

49
推荐指数
6
解决办法
2万
查看次数

在其他计算机上使用Emacs服务器和emacsclient作为其他用户

我知道在我调用(start-server)现有的Emacs会话后,我可以使用emacsclient -c(在同一台计算机上)创建连接到该服务器的新帧,这样创建的每个新帧emacsclient都可以访问同一组共享状态(例如缓冲区) ).

我发现的大多数文档都集中在"让我快速访问我的本地Emacs"用例,所以有两件事我还没有看到任何细节:

  1. 可以emacsclient -c访问由其他用户启动的Emacs服务器,还是仅通过硬连线检测我自己的用户启动的会话?

  2. Emacs服务器(直接或间接)是否支持远程连接?也就是说,有没有办法设置Emacs(可能涉及SSH),允许远程机器emacsclient -c上的调用访问我的Emacs服务器的本地状态?

(如果你还没有猜到,我最终想要做的是结合上面的两种技术来提供基本的协作编辑支持.)


这是一个现实世界的问题,所以这就是我正在使用的:

  • 必要的功能应该已经内置到Emacs中(23.3.1,64位).我可以从标准的Ubuntu存储库扩展到Emacs扩展,但我不愿意.(遗憾的是,我相信Rudel的规则.)
  • 没有新用户或用户欺骗.解决方案应与现有的一组用户帐户一起使用,用户不得伪装成其他用户(例如通过sussh).

如果它有所不同,机器在私有LAN上,安装(并运行)OpenSSH客户端和服务器,并且所有用户都可以连接到(他们自己的帐户)所有机器,但它们没有共享文件系统.


那么,有没有人知道Emacs服务器是否可以

  • 授予其他用户访问权限,或
  • 提供远程访问?

编辑

正如在rwb的回答中所评论的那样,很明显,通过运行emacsclient -c在本地打开的新窗口实际上是由远程 Emacs服务器进程创建的.也就是说,emacsclient只是触发服务器中的相关行为.这会导致显示设置不正确的一些问题,因为服务器通常无法访问本地桌面(请参阅下文).但是,如果我使用以下命令序列,我现在可以连接到远程Emacs会话:

在一个终端中,1.22.333.44IP地址在哪里remotehost:

ssh -t -X remotehost \
  "emacs -nw --eval
   '(progn (setq server-host \"1.22.333.44\" server-use-tcp t) (server-start))'"
Run Code Online (Sandbox Code Playgroud)

然后在另一个(在同一台机器上):

scp remotehost:.emacs.d/server/server /tmp/server-file
DISPLAY=localhost:10 emacsclient -c -f /tmp/server-file
Run Code Online (Sandbox Code Playgroud)

emacsclient命令使远程Emacs服务器(它找到其中的详细信息/tmp/server-file …

collaboration emacs remote-access emacsclient tmux

49
推荐指数
3
解决办法
2万
查看次数

协作环境中的实体框架中的迁移

我们有多个开发人员在使用Entity Framework 5.0的项目上工作.每个开发人员都使用自己的本地SQL 2012数据库,这样他就可以开发和测试而不会妨碍其他人.

起初,我们使用了自动迁移和基于代码的迁移的混合体.这根本不起作用,所以我们决定禁用自动迁移,只允许基于代码.我应该补充一点,我们再次启动了一个干净的数据库而没有_MigrationsHistory来自所有自动迁移的"损坏" .

所以现在的工作流程是:

  1. 开发人员更改了他的数据模型
  2. 是否add-migration <Name>将其应用于他的数据库update-database.
  3. 检查数据模型更改和迁移到Git.
  4. 另一个开发人员拉动,接收更改并将其应用到他的数据库.

到目前为止,这运作良好.然而,在今天之前,通常只有我做了迁移而其他人应用了它们.但今天有来自三个开发人员的迁移.我刚刚完成了这些迁移,做了一件update-database好事.

我也对自己的数据模型进行了更改,但是在结束时update-database它给了我一个警告,我仍然没有更新,所以我做了add-migration <my migration>.但是,当它支持迁移时,它给了我已经应用到数据库的所有迁移的更改.所以:它试图删除已经删除的列,尝试创建一个已经存在的表,等等.

怎么可能?我的假设是EF只是检查_MigrationsHistory表格并找出表格中没有的迁移,并按名称的时间戳顺序应用这些迁移.但显然不是,因为即使我撤消自己的更改并且我有一个干净的环境,它仍然抱怨我的数据库与模型不同步.但我只是将这些更改删除并应用到我的数据库中.它同步的.我也可以看到我刚才在_MigrationsHistory表格中应用的迁移.

我唯一能想到的是我在一个不会导致数据库更改的数据模型中添加了一个属性(我List<X>在数据模型中添加了一个Y,其中X是一对多关系中的多个.这不会导致数据库更改,因为X已经有一个外键到Y).可能是吗?如果是这样,那真的很脆弱,因为没有办法为此添加迁移,因为没有数据库更改,我也不知道如何解决这个问题.

我不知道如何处理这个问题,因为我当然可以编辑它所支撑的内容并删除已经应用于我的数据库的所有内容.但那又怎样?我检查它然后其他一些开发人员得到相同的消息,即使他的数据库不适用于我的新更改,支持他自己的更改,获取相同的无意义脚手架,编辑它,检查它然后下一个开发者得到它.它变成了一个恶性循环,与我们使用自动迁移时的情况类似,我认为我们已经通过切换到基于代码的方式来解决这个问题.我现在不能相信做正确的事情,这样做是一场噩梦.

我也尝试过添加我从同事那里逐一删除的迁移,update-database -t:201211091112102_<migrationname>但无济于事.它仍然给我错误的脚手架.

那么我们在这里做错了什么,或者EF根本不是为这样的协作而构建的?

UPDATE

我创建了一个可重现的测试用例,虽然为了模拟这个多用户/多数据库场景,它有点冗长的舞蹈.

https://github.com/JulianR/EfMigrationsTest/

有上述项目时重现的步骤(这些步骤也出现在代码中):

  1. add-migration Init
  2. update-database(在数据库'TestDb'上)
  3. 将连接字符串更改为指向TestDb1
  4. TestDb1上的update-database
  5. 在类Test上取消注释属性Foo
  6. add-migration M1将属性Foo添加到TestDb1
  7. 再次评论Test.Foo
  8. 将连接字符串更改为指向TestDb2
  9. 从项目中排除迁移M1,因此它不会应用于TestDb2
  10. 在类Test上取消注释属性Bar
  11. update-database将Init迁移应用于TestDb2
  12. add-migration M2将属性Bar添加到TestDb2
  13. 将连接字符串更改为再次指向原始TestDb
  14. 将迁移M1再次包含到项目中
  15. 在类Test上取消注释属性Foo
  16. 在类Test上取消注释属性SomeInt
  17. 更新数据库
  18. 添加迁移M3
  19. update-database,因为M3尝试将列Foo添加到已经由迁移M1添加的数据库TestDb中而获得错误.

以上是模拟三个用户,其中用户1进入他的数据库,另外两个用户也使用他的初始化来创建他们的数据库.然后,用户2和用户3都对数据模型进行自己的更改,并将其与应用更改所需的迁移一起添加到源控件.然后,用户1拉动用户2和3的更改,而用户1也自己对数据库进行了更改.然后,用户1调用update-database以应用用户2和3的更改.然后,他自己进行迁移,然后错误地将用户2或3的更改添加到脚手架迁移,这会在应用于用户1的数据库时导致错误.

c# migration collaboration entity-framework ef-migrations

44
推荐指数
3
解决办法
8378
查看次数

如何处理未记录其工作的明星开发人员?

有一位同事认真地了解他的东西,他是我曾经合作过的最聪明的人之一,但他:

  • 在他的主目录的小区域中工作,而不是在公共CVS存储库中工作
  • 没有记录他的代码
  • 没有评论他的代码,例如3,500 SLOC of C没有评论,也没有空行来解决问题
  • 经常使事情过于复杂,例如使用三个相互调用的shell脚本来完成一个简单shell脚本可以完成的工作.

也许这可能是那些认为"如果我是唯一知道这一点的人,他们无法摆脱我"的人之一?

有关该怎么办的任何建议?

BTW管理层了解情况并试图改变一切.

collaboration

43
推荐指数
12
解决办法
5249
查看次数

是否有Google Doc风格的UML工具?

我正在寻找一个协作的UML兼容工具.我在两个地理分布的团队的背景下工作,我们需要在设计的模型上一起工作.

是否有基于Web的UML建模工具与模型共享?

collaboration uml

37
推荐指数
1
解决办法
5万
查看次数

如何使用git-svn设置Subversion属性

有没有办法在git-svn创建的git存储库上设置subversion属性?

在我的情况,我想编辑的版本svn:external,svn:ignore以及 svn:executable.

但是,这样做的唯一方法似乎是涉及到subversion客户端的签出.有没有不必两次检查出库(一个时间Git和一次与SVN的属性)来编辑SVN属性的方法吗?

svn git collaboration git-svn

35
推荐指数
3
解决办法
9209
查看次数

当你的团队领导不称职时你到底做了什么?

您的一名团队成员被任命为"技术主管"或"团队领导",但他在技术上不称职,缺乏重要的领导技能.

技术上无能,我的意思是这个人不知道抽象类和接口之间的区别,不明白为什么要避免耦合,不理解凝聚力的概念,提供解决方案而不需要花些时间去思考,不明白为什么我们应该支持组合而不是继承,并且不会得到设计模式(除了单例模式).

此外,这个人有超过10年的"经验"(是的,我确实把这个词放在引号中,因为他给出了一个完全不同的经验体验).

我在和工作中的这个人打交道.它消除了我对这个职业的热情.

你怎么反应?你是做什么?

collaboration

32
推荐指数
9
解决办法
7625
查看次数

有没有办法使用Google Docs进行协作编程?

或者,如果没有,是否有任何好的IDE或程序专为实时协作编程而设计?

collaboration google-docs

31
推荐指数
5
解决办法
5万
查看次数