我目前有两个分支机构,我正在研究.由于软件更新,我必须完全更改文件夹结构.因此我在两个分支中移动文件.现在我达到了一个点,我想将我的工作分支合并到我的主分支中.
问题是存在合并冲突,告诉我文件仅由一个分支(added by them或added by us)添加.问题是两个分支都添加了该文件.
例如,我有一个纹理textures/texture1.png.主分支刚刚将其移动到正确的位置(之前misc/textures/texture1.png).工作分支将其移动到完全相同的位置并在之后进行编辑.此文件的合并冲突说:
added by us: textures/texture1.png
Run Code Online (Sandbox Code Playgroud)
关键是这不是我想要的文件!我想要来自其他分支的文件!
当我做
git checkout --theirs textures/texture1.png
Run Code Online (Sandbox Code Playgroud)
我明白了
error: path 'textures/texture1.png' does not have their veresion
Run Code Online (Sandbox Code Playgroud)
但是这个文件确实存在!我最近加了!这就是我想要的文件
我该如何解决这些冲突?
(如果需要更多信息!)
两个问题:
我试图在所有提交之前提交一个提交.
最底层的提交有660fb2a76211f36ec9a67d0454a90eab469e9fd0SHA.当我输入git rebase -i 660fb2a76211f36ec9a67d0454a90eab469e9fd0每个提交但最后一个提交显示在列表中.
我真的需要这个提交出现所以我可以把第一个提交作为最后一个!
当我把第一个提交作为第一个提交在列表中时(意思是第二个提交总共,因为第一个提交不在上面提到的列表中)我得到一个错误:error: could not apply b722c76... v1.4.3 BEAT release
我只是从列表的底部剪切并放入它到顶部!我没有改变号码!
我也试了好几次.同样的结果.
到目前为止就是这样.如果您有疑问请继续问!
我刚刚发现了我项目的旧备份.这些备份是在我使用git之前创建的.
我现在想将它们作为旧提交添加到我的存储库中.这意味着我必须将这些提交放在所有其他提交之前.
现在有几个问题:
如果不清楚,请提及.我会解决这个问题!
最后一件事:
我已经在GitHub上发布了这个.我主要使用他们的软件来提交提交.那我怎么把它推回GitHub呢?
因此,首先,我知道您可以在不同的构建系统上使用各种影子插件将已编译jar的所有引用重定位。我知道它的工作原理,并且已经在使用它。但是我遇到了一个问题,我在编译时无法做到这一点。
我将简化情况,以便更容易理解(但如果您感到好奇,我将在底部解释整个情况)。
我正在为两个不同(但相似)的系统(一个罐子,全部)编写一个插件。这些平台负责启动基础软件并加载/启动所有插件(因此,我无法控制应用程序,包括启动参数)。
平台A为我提供了一个库(我们称之为com.example.lib)。平台也是如此B。但它决定将其迁移到org.b.shadow.com.example.lib。
现在,在插件的核心代码(在两个平台上使用的代码)中,我都使用了库。现在,虽然我可以检测到在哪个平台上,但是我目前不知道如何在运行时将代码中的所有引用重写到库中,因此它可以在platform上运行B。
从我发现的结果来看,似乎需要使用自定义ClassLoader来实现这一点。这里的问题是我不知道我可以让运行时使用我的自定义ClassLoader。还是从哪里真正开始。
重要的一点是,这些重定位可能只会影响我的程序包中的类中的引用(me.brainstone.project例如)。
我使用(并已着色)的另一个依赖项使用ASM和ASM Commons,因此,如果有可能使用它们,那就太好了!
因此总而言之。我想在运行时仅将我类中的引用(对其他类)重新定位。
编辑:
在我的整个(原始)帖子中,我只谈论过一个库,但我想指出的是,我将针对服务器库进行此操作。而做这些事情需要我付出很大的努力(允许我为每个库(类或部分)编写包装器都被认为是一项巨大的努力),而这并不是我想要的。相反,我想要一种解决方案,它需要最少的插件才能将新库添加到混合中。
现在,这里是我的设置的详细说明。
拳头我想作为序言,我知道我可以为不同的平台创建两个不同的jar。我已经在这样做了。但是,由于令人惊讶的是,很多人似乎无法弄清楚这一点,而我又厌倦了一遍又一遍地解释它(那些不愿阅读文档来挽救生命的人),我想提供一个即使这意味着我需要花费大量的时间来使它工作,也要使用一个罐子(相对于不断地解释它,我更喜欢这样做)。
现在,我的实际设置如下所示:在平台A上提供了库,但在平台上提供了B不是。我知道其他插件经常通过将其阴影化来使用该库(许多未重新定位会导致各种问题)。因此,为了避免发生任何冲突,我下载了该库,使用jar-relocator在该jar中重新放置类,然后使用反射将其注入到类路径中。在这种情况下,如果库已重定位,我目前无法使用它。这就是为什么我想在运行时更改代码中的引用。它还说明了为什么我不想更改其他类的引用,因为我不想意外破坏其他插件。我也认为,如果我能以某种方式使用自己的东西ClassLoader,我不会ClassLoaderClassLoader
但是正如我所说,据我了解,该问题与简化版本中的问题相同。
我正在尝试检查批处理文件中的变量是否以"包含BETA某个地方开头并以其结尾").
可能吗?如果是的话,有人可以帮助我吗?
我有一个%c格式的日期(可能是任何其他),我需要在date命令中使用它.%c不是美国格式.它是德国人,因为它是德国服务器.这在美国服务器上也无法正常工作.(区域设置为德语或美国语)
这不起作用(包括错误):
user@server:~$ NOW=$(date +%c); echo $NOW
Do 19 Dez 2013 22:33:28 CET
user@server:~$ date --date="$NOW" +%d/%m/%Y
date: ungültiges Datum „Do 19 Dez 2013 22:33:28 CET“
Run Code Online (Sandbox Code Playgroud)
(日期:ungültigesGeatum"Do 19 Dez 2013 22:33:28 CET"= date: invalid date „Do 19 Dez 2013 22:33:28 CET“)
困难在于我不知道以后会使用哪种语言环境甚至whci dateformat,因为用户可以设置自己的格式.所以一个简单的特定解析解决方案真的不会起作用!
但是我该怎么办呢?
为了推广这个问题:
如果我有一个日期格式format1 (可以是任何或至少可以反转的格式)我可以使用日期来获取格式化日期.但是如果我想将它格式化为另一个日期(format2)我该怎么做呢?
使用除coreutils之外的任何其他解决方案都是没有意义的,因为我正在尝试为尽可能多的unix机器开发一个bash脚本.
DATE=$(date "+$format1")
date --date="$DATE" "+$format2" # Error in most cases!
Run Code Online (Sandbox Code Playgroud)
这是必需的,因为我有一个用户可以给出日期格式的命令.将显示此日期字符串.但在后面的步骤中,我需要将此日期字符串转换为另一个固定字符串.我可以操作命令将获得的whcih格式,我可以操作输出(或用户将看到的内容).
我无法运行该命令两次,因为它非常耗时.
我找到了类似解决方案的东西:
# Modify $user_format …Run Code Online (Sandbox Code Playgroud) 我最近开始使用gradle.我很快发现你可以通过以下代码段轻松告诉gradle自动检测当前版本:
def getVersionName = { ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe', '--dirty=-SNAPSHOT'
standardOutput = stdout
}
return stdout.toString().trim()
}
version = getVersionName()
Run Code Online (Sandbox Code Playgroud)
我发现你可以将这个版本号替换为你的资源,如下所示:
processResources {
expand(version: version)
}
Run Code Online (Sandbox Code Playgroud)
在文件中你想要的版本号是这样的(应该适用于任何变量)
version: ${version}
Run Code Online (Sandbox Code Playgroud)
替代工作很好,并按预期工作.
但是,当版本号发生更改且没有资源确实没有重新处理资源时,我遇到了问题,因此版本号不会在这些文件中更新.
我通过告诉每次运行这样的任务来解决这个问题:
processResources {
expand(version: version)
outputs.upToDateWhen { false }
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我觉得这是一个非常肮脏的黑客.
我想要的是一个逻辑,它会在资源文件发生变化时重新运行任务(就像它已经发生的那样),或者当版本号(或者我想要关心的任何变量或变量)发生变化时.
如果有人有兴趣在这里是链接到的实际文件:https://gitlab.crazyblock-network.net/BrainStone/MplManager/blob/master/build.gradle
这是回购协议:HTTPS://gitlab.crazyblock- network.net/BrainStone/MplManager
有没有办法确定我是否可以使用标准<filesystem>(可在所有支持C++ 17的现代C++编译器上<experimental/filesystem>使用)或旧编译器使用的标准.(例如g ++ 6.3,这是Debian Stretch上的当前标准版本)
知道哪一个使用是有意义的,因为第一次使用std::filesystem::xxx和后者std::experimental::filesystem::xxx.
我一直在用Java进行思考,遇到了一个相当难解决的问题。
仅给出方法的名称和的数组,Object如何找到该方法的最佳匹配重载?
我知道,在大多数情况下,只需检查参数列表的长度是否与数组的长度匹配,就可以快速排除许多重载。
接下来,我可以检查是否可以通过关联将数组的所有对象转换为期望的类型(我忘记了确切的方法名称,但是可以做到)。
但是,当多个方法与该过程匹配时,我遇到了一个问题。
假设我有以下两种方法:
public void doStuff(Collection<?> data) {
// Do stuff
}
public void doStuff(List<?> data) {
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
如果我要传递一个具有单个Set (或其子类型)对象的数组,则可以轻松排除第二个重载。因为Sets不是的子接口/子类型List。
ArrayList现在有了一个对象会很困难,因为an ArrayList既是a Collection 又是a List。
我知道如果我要使用常规代码,则编译器肯定会使用第二种方法,因为这是更好/更紧密的匹配。但是我该如何用反射做类似的事情?
我对各种解决方案都感兴趣,尽管我更喜欢使用JRE库,独立类或小型(单一用途)库的解决方案。
另外,我专门使用Java 8,尽管如果该语言的最新版本提供了更简单的方法来实现这一点,它们仍然非常受欢迎。
我有一个状态徽章图像,当相应的服务离线时返回 HTTP 代码 503(但网络服务器仍然在那里服务呼叫)。现在直接打开图片 URL 会正确显示图片,不管底层的 503 错误代码如何。但是在<img>标签中使用它会显示损坏的图像图标。如何在仍然允许图像本身返回 503 的同时防止这种情况发生?(外部服务依赖于此)
以下是一些屏幕截图来说明发生了什么:
注意:这发生在 Firefox 上。不是 Chrome
编辑:以下是一些请求的信息:
我想在Eclipse和IntelliJ的项目设置中使用gradle自动包含我在repo中发布的格式化程序设置(实际上是来自Google的格式化程序设置).
也许我可以修改生成的XML设置,但我不知道如何,也不知道IDE如何存储这些设置.