【问题标题】:Local Monticello repository本地蒙蒂塞洛存储库
【发布时间】:2014-09-03 10:30:38
【问题描述】:

我想在工作中运行一个本地的 Monticello HTTP 存储库,以便我们可以轻松地在同事之间共享代码。

有没有办法私下运行类似于 SmalltalkHub 的东西?

编辑:

我在这里尝试了所有选项,但它们似乎都不能顺利运行。让我回顾一下选项:

1) Apache 上的 WebDAV,遵循Stuart。我已经按照一些在线指南进行了尝试。我当前的 dav.conf 如下所示:

DavLockDB /tmp/DavLock
Alias /pharo /opt/data/pharo
<Location /pharo>
  Order Allow,Deny
  Allow from all
  Options Indexes MultiViews
  Dav On
  AuthType None
</Location>

我工作了几天。然后突然我无法阅读某个包的新版本。每当我在图像中编写一个版本并在另一个图像中读取它时,我都会收到异常ZnInvalidUTF8。我不知道为什么,可能是 WebDAV 列出了太多文件的问题?

2) 设置我的 FTP。它似乎有效,但是当我尝试在版本器中将此存储库设置为远程时,我得到MCFtpRepository doesNotUnderstnd: #koRemote

3) SqueakSource3,跟随Tobias。我尝试在 Pharo2 和 Pharo3 中运行这两个 Gofer 命令。在 Pharo2 中它根本不加载。在 Pharo3 中,或多或少一切正常。由于消息被弃用或删除,我不得不修复一些错误,但最终我能够创建项目并写入它们。

当我阅读时出现问题。显然 SS3 保留了某种内部缓存。结果就是我在项目页面看到的包列表和客户端拿到的包列表不一样。不同之处似乎是客户端需要一个简短版本的页面,例如http://localhost:8080/ss/MyProject/?C=M;O%3DD,而那里的结果始终少于完整页面http://localhost:8080/ss/MyProject

此外,即使在项目页面上,版本列表也会保持缓存,直到我导航到不同的项目。

4) SmallTalkHub,关注Sean。我已经尝试使用来自 INRIA 服务器的图像和来自 Pharo-VM-loader 建议的图像(它们可能相同)。

我不得不再次安装 Seaside,因为下载的图像中没有 ZnZincAdaptor。我现在可以启动 SmallTalkHub,但是一旦我尝试注册用户,就会收到错误 MessageNotUnderstood: receiver of "new" is nil。我无法跟踪此错误的来源(有没有办法打开服务器端调试器而不是在 Seaside 中返回 500?)。

出现此错误后,我在mongodb和界面中都可以看到一个用户,但我无法登录。

5) 使用文件树的 Git,正如 Kylon 所建议的那样。这将阻止我使用 MetaCello 来处理依赖项,并且看起来比其他选项更复杂。

在这一点上,我不知所措。 :-( 如果我想使用 Pharo,我需要能够与我的同事协作。使用开源存储库不是一种选择,至少现在是这样。

是否有一种简单、经过尝试和测试的方法来设置这样的存储库?

SqueakSource3 或 SmallTalkHub 会更好,这要归功于它们的用户界面,但我确实需要至少基本的协作。拥有一个可以在无头服务器上运行的选项也将是一大优势,如果这成为我们使用的工具,将无法在我的笔记本电脑上托管存储库。

【问题讨论】:

    标签: smalltalk pharo monticello


    【解决方案1】:

    Pharo Dev 邮件列表中的 this thread

    设置服务器:

    1. 下载 SmalltalkHub 图像 (https://ci.inria.fr/pharo-contribution/job/SmalltalkHub/)
    2. 在您的计算机上安装 mongodb(对于 Debian:apt-get install mongodb)
    3. 启动 SmalltalkHub 映像
    4. 评估:ZnZincServerAdaptor startOn:8080
    5. 访问http://localhost:8080/tools/hub,创建一个帐户和一个项目

    【讨论】:

    • 我在完成这项工作时遇到了问题。首先,我找不到ZnZincServerAdaptor。我已经尝试过ZnServer startOn: 8080,但它只是启动了一个带有默认空白页的服务器。你试过这样做吗?也许这只是一些愚蠢的事情,我是 Smalltalk 的新手
    • 我已经取得了一些进展,正如我在问题中所解释的那样。你有一些更详细的说明可以帮助我吗?
    • ZnZincServerAdaptor 位于 Zinc-Seaside。 Smalltalkhub的配置需要修复
    【解决方案2】:

    除了 Sean 的回答 - 如果您只想要一个 Metacello 存储库,并且不一定需要完整的 SmalltalkHub 东西,那么您只需要一个 WebDav 服务器。 Apache 可以正常工作,而且过去我什至成功地使用过 Confluence 的 WebDAV 支持(经过一些调整)。

    【讨论】:

    • 实际上我遇到了一个看起来无法调试的小问题。我已经能够使用这个 repo 在图像之间共享代码一段时间了。然后,突然之间,我无法共享特定软件包的新版本。每次我加载这个包的新版本(任何高于 8 的版本)我都会得到一个异常 ZnInvalidUTF8。你有什么建议我可以开始研究这个吗?
    • 你在Apache中设置了字符集吗?你的 mcz 中是否有宽弦(源中的变音符号?)
    【解决方案3】:

    除了其他答案:

    • 将您的版本存储在 DropBox 中效果很好!
    • 你也可以安装 SqueakSource3(像 SmalltalkHub,不需要 MongoDB):

      Gofer new
         url:'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
         package: 'ConfigurationOfSeaside3';
         load.
      ((Smalltalk at: #ConfigurationOfSeaside3) project version: #stable) load.
      Gofer new
         url:'http://www.squeaksource.com/MetacelloRepository';
         package: 'ConfigurationOfSqueakSource';
         load.
      ((Smalltalk at: #ConfigurationOfSqueakSource) project version: #bleedingEdge) load: #('All').
      

      然后启动您的适配器(例如ZnZincServerAdaptor startOn: 8080)并转到http://localhost:8080/instalSS

    【讨论】:

    • 你能给我推荐一张图片吗?我尝试在干净的 Pharo3 图像中执行此操作,它或多或少有效,但每当我尝试实际执行任何操作时,我都会收到异常、方法丢失和弃用警告。
    • 我没有将它与 Pharo3 图像一起使用。您可能可以从 Seaside All-In-One 开始,这应该可以节省我上面代码的前 5 行。
    • 我无法启动一键式图像(我使用的是最新的 Ubuntu)。我仍然可以从 Pharo 启动器中选择许多图像,其中有 Pharo2 的 Seaside 图像。我尝试启动它,并在输入installSS 上的表格后立即收到MessageNotUnderstood: ByteString&gt;&gt;withBlanksTrimmed。现在,我可以像在另一张图片中那样快速解决这个问题,但我想我会遇到上面列出的其他问题
    • 顺便说一句,我的主要问题是我在页面http://localhost:8080/ss/MyProject/?C=M;O%3DD 上获得的包列表(这是蒙蒂塞洛客户端请求的)与我在网络上看到的不同步客户。你有什么建议从哪里开始寻找解决这个问题?我猜它是某种缓存,但我找不到任何地方如何使其无效(并且可能禁用它,这里的流量会很小)
    • 嗯,有一个缓存,是的。应该有一个定期运行缓存更新的进程。并且缓存应该在每次提交时失效。请您在code.google.com/p/squeaksource3 提交错误?
    【解决方案4】:

    另一种方法是走流行的 Git 路线。我在我的项目中使用 Github,它运行良好,而 Git 本身在本地也运行良好。因此,如果已经熟悉 Git,那么它是一个非常好的选择

    您可以在这里找到更多信息https://ci.inria.fr/pharo-contribution/job/PharoForTheEnterprise/lastSuccessfulBuild/artifact/GitAndPharo/GitAndPharo.pier.html

    【讨论】:

      【解决方案5】:

      对于 Smalltalkhub 的糟糕体验,我们深表歉意。我已经对配置进行了一些修复,需要检查是否足够

      【讨论】:

      • 谢谢!我已经加载了最新的图像和最新的 ConfigurationOfSmalltalkHub (StephanEggermont.16),现在 Seaside 已经安装好了,我可以正常注册了。不过,当我尝试登录时,我得到了Oops! invalid username or password。如果这有帮助,我将 Ubuntu 14.04 与 MongoDB 2.4.9 一起使用(尽管我认为这不是 MongoDB 错误,因为所有 Mongo 测试都是绿色的)。
      • 我已经在邮件列表中询问过了。在我的 Mac 上,我遇到了同样的问题。我已将 Seaside 更新为 #'release3.1',但我可能错过了一些东西。您可能想检查用户是否已添加到 Mongo
      • 是的,我可以在 Mongo 中看到用户,他们甚至在主页上列出。只是登录失败。顺便说一句,我对 seaside 了解不多,但如果能够启用开发模式而不是返回错误代码(500、403 等),它会打开一个服务器端调试器,我可以在其中进行检查。数据并找出问题所在。你知道这是否可能吗?
      • 您现在正在部署模式下运行。在 /config 中,您可以将 /hub(在过滤器中)的异常处理程序从 WAErrorHandler 更改为 WADebugErrorHandler 以在您的图像中获取调试器
      • 我终于明白出了什么问题。这实际上很明显,但无论如何似乎存在路径问题。该应用程序部署在/tools/hub,但它尝试在/hub/login/ 发出AJAX 请求,得到404。在config 下我看到应用程序部署在tools/hub 下,而调度程序部署在@987654326 下@ 和 /hub/login 下的 ShLoginHandler。我不确定这意味着什么,但我无法直接访问 /hub (403),看起来联系 /tools/hub/login 应该是正确的做法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      相关资源
      最近更新 更多