我们使用git和GitFlow作为版本控制工具,我遇到的问题是我确信有些人已经遇到过.
在一个功能分支中,一位同事做了一个提交,其中插入了许多无用的文件(所有二进制文件和IDE元数据文件).这个提交被推了.现在这位同事提交了一个pull请求,我不想将所有这些无用的文件集成到develop.
现在,我的git存储库非常庞大,git克隆成为一个漫长而枯燥的过程......
第一个(也是简单的)解决方案是从功能分支中删除这些文件,并在没有这些文件的情况下提交(或执行a revert commit).但是,如果我这样做,我的git存储库将保持相当大,因为对象(文件)将不会从历史记录中删除(因为git仍然知道它们!).
我想要的是"取消"这个提交.
下图显示了我的问题(最顶层的提交是最早的):
如何删除此提交并使我的git克隆再次快速?
PS:感谢GitGraphJS绘制git图形的有用工具!
在下面的代码中,有两个std::for_each使用boost:bind表达式的"等效"调用.指示的行编译,指示的失败行失败.我能在标准中找到的最佳解释相当于"因为我们这么说".我正在寻找"为什么标准表明这种行为".我的假设在下面.
我的问题很简单:为什么指示的行编译和等效的后续行无法编译(我不想因为"标准这样说",我已经知道 - 我不会接受任何给出这个的答案解释;我想解释标准为何如此说明.
注意:虽然我使用boost,但boost与此问题无关,并且使用g ++ 4.1.*和VC7.1重现了各种格式的错误.
#include <boost/bind.hpp>
#include <iostream>
#include <map>
#include <algorithm>
class Base
{
protected:
void foo(int i)
{ std::cout << "Base: " << i << std::endl; }
};
struct Derived : public Base
{
Derived()
{
data[0] = 5;
data[1] = 6;
data[2] = 7;
}
void test()
{
// Compiles
std::for_each(data.begin(), data.end(),
boost::bind(&Derived::foo, this,
boost::bind(&std::map<int, int>::value_type::second, _1)));
// Fails to compile - why?
std::for_each(data.begin(), data.end(),
boost::bind(&Base::foo, this,
boost::bind(&std::map<int, …Run Code Online (Sandbox Code Playgroud) 最近,我花了一些时间来研究在Windows上构建的升级版本1.44.0,两个iostream都支持zlib和bzip2压缩过滤器.出于各种原因,决定允许boost从源代码构建zlib和bzip2库.对于它的价值,但我认为不重要,我使用的MSVC版本是VC9(VS2008).另请注意,从我的肤浅检查来看,这个问题应该适用于在Windows上针对bzip2构建的iostreams的任何版本的boost.
通过指定-sZLIB_SOURCE=<PATH>和完全提升构建-sBZIP2_SOURCE=<PATH>.但是,有人注意到boost_iostreams*.dll库取决于libbz2.dll(而不是boost_bzip2*.dll),它不存在.然而,Boost成功构建了boost_bzip2*.dll.请注意,我使用通配符作为所有构建变体信息的占位符.
问题:某处存在对libbz2.dll的硬编码依赖.
我首先要说明我今晚感觉自己像个白痴.我试图通过Boost Serialization最低限度地重现我在RHEL5.6,gcc 4.1.2,boost 1.44.0下的工作问题.
我遇到这个问题的环境是Ubuntu Server(安装了dev软件包),gcc 4.7.2,以及boost 1.44.0的版本(针对系统编译器,软件包等).
我的代码编写得很干净,但是我得到了与boost::archive各种类型相关的无数未定义符号.在我的make上运行strace,我看到它接收了预期的boost_serialization库:
668 43569 stat("/usr/local/boost/1.44.0/lib/libboost_serialization.so", {st_mode=S_IFREG|0755, st_size=700481, ...}) = 0
669 43569 open("/usr/local/boost/1.44.0/lib/libboost_serialization.so", O_RDONLY) = 8
Run Code Online (Sandbox Code Playgroud)
我的makefile是:
default: test-app
all: test-app
BOOST := /usr/local/boost/1.44.0
CPPFLAGS := -fPIC -Wall -Wextra -Werror
INCDIRS := -isystem$(BOOST)/include
.LIBDIRS. := $(BOOST)/lib
.LIBS. :=boost_serialization
LIBS := $(foreach lib,$(.LIBS.),-l$(lib))
LIBDIRS := $(foreach dir,$(.LIBDIRS.),-L$(dir))
CPPFLAGS += $(INCDIRS)
base.o : base.cpp base.hpp
g++ $(CPPFLAGS) --compile $< -o $@ -g
derived.o : derived.cpp base.hpp derived.hpp
g++ $(CPPFLAGS) --compile $< …Run Code Online (Sandbox Code Playgroud) 快速概述我有一个Excel AddIn目标Excel 2013.AddIn有一个自定义RibbonUI,其中包含几个包含工作簿特定值的只读EditBox.使用MDI接口,Excel 2007和2010中的相同AddIn工作正常,但使用2013及其SDI接口.
使用简单的VSTO AddIn,我添加了一个带有EditBox的简单RibbonUI.出于测试目的,我只是想让EditBox反映它出现的窗口的Workbook.Fullname.就像我能够找到的那样,RibbonUI是一个单例,并且没有明显的方法来控制每个工作簿/窗口上的任何编辑控件的值.如果我打开2个Excel工作簿并来回切换(更新Excel.Application的ActiveWorkbookChanged属性上的值),则两个工作簿始终反映最新值.更糟糕的是,只有一个事件会触发,但两个窗口都会更新.
问题的关键在于我无法找到一种方法来控制每个窗口/工作簿中编辑控件的值.我在Excel 2013中找到了单文档界面的编程,除了它没有提到,或提供有关如何执行它的任何参考,只需要你.
我稍后会尝试使用一些示例进行更新,但我想知道是否有人在Excel 2013下使用SDI解决了这个问题?很明显,2013年内置的Ribbon控件可以执行此操作(例如,字体设置),但是文档在如何从用户AddIn完成类似操作方面似乎非常稀疏.
#include<iostream>
#include<string.h>
#include<utility>
#include<algorithm>
using namespace std;
struct xx
{
string x;
short int d;
int lcp;
};
bool compare(const xx a,const xx b)
{
return a.x<b.x;
}
int findlcp(string a,string b)
{
int i=0,j=0,k=0;
while(i<a.length() && j<b.length())
{
if(a[i]==b[j])
{
k++;
i++;
j++;
}
else
{
break;
}
}
return k;
}
int main()
{
string a="banana";
xx b[100];
a=a+'$';
int len=a.length();
for(int i=0;i<len;i++)
{
b[i].x=a.substr(i);
b[i].d=i+1;
}
sort(b,b+len,compare);
for(int i=0;i<len;i++)
cout<<b[i].x<<" "<<b[i].d<<endl;
b[0].lcp=0;
b[1].lcp=0;
for(int i=2;i<len;i++)
{
b[i].lcp=findlcp(b[i].x,b[i-1].x); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Android 应用程序,在这里我创建了一个自定义对话框,该对话框出现在设备的完整高度上,但我想从顶部和底部留出边距,所以我使用下面的代码设置了边距
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(alertDialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
lp.height = Utility.convertDPtoPixel(400, screen);
alertDialog.show();
alertDialog.getWindow().setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
上面的代码运行良好,但对话框出现黑色环境。
这是屏幕截图:
现在我想从对话框中删除这些黑色的环境。
下面是对话框的代码:
public void showDialog() {
AlertDialog.Builder builder;
final AlertDialog alertDialog;
//final Dialog alertDialog;
Context mContext;
mContext = screen;
LayoutInflater inflater = (LayoutInflater) LoginActivity.screen.getSystemService(LoginActivity.screen.LAYOUT_INFLATER_SERVICE);
layout = inflater.inflate(R.layout.countrylist, null);
LinearLayout rellayout = (LinearLayout) layout.findViewById(R.id.rellayout);
RelativeLayout closeAcessCodeDialog = (RelativeLayout)layout.findViewById(R.id.closeAcessCodeDialog) ;
ListView listview = (ListView) layout.findViewById(R.id.listview);
listview.setAdapter(new CustomAdapter1(LoginActivity.screen, countryList));
builder = new AlertDialog.Builder(LoginActivity.screen);
builder.setView(layout);
alertDialog = builder.create();
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); …Run Code Online (Sandbox Code Playgroud) android dialog android-layout customdialog android-alertdialog
我编写了一个简单的 HTML 代码,提交后它会执行 bash 脚本。该脚本位于正确的文件夹 (cgi-bin) 中。当我在 Firefox 上加载此页面时。它给出的错误为
/somePATH/cgi-bin/script.sh could not be opened because an unknown error occurred.
Run Code Online (Sandbox Code Playgroud)
是脚本权限的问题吗?我努力了:
chmod 777
Run Code Online (Sandbox Code Playgroud)
这是 HTML 代码的一部分。
<form action="cgi-bin/script.sh" method="post">
<input type="submit" value="Call my Shell Script">
</form>
Run Code Online (Sandbox Code Playgroud)
编辑:该脚本基本上只是打印日期:
#!/bin/bash
# get today's date
OUTPUT=$(date)
# script
echo "Content-type: text/html"
echo ""
echo "<html><head><title>Demo</title></head><body>"
echo "Today is $OUTPUT <br>"
echo "You can do anything with this Schell Script"
echo "</body></html>"
Run Code Online (Sandbox Code Playgroud) 这是我的情况:我正在尝试在WPF应用程序中建模的多对多关系,同时编辑关系的一方.情况是我有一组属于零到多组的用户.在编辑用户时,我使用ListViewwith SelectionModeset to Many.用户所属的组在列表视图中标记为选定项.
我的问题是:并非所有用户都有权修改用户的组成员身份.但是,他们应该能够查看它们.到目前为止,并不是一个真正的问题,因为当然,保存更改时会发生权利检查.然而,我想要做的是有效地禁用ListView(至少它能够修改SelectedItems),同时仍然保持其他基本功能(滚动,尤其是,我还在单击标题时实现了排序).这样,用户不会无意中进行他们不允许的更改,然后在他们去保存更改时遇到错误.
目前,如果用户没有足够的权利,我只是完全禁用ListView.但是,正如我所提到的,它有效地禁用了所有其他功能(滚动等),因此从用户体验的角度看是次优的.列表中的项目数(目前为几百个)需要滚动才能查看所有项目.
我已经尝试拦截各种鼠标事件(暂时忽略备用输入访问),并将事件标记为当用户单击ListViewItem并将事件标记为已处理时处理,但ListView仍然修改了选择.
我只是处理SelectionChanged事件而只是恢复以前的状态,但这似乎有点矫枉过正(但是,它可能是最简单易读的解决方案).
有人对如何完成这种行为有任何想法?