我有一个实体映射在NHibernate中,并使用SQL时间戳列作为版本号进行乐观并发控制.映射如下:
<class name="Entity" optimistic-lock="version" discriminator-value="0">
<id name="id">
<generator class="native" />
</id>
<version name="Version" column="Version" generated="always" unsaved-value="null" type="System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
...
<subclass name="ChildEntity" discriminator-value="1" />
</class>
Run Code Online (Sandbox Code Playgroud)
我正在测试当数据库中的一行中的数据在记录的获取和更新之间发生变化时会发生什么.为此,我正在直接针对表中正在由NHibernate更新的记录之一运行更新语句.此直接更新会更改表中记录的版本号.
正如所料,NHibernate托管更新不会发生在特定行上(这很好).但是,在提交期间不会抛出异常.我预计在提交事务时会发生StaleObjectStateException,以便我可以回滚事务并通知用户.这不是预期的行为吗?我错过了什么吗?
我提交事务的代码看起来像这样:
_session.BeginTransaction();
...
// load objects in session
IList<ChildEntity> toChange = _session.Find('some condition');
foreach ( var itemToChange in toChange )
{
itemToChange.Status = Status.Updated;
}
...
_session.Transaction.Commit();
Run Code Online (Sandbox Code Playgroud)
这些项目属于同一会话,所有工作都在一个事务中完成.ChildEntity是Entity基类的子类,它将optimistic-lock设置为version.
我经常向它添加新的宝石和功能。在我上次发布之前,我的一些代码在我的开发环境中崩溃了,我发现这是因为我的一些 gem(特别是 CarrierWave 和 jQuery)已经更新并且无法使用某些代码。
管理有关版本控制的 gem 的最佳方法是什么?有些人似乎说您应该始终在 Gemfile 中指定版本号......但是对于所有 gems 来说?一些?
我知道对于某些 gem,由于错误等原因,您可能必须存储版本号。但除此之外,在开发过程中,有时我会添加新的 gem,并且可能需要执行 abundle update来让新的东西正常工作,但随后不想破坏旧东西。
我有很好的测试,希望在投入生产之前发现很多错误。其他用户如何确保 gem 更新在开发时不会破坏完全不相关的功能?
我正在尝试查看名为 IP.Board 的新版本软件中所做的一些更改。但是,当我在本地存储库中运行版本 3.4.2 和 3.4.3 之间的 git show 时,有很多文件刚刚更新了版本号。
像这样:
- * IP.Board v3.4.2
+ * IP.Board v3.4.3
Run Code Online (Sandbox Code Playgroud)
有什么简单的方法可以忽略这是唯一更改的文件吗?我猜他们的版本构建器会自动更新所有包含文件中的版本号。
我正在尝试通过ManifestStaticFilesStorage. 当我上传到我的舞台服务器时,我得到一个Internal Server Error. 知道会发生什么吗?
我的base.py是我的基础设置,stage.py是我的舞台设置。回溯也包含在下面。
\n\n基础.py
\n\nPROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\nBASE_DIR = os.path.dirname(PROJECT_DIR)\n\nSTATICFILES_FINDERS = [\n 'django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n]\n\nSTATICFILES_DIRS = [\n os.path.join(PROJECT_DIR, 'assets'),\n]\n\nSTATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'\n\nSTATIC_ROOT = os.path.join(BASE_DIR, 'static')\nSTATIC_URL = '/static/'\nRun Code Online (Sandbox Code Playgroud)\n\n阶段.py
\n\nDEBUG = False\n\nSTATIC_ROOT = '/data/web/stage.sitename.com/web/static/'\nSTATIC_URL = '/static/'\n\nSTATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'\nRun Code Online (Sandbox Code Playgroud)\n\n追溯:
\n\nFile \xe2\x80\x9c/data/virtualenv/sitename/lib/python2.7/site-packages/django/core/handlers/exception.py\xe2\x80\x9d in get_exception_response\n\n98. response = callback(request, **dict(param_dict, exception=exception))\nFile \xe2\x80\x9c/data/virtualenv/sitename/lib/python2.7/site-packages/newrelic-2.70.0.51/newrelic/hooks/framework_django.py\xe2\x80\x9d in wrapper\n\n503. return wrapped(*args, **kwargs)\nFile \xe2\x80\x9c/data/virtualenv/sitename/lib/python2.7/site-packages/django/utils/decorators.py\xe2\x80\x9d in _wrapped_view\n\n149. response = view_func(request, *args, **kwargs)\nFile \xe2\x80\x9c/data/virtualenv/sitename/lib/python2.7/site-packages/django/views/defaults.py\xe2\x80\x9d in page_not_found\n\n45. body = template.render(context, request)\nFile \xe2\x80\x9c/data/virtualenv/sitename/lib/python2.7/site-packages/django/template/backends/django.py\xe2\x80\x9d …Run Code Online (Sandbox Code Playgroud) 我正在尝试将mercurial版本烘焙到我的Bazel文件中,以便我可以得到这样的东西:
# These I set manually, since they're "semantic"
MAJOR_VERSION = 2
MINOR_VERSION = 3
BUGFIX_VERSION = 1
# This should be the result of `hg id -n`
BUILD_VERSION = ?
apple_bundle_version(
name = "my_version",
build_version = "{}.{}.{}.{}".format(MAJOR_VERSION, MINOR_VERSION, BUGFIX_VERSION, BUILD_VERSION),
short_version_string = "{}.{}.{}".format(MAJOR_VERSION, MINOR_VERSION, BUGFIX_VERSION),
)
Run Code Online (Sandbox Code Playgroud)
这显然不是密封的,所以我知道这违反了Bazel的一些假设,所以我对其他选择持开放态度.
这里有一些可能的选择:
实际上hg id -n在Bazel分析期间运行,我不知道该怎么做.
在via命令行中传递构建版本,例如--define=build_version=$(hg id -n).不幸的是,这需要一个单独的命令来包装bazel build.
手动设置BUILD_VERSION.显然,这会很烦人.
有没有办法做#1?我还有什么其他选择?
我试着弄清楚最新版本的elasticsearch可以用于最新的Spring启动版本(目前它是1.5.9).我找到了矩阵,但似乎它已经过时了.另外我发现spring data elasticsearch 3.0.2.RELEASE支持5+ elasticsearch.所以问题是:
java versioning elasticsearch spring-boot spring-data-elasticsearch
我试图弄清楚如何将版本化的 Docker 容器发布到 Quay.io,但在他们的文档中没有看到如何这样做。从文档:
# Login to Quay.io
docker login quay.io (will now be prompted for username + password)
# Get your <containerID>
docker ps -l
# Tag that container by <containerId>
docker commit <containerId> quay.io/<myUsername>/<myRegistry>
# Now publish it to Quay.io
docker push quay.io/<myUsername>/<myRegistry>
Run Code Online (Sandbox Code Playgroud)
然而这让我很困惑:
1.0.0-SNAPSHOT, or 1.0-rc, or 2.0or3.1.6-G.A怎么办?我在哪里指定实际的标签名称/版本?docker push命令时,Docker 如何知道要发布哪个(标记/版本化)容器?根据我对 git 的理解,每次执行时都会git checkout发生以下两种情况之一:
但是,有几次我git checkout对远程分支(本地从未存在过)执行 a 操作,并且得到了过时的内容。然后我执行 agit pull并收到新的提交。
有人也遇到过这个问题吗?你知道为什么会发生这种情况吗?
要将文件上传到存储库,我使用以下 Java 支持的 WebScript:
public class CustomFileUploader extends DeclarativeWebScript {
private static final String FIRM_DOC = "{http://www.firm.com/model/content/1.0}doc";
private static final String FIRM_DOC_FOLDER = "workspace://SpacesStore/8caf07c3-6aa9-4a41-bd63-404cb3e3ef0f";
private FileFolderService fileFolderService;
private ContentService contentService;
private NodeService nodeService;
private SearchService searchService;
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
processUpload(req);
return null;
}
private void writeContent(NodeRef node, FirmFile firmFile) {
try {
ContentWriter contentWriter = contentService.getWriter(node, ContentModel.PROP_CONTENT, true);
contentWriter.setMimetype(firmFile.getFileMimetype());
contentWriter.putContent(firmFile.getFileContent().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
private NodeRef checkIfNodeExists(String fileName) {
StoreRef storeRef …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种将字符串 1.2.0 转换为 int 的方法,以便我可以增加最后一位数字。最终结果应该是 1.2.1
$values = '1.2.0'
$after = $values.split('.');
$result = [int]$after;
# TODO increment the last decimal value, result should be 1.2.3
$result
Run Code Online (Sandbox Code Playgroud) versioning ×10
git ×2
java ×2
alfresco ×1
bazel ×1
caching ×1
concurrency ×1
django ×1
docker ×1
file-upload ×1
git-checkout ×1
github ×1
gitlab ×1
increment ×1
nhibernate ×1
powershell ×1
rubygems ×1
spring-boot ×1
wagtail ×1