我希望这个问题很常见,但对于我的生活,我似乎无法找到一个好的解决方案:
Project Foo需要第三方项目栏的来源(我无法控制)
Project Foo将Bar添加为子模块,因为这是解决此问题的Git解决方案
事实证明,Bar需要一些永远不会合并到上游的小补丁,因为它们非常特定于Foo
我可以“提交”补丁到Foo内的 。这是有道理的,因为这些补丁特定于Foo,不适用于Bar的其他用户。
似乎我必须提供用户每次运行的自定义脚本以修补其Bar副本(一个痛苦且非常脆弱),或者我必须托管(并始终保持最新)自定义我需要的每一个第三方存储库的副本(也很痛苦,对于小补丁来说似乎相当过分,对于Foo特有的更改似乎很奇怪)。
我应该用什么解决方案解决这个问题?我认为这很常见,但我感觉Git的“解决方案”是补丁总是在上游合并,这是非常不起作用的。
答案 0 :(得分:1)
你可以在Foo/Bar
子模块中 :
patch
分支,Foo
特定补丁应用于Bar
,patch
分支推送到该分支Bar
remote。请勿忘记返回Foo
,添加并提交新的Bar
SHA1(gitlink,special entry in Foo
index)并推送Foo
同样。
现在,每当您从原始遥控器(无法控制)更新(git fetch)Bar
时,请将patch
分支重新设置为origin/master
Bar
Bar
}}。 (然后,像往常一样,将Bar
推送到Foo
分叉,返回public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar cur_cal = new GregorianCalendar();
cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar
Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, cur_cal.get(Calendar.SECOND));
cal.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND));
cal.set(Calendar.DATE, cur_cal.get(Calendar.DATE));
cal.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH));
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pintent = PendingIntent.getService(MainActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
}
}
,添加,提交和推送