I have merge code from a branch to trunk using SVN merge tool (not the svn merge command but using UI). I use TortoiseSVN.
When I run following command svn propget svn:mergeinfo <<URL_to_trunk>> then I cannot see the merge information getting recorded in mergeinfo property.
Even if I use this command with branch URL then as well I cannot see the recorded merge info.
I read following line in SNV book.
The svn:mergeinfo property is automatically maintained by Subversion
whenever you run svn merge.
Does this mean that mergeinfo property would be updated only when merge is done using svn merge command from command line and not merge using UI?
If not then why I cannot see merge info using svn propget svn:mergeinfo <<URL_to_trunk>>?
To add to the previous answer, tortoise will also not record merge info if the "ignore ancestry" is checked
The svn:mergeinfo property should be correctly added to merged files even when using Tortoisesvn.
You should run the "svn propget" command on merged files in your working copy, to see the svn:mergeinfo property.
Related
We recently moved to git from svn (both using Eclipse). I am in the (perhaps bad) habit of writing my Java code first, getting everything to work and then going back and adding comments. In SVN this was easy. I would just create a Fisheye review with my Jira task. The review would have a list of all the files I changed and methods I added or modified. I would note it and abandon the review. Then I would edit all the files listed and add the comments.
However, Fisheye does not (I believe) work with git. I could do a git status to see the files I changed but the local branch is already updated so it will not list any files. And all it does is tell me I am something like one commit ahead of the remote branch but does not list any files.
Is there some way to see a lit of the files I have changed with git so I can add comments? And when I say I wait for my comments I really mean mostly for added classes and methods. If I do something like add a line or two to a method I will generally add the comment too.
changing comments on git commits is not that easy. Each git commit has a sha-checksum which also includes the previous git commit. If you change a commit you change the current commits sha-checksum. therefore you create a new commit. All following commits of your branch must now be rebased on top of this new commit.
The command line provides the git rebase -i [commitid] where you can do lots of modifications including changing comments on commits. I never did this with a GUI but egit might support that too. Just refer documentation on egits rebase feature.
I found out how to do this.
The "Synchronize Workspace" in eclipse appears to show all the changed files not yet pushed remotely. I have not done any pushes, so this showed me what files changed.
We are using Mercurial (+Tortoise Hg) as VCS and Kdiff as diff and merge tool.
Some files are merged automatically and sometimes this auto merge result is wierd:
public static Method()
<<<<<<< local
{
DoSmth();
}
=======
{
DoSmth2();
}
>>>>>>> other
Seems like kdiff has done nothing with unresolved conflict in file but marked it as resolved.
Maybe kdiff doesn't understand diff file format sometimes? Some bug in hg and kdiff integration?
Also seems that this problem appeared recently, may be the problem with a new version of hg/tortoise hg/kdiff?
We are using:
Windows 7 x64
TortoiseHg and Mercurial 3.6.1
Kdiff 0.9.98
From mercurial.ini:
[ui]
merge = kdiff3
[tortoisehg]
editor=VisualStudio
vdiff=meld
[merge-tools]
meld.executable = C:\Program Files (x86)\Meld\meld.exe
meld.priority = 1
meld.premerge = False
meld.args = $local $base $other
[diff]
git = True
Update:
Problem appears even with manual merge.
Steps:
Starting rebase
Tortoise Hg says: 'There are conflicts'
Clicking "Tool resolve", Kdiff opens
And here it is! Parent 1 (center column) contains 'dest', 'source' as a part of the file. But there were no such lines in this file.
Seems like HG gives to kdiff file with some diff info that Kdiff can't/mustn't understand.
It's a bug in Mercurial 3.6.0 and 3.6.1. It was fixed in 3.6.2.
resolve: restore .orig only after merge is fully complete (issue4952)
Quoting the original report:
Jonathan Little 2015-11-13 17:41:55 UTC
I have encountered the following problem introduced in Mercurial 3.6. I am running version 3.6+20151109 with TortoiseHG 3.6, but the problem appears to be in hg core (see my THG bug report: https://bitbucket.org/tortoisehg/thg/issues/4354) The behavior I'm seeing:
Set merge tool ([ui] merge in .hgrc/mercurial.ini) to internal:merge
Create a repository with two separate branches, with a change on each branch such that the changes conflict with each other.
Merge the two branch heads. internal:merge will leave the conflicting file with conflict markers.
Run "hg resolve --tool=kdiff3 ".
Expected result: KDiff3 correctly shows the shared ancestor content and the two conflicting revisions (see Expected.jpg).
Actual result: KDiff3 shows the shared ancestor revision and "other" conflicting revision correctly, but the local conflicting revision contains the merge markers from internal:merge (see Actual.jpg).
The problem occurs with THG's built in KDiff3 config, and with the built in KDiff3 config from mercurial/default.d/mergetools.rc. It does not occur with a barebones config consisting just of kdiff3.executable, but starts occurring when you add arguments and use $local. So it appears that the treatment of $local has changed to simply use the current local content of the file rather than the content on the merge parent from the local branch.
This behavior started with 3.6.0.
The merge result which you show looks very much like the result of another merge tool, namely internal:merge
As you can configure different merge tools for different filetypes or files - or explicitly give the merge tool for a certain merge - are you sure that you didn't use another merge tool than kdiff? Possibly a new tortoiseHG version (re-)defined some merge tool settings.
Verify the configuration of your merge tool in your configuration file. See https://www.mercurial-scm.org/wiki/KDiff3 for how it should look for kdiff3. Quote for convenience:
[extensions]
hgext.extdiff =
[extdiff]
cmd.kdiff3 =
[merge-tools]
kdiff3.args = $base $local $other -o $output
We are using Mercurial (+Tortoise Hg) as VCS and Kdiff as diff and merge tool.
Show it! I want to see screenshot of THG's Global Setting - TortoiseHG tab (or repository-specific settings of THG), or relevant part of ini-file (better, shorter). Here is part of my mercurial.ini with p4merge as global diff-merge tool
[ui]
merge = p4merge
...
[tortoisehg]
vdiff = p4merge
Some files are merged automatically and sometimes this auto merge result is wierd
<<<<<<< and >>>>>>> strings are signs for another merger: internal:merge3 with conflict markers
This is not generally recommended as Mercurial gets no direct feedback when merges are successfully completed, and it's not terribly user-friendly compared to modern tools.
You must configure selected tool properly: KDiff3 is GUI-tool, which will appear on screen every-time when merge can't be performed automatically (have conflicts) and it's your duty - perform hand-work of editing result in KDiff window
I am very new with git and repositorys and I have a problem. Me and my collegue were working on the same file.
He commited and pushed his changes.
I commited my changes
I pulled
Now I have conflicts and I want to solve them. How can I overwrite the conflicts so that my changes are on the file? I am working with Eclipse.
There is no easy way to resolve conflicts. But tools are available to make the process a little easier. Anyhow you will have to decide and manually make the changes so that both of your changes are available in the latest file.
Try: git mergetool
If you both edited separate parts of the file then the tool will automatically merge whereas if you both have edited the same part then some manual interaction is needed.
If you want Your changes you can use:
git fetch -p
git merge --ours
This will merge the remote with your local branches and in case of any conflict - use your version of code.
My question is related to this one. Basically, I checked out a file in my local branch and, later, I performed a merge from the main branch, which already had a newer version of this file. I find it weird that file##/main/branch/subbranch/LATEST still contains the older version of the file, from before performing the checkout. Shouldn't the merge operation also update this link?
For merging, I used this command:
cleartool findmerge /my_file_folder -nc -fver .../branch -merge
The cleartool findmerge will checkout and merge, but won't check in.
As long as you do not checkin, the extended path ##/main/branch/subbranch/LATEST won't reflect the result of that merge.
If a file is committed several times with various changes, how can I fetch one change at a time, i.e., one changeset at a time?
I use eclipse, subversion, and subclipse, and I can't change the former two for the time being (or the MS platform..).
In my Team/Synchronization view in eclipse (using subclipse), choosing the changeset model, a file seems to be listed only in the latest relevant changeset even if all changesets are listed. So an earlier changeset doesn't necessarily show the full set of files in the original commit, nor the original diff for a file in a commit.
Update: I'm thinking about using changesets for simplified code review, so I'd like the partial update represented for all the files commited in one changeset. It's easy to get diffs and specific revisions for specific files in eclipse, but I'd like to step through all the changes in one specific commit/ changeset in a practical manner.
As I'm sure you know, svn up will by default grab the latest revision of the file.
However, you can use the -r parameter to svn up to grab a particular revision of a file. So if you know a file was committed in revisions 5, 7, and 9, you could do this:
svn up -r5 myfile
svn up -r7 myfile
svn up -r9 myfile
I believe (but I don't have an installation of it in front of me) that Subclipse has a similar option, labeled something like "Update to Revision..."
Subversion does not support atomic changesets.
(Note: If anyone can prove me wrong, I'll happily switch accepted answer.)
I've compared Git and Subversion using TortoiseGit and TortoiseSVN (and looked at what is possible on the command line).
With both Svn and Git I can update to a certain revision, or see and update to different versions of only one file at a time.
With both Tortoise clients can I see individual commits (revisions) from the repository and look at changes between a revision and the previous revision. (Note that I can't seem to do this in Eclipse, ref the question.)
Only with Git, however, can I update to or cherry-pick an isolated commit. The closest I've seen to this functionality in Subversion is to update to head and then revert a certain revision with a "subtractive merge"...
Test setup: make a project, check out or clone the project, make 2 separate commits to repository from elsewhere, including at least one file that is modified in both commits.
Then, with Git: fetch remote changes.
Then, with both Git and Subversion: look at the log.