From 38897d35a95932c3c17cacdcb31cffeafd710bc5 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Sat, 26 Apr 2014 17:30:12 +0200 Subject: [PATCH] Fixed issue #2179: Revision comparisons against HEAD should not generate temporary files (allow to compare to working tree) Signed-off-by: Sven Strickroth --- src/Changelog.txt | 1 + src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp | 4 ++-- src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp | 8 ++++---- src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp | 10 ++++++++-- src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h | 4 ++-- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Changelog.txt b/src/Changelog.txt index 32dc597d2..1e3280b4f 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -5,6 +5,7 @@ Released: Unreleased * Fixed issue #2152: Log window show whole commit in "View patch" * Fixed issue #2149: Can't search message in annotated tag or text in notes * Fixed issue #2172: Support num parameters of git blame -M and git blame -C + * Fixed issue #2179: Revision comparisons against HEAD should not generate temporary files (allow to compare to working tree) == Bug Fixes == * Fixed issue #2158: TortoiseGit sometimes crashes when doing Sync > Pull diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp index a6a9673df..3c695d5ff 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp @@ -1,7 +1,7 @@ // TortoiseGit - a Windows shell extension for easy version control // Copyright (C) 2003-2012 - TortoiseSVN -// Copyright (C) 2012-2013 - TortoiseGit +// Copyright (C) 2012-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -497,7 +497,7 @@ void CRevisionGraphDlg::OnMenuhelp() void CRevisionGraphDlg::OnViewCompareheadrevisions() { - m_Graph.CompareRevs(true); + m_Graph.CompareRevs(_T("HEAD")); } void CRevisionGraphDlg::OnViewComparerevisions() diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp index 449c83fa0..172e135f5 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphDlgFunc.cpp @@ -1,7 +1,7 @@ // TortoiseGit - a Windows shell extension for easy version control // Copyright (C) 2003-2011 - TortoiseSVN -// Copyright (C) 2012-2013 - TortoiseGit +// Copyright (C) 2012-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -428,10 +428,10 @@ STRING_VECTOR CRevisionGraphWnd::GetFriendRefNames(ogdf::node v, CGit::REF_TYPE } } -void CRevisionGraphWnd::CompareRevs(bool bHead) +void CRevisionGraphWnd::CompareRevs(const CString& revTo) { ASSERT(m_SelectedEntry1 != NULL); - ASSERT(bHead || m_SelectedEntry2 != NULL); + ASSERT(!revTo.IsEmpty() || m_SelectedEntry2 != NULL); // bool alternativeTool = !!(GetAsyncKeyState(VK_SHIFT) & 0x8000); @@ -440,7 +440,7 @@ void CRevisionGraphWnd::CompareRevs(bool bHead) sCmd.Format(_T("/command:showcompare %s /revision1:%s /revision2:%s"), this->m_sPath.IsEmpty() ? _T("") : (_T("/path:\"") + this->m_sPath + _T("\"")), GetFriendRefName(m_SelectedEntry1), - bHead ? _T("HEAD"): GetFriendRefName(m_SelectedEntry2)); + !revTo.IsEmpty() ? revTo : GetFriendRefName(m_SelectedEntry2)); CAppUtils::RunTortoiseGitProc(sCmd); diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp index 64bd79515..bbc289be6 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.cpp @@ -64,6 +64,7 @@ enum RevisionGraphContextMenuCommands ID_BROWSEREPO, ID_COMPAREREVS = 0x100, ID_COMPAREHEADS, + ID_COMPAREWT, ID_UNIDIFFREVS, ID_UNIDIFFHEADS, ID_MERGETO = 0x300, @@ -1479,6 +1480,8 @@ void CRevisionGraphWnd::OnContextMenu(CWnd* /*pWnd*/, CPoint point) AppendMenu(popup, IDS_REVGRAPH_POPUP_COMPAREHEADS, ID_COMPAREHEADS); AppendMenu(popup, IDS_REVGRAPH_POPUP_UNIDIFFHEADS, ID_UNIDIFFHEADS); + + AppendMenu(popup, IDS_LOG_POPUP_COMPARE, ID_COMPAREWT); } if (bothPresent) @@ -1538,9 +1541,12 @@ void CRevisionGraphWnd::OnContextMenu(CWnd* /*pWnd*/, CPoint point) break; case ID_COMPAREHEADS: if (m_SelectedEntry1 != NULL) - CompareRevs(true); + CompareRevs(_T("HEAD")); + break; + case ID_COMPAREWT: + if (m_SelectedEntry1 != NULL) + CompareRevs(CGitHash().ToString()); break; - #if 0 case ID_COMPAREREVS: diff --git a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h index 7fe2ba56f..5d1215b86 100644 --- a/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h +++ b/src/TortoiseProc/RevisionGraph/RevisionGraphWnd.h @@ -1,7 +1,7 @@ // TortoiseGit - a Windows shell extension for easy version control // Copyright (C) 2003-2011 - TortoiseSVN -// Copyright (C) 2012-2013 - TortoiseGit +// Copyright (C) 2012-2014 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -184,7 +184,7 @@ public: void SetShowOverview (bool value); void GetSelected (const CVisibleGraphNode* node, bool head, CTGitPath& path, GitRev& rev, GitRev& peg); - void CompareRevs(bool bHead); + void CompareRevs(const CString& revTo); void UnifiedDiffRevs(bool bHead); CRect GetGraphRect(); -- 2.11.4.GIT