How to properly merge CEF 2623 into 2454-based project - chromium-embedded

I have a CEF-2454-based project that I wish to upgrade to 2623. However, I have made some changes to libcef needed for the project and I want to incorporate all changes made in 2623 without discarding my own changes. This raises me some questions:
What git merge strategy should I employ?
Can I build in my old 2454 directory, or I need to merge then build from scratch?
Should I merge 2526 then 2623, or I can directly merge 2623?
What is the proper way to incorporate a new CEF release into my own project?

Typical way is to merge your changes onto new CEF version. Unfortunately all other methods are more difficult.
You can try to take a diff between your changes and original CEF 2454, and try to apply that patch on 2623.

Related

Switching between branches in VS Code

I'm still getting the hang of VS Code.
I want to make a react app using 2 different GET API URL endpoints but the exact same UI. In essence, I want to change just the base URLs between the 2.
I've tried creating a new branch in VS code to make 2 separate files but once I make edits in the master branch, the changes reflect in the new branch also.
Is there a way of making a different stand-alone branch from the VS code?
I've searched through the forums to no precise avail and I'm not that good at git. Thanks.
It is likely that your changes are being shown when you switch branch because you haven't commited your changes to a branch before switching.
Let's say you are on the master branch and make some changes. You can create a new branch new-feature and change your current working branch to new-feature bringing your existing changes across. This is useful because sometimes you will start to carry out some work before realising the scope is a bit too big and should be it's own branch.
If you want to keep the changes you have made on your current branch, you need to "stage" your changes with git add your_filename.here (or git remove). Once you have added and removed all changed files you want to keep on that branch, you need to git commit them. This is the step that finally adds the changes to the version history.
Now when you change to new-feature branch, your changes on master will not be there.
There are a number of GUI applications that make the git model more intuitive such as SourceTree, Github Desktop, and SmartGit

When switching to Jenkins mid-project, how to build artifacts for old tags?

I'm working on a project that has already been going on for a while. Unless I am mistaken, part of the use of Jenkins is to store artifacts for desired builds (i.e., releases or tags). This is preferable to me because I don't want to store binaries in the VCS system (SVN).
Moving forward, I can tag successful builds through Jenkins, and the artifacts will be stored forever. But what about old tags? Is there any way I can build all of the previous SVN tags so that the artifacts are available to anyone who needs?
I guess I could make a separate build for each tag, but that would be very tedious and make it difficult to find the artifacts.
You can add parameters to the jenkins task, and have the parameter dropdowns populate from the SCM tags. You can then use the parameter variables in the URL for the scm pulls.
So, when you go to run a build task, you can select the tag, and the appropriate source will be pulled.
If this is inline with what you're envisioning. I'd be glad to expand.
You can create a parameterized build task, which will check out by tag to build. thus, you need only input the tag name at each build.
But I think you are mistaken -- Jenkins does store artifacts, but it does so more as a side effect of the build, and generally keeps only a couple of the last builds for disk space management. If you want to maintain a library of previous builds, you probably want something like artifactory.

Deploy a WPF application partially [duplicate]

I am using VS2008 to publish my application files using ClickOnce. I read somewhere that ClickOnce intelligently does only partial updates; meaning it only downloads files from the network share if the file has changed in subsequent updates. However, this wasn't working for me. So I did some research and stumbled upon this MSDN article - http://msdn.microsoft.com/en-us/library/ms404267.aspx. It says that if we build using VS, it doesn't perform the partial updates. Can anyone tell me why this is the case? If so, is there a way to atleast let the referenced dlls to be downloaded only for the first time. I am using Microsoft Practices Enterprise Library and some 3rd party controls (with huge Theme files).
Thanks,
Uniball
Partial updates work fine in ClickOnce even when building in VS. However, if you have a solution made up of a few projects (eg a couple of class library projects and an executable) then any time you rebuild all the projects the timestamp on the assembly files will change, even if the code hasn't. Since ClickOnce really only looks at the timestamps to decide whether a file needs updating, it'll pull down the (unchanged) assemblies as new files when the user updates.
The workaround is to pull any dependent projects out of your executable's solution file and build them separately. That means that any assemblies whose code doesn't change very often will only get pulled down to the client once. If you need to change the assembly, you simply open its solution and make the change, then reopen your executable's solution and rebuild that. The next ClickOnce update will pull down both the exe and the changed assembly.
Hope that's clear enough!

How to use TortoiseSVN to get files that under a specific version

Hi currenlty i'm start to use TortoiseSVN, before that i'm using CVS.
Assuming, we have concurrent changes on the same project and each of the changes need to release in different time.
In CVS, when we need to commit a file and we would write down some message in message text box(assume i put in CR00001) and then when we deploying the application, we just get all files that with message equal ='CR0001'. So we've no worry about wrong version to release.
Is there a way for me to do this in TortoiseSVN?
Please help, Thanks.
You can always use TortoiseSVN to update to a specific revision.
For what you're trying to do, though, consider creating a RELEASE branch of the code, then use svnmerge to manage the promotion of specific changesets.

Is there an easier way to merge Windows Forms .Designer files?

We just recently switched from TFS to Mercurial for our small team. The main project that 3 people work on is a Windows Forms application in C#. Every time you use the designer, even for simple changes, it does a whole lot of rearranging and changing to the .Designer file. If two people work on this file, even making simple changes, the merge is an absolute nightmare. Is there an easy way to solve this problem? In TFS, we turned off concurrent edits so we did not have this problem.
The problem is every time the code gen engine may generate code in different order!!! which makes merging a pain.
WinForm (.NET) designer, Swing (Java) designer rely on the code gen engine.
ASP.NET's designer.cs only contains backing field, which less likely to suffer.
WPF's backing field is generated in obj/*.g.cs, which is not required to keep in source control, so no merging problem.
Merges of these kind of files are always painfull... This is the reason why some "locking" extensions for Mercurial exists, so you can have the same workflow as with TFS if needed.
For example you can use the Lock extension written by Martin Geisler to lock .Designer files until the next push, doing so you will avoid any concurrent modification thus avoiding the merge also.
This is what I do:
Copy/Use .Desinger.cs from master/develop branch and open project in VS
Copy whole project (all files with .git) and checkout your_feature branch and open project in VS
now at this point you should have 2 instances of VS (one on master branch and one on your_feature)
Copy controls (ctrl+c) (in design view/mode) from one VS to another
not perferct solution but helps a lot

Resources