diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..ec9af644e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +#git archive --worktree-attributes --prefix=freecad-0.13/ --output=freecad.tar.gz HEAD +acinclude.m4 export-ignore +autogen.sh export-ignore +build.sh export-ignore +BuildAll.bat export-ignore +BuildRelease.ini export-ignore +BuildRelease.py export-ignore +configure.ac export-ignore +Makefile.am export-ignore +mkinstalldirs export-ignore +package export-ignore +fc.sh export-ignore +UpdateResources.bat export-ignore +*.sln export-ignore +WindowsInstaller export-ignore diff --git a/src/3rdParty/.gitattributes b/src/3rdParty/.gitattributes new file mode 100644 index 000000000..731e814fe --- /dev/null +++ b/src/3rdParty/.gitattributes @@ -0,0 +1,6 @@ +ANN export-ignore +atlas export-ignore +CxImage export-ignore +CoinBinding.sln export-ignore +boost.CMakeLists.txt export-ignore +zlib.CMakeLists.txt export-ignore diff --git a/src/App/Document.cpp b/src/App/Document.cpp index d70734bfa..1b9879ee6 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -1529,6 +1529,7 @@ DocumentObject* Document::_copyObject(DocumentObject* obj, std::maponFinishDuplicating(); copy->purgeTouched(); return copy; } diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 48c3f6751..70a91ffe1 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -181,6 +181,8 @@ protected: virtual void onChanged(const Property* prop); /// get called after a document has been fully restored virtual void onDocumentRestored() {} + /// get called after duplicating an object + virtual void onFinishDuplicating() {} /// python object of this class and all descendend protected: // attributes diff --git a/src/Build/CMakeLists.txt b/src/Build/CMakeLists.txt index a75f881e2..0be8d4204 100644 --- a/src/Build/CMakeLists.txt +++ b/src/Build/CMakeLists.txt @@ -18,16 +18,20 @@ if (WIN32) # TortoiseSVN FIND_PROGRAM(Subversion_WCREF_EXECUTABLE SubWCRev) + SET (RESULT 1) if(Subversion_WCREF_EXECUTABLE) EXECUTE_PROCESS(COMMAND ${Subversion_WCREF_EXECUTABLE} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/Version.h.in ${CMAKE_CURRENT_BINARY_DIR}/Version.h + RESULT_VARIABLE RESULT OUTPUT_STRIP_TRAILING_WHITESPACE) - else(Subversion_WCREF_EXECUTABLE) + endif(Subversion_WCREF_EXECUTABLE) + # No SVN repo + if (NOT RESULT EQUAL 0) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/SubWCRev.py --srcdir=${CMAKE_SOURCE_DIR} --bindir=${CMAKE_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_STRIP_TRAILING_WHITESPACE) - endif(Subversion_WCREF_EXECUTABLE) + endif(NOT RESULT EQUAL 0) else (WIN32) EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/SubWCRev.py --srcdir=${CMAKE_SOURCE_DIR} --bindir=${CMAKE_BINARY_DIR} @@ -37,16 +41,6 @@ endif (WIN32) # as fallback if Version.h isn't created for any reason if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Version.h) - file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Version.h - "/// Version Number\n" - "#define FCVersionMajor \"0\"\n" - "#define FCVersionMinor \"11\"\n" - "#define FCVersionName \"Dagoba\"\n" - "\n" - "#define FCRevision \"unknown\"\n" - "#define FCRevisionDate \"unknown\"\n" - "#define FCRevisionRange \"unknown\"\n" - "#define FCRepositoryURL \"https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk\"\n" - "#define FCCurrentDateT \"unknown\"\n" - ) + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/Version.h.in VERSION_INFO) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Version.h ${VERSION_INFO}) endif (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/Version.h) diff --git a/src/Doc/.gitattributes b/src/Doc/.gitattributes new file mode 100644 index 000000000..7a16aa129 --- /dev/null +++ b/src/Doc/.gitattributes @@ -0,0 +1,8 @@ +sphinx export-ignore +BuildDocDoxy.cfg.in export-ignore +BuildDocDoxyFull.cfg export-ignore +BuildSourceDoc.bat export-ignore +TiddlySaver.jar export-ignore +Document.mm export-ignore +FreeCAD.uml export-ignore +PythonClassModel.uml export-ignore diff --git a/src/Gui/iisTaskPanel/.gitattributes b/src/Gui/iisTaskPanel/.gitattributes new file mode 100644 index 000000000..56226ea50 --- /dev/null +++ b/src/Gui/iisTaskPanel/.gitattributes @@ -0,0 +1,4 @@ +tests export-ignore +src.pro export-ignore +config.pri export-ignore +taskpanel.pro export-ignore diff --git a/src/Mod/.gitattributes b/src/Mod/.gitattributes new file mode 100644 index 000000000..c04a39b72 --- /dev/null +++ b/src/Mod/.gitattributes @@ -0,0 +1 @@ +JtReader export-ignore diff --git a/src/Mod/Mesh/.gitattributes b/src/Mod/Mesh/.gitattributes new file mode 100644 index 000000000..b53efa0b7 --- /dev/null +++ b/src/Mod/Mesh/.gitattributes @@ -0,0 +1,2 @@ +GTSAlgos.cpp export-ignore +GTSAlgos.h export-ignore diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index 330ff5ca6..95aa455a7 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -1441,6 +1441,13 @@ void SketchObject::onDocumentRestored() } } +void SketchObject::onFinishDuplicating() +{ + Constraints.acceptGeometry(getCompleteGeometry()); + rebuildVertexIndex(); + onDocumentRestored(); +} + void SketchObject::getGeoVertexIndex(int VertexId, int &GeoId, PointPos &PosId) { if (VertexId < 0 || VertexId >= int(VertexId2GeoId.size())) { diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index eef799bf7..83802d83a 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -152,6 +152,7 @@ protected: /// get called by the container when a property has changed virtual void onChanged(const App::Property* /*prop*/); virtual void onDocumentRestored(); + virtual void onFinishDuplicating(); private: std::vector ExternalGeo; diff --git a/src/Tools/.gitattributes b/src/Tools/.gitattributes new file mode 100644 index 000000000..a5979911b --- /dev/null +++ b/src/Tools/.gitattributes @@ -0,0 +1,18 @@ +embedded export-ignore +encode export-ignore +ImageTools export-ignore +offlinedoc export-ignore +RegExp export-ignore +thumbs export-ignore +FreeCAD_widgets.sln export-ignore +wizard.cpp export-ignore +wizard.h export-ignore +BuildDoc.py export-ignore +BuildDocDoxy.cfg export-ignore +astylerc export-ignore +chm.css export-ignore +examplePy2wiki.py export-ignore +updateTranslations.py export-ignore +updatets.py export-ignore +wiki2chm.py export-ignore +WixFileTool.py export-ignore diff --git a/src/Tools/SubWCRev.py b/src/Tools/SubWCRev.py index dc8a4bc32..28835ce36 100644 --- a/src/Tools/SubWCRev.py +++ b/src/Tools/SubWCRev.py @@ -139,8 +139,38 @@ class BazaarControl(VersionControl): print "bazaar" class GitControl(VersionControl): + #http://www.hermanradtke.com/blog/canonical-version-numbers-with-git/ + #http://blog.marcingil.com/2011/11/creating-build-numbers-using-git-commits/ + #http://gitref.org/remotes/#fetch + #http://cworth.org/hgbook-git/tour/ + #http://git.or.cz/course/svn.html + #git help log def extractInfo(self, srcdir): - return False + # revision number + info=os.popen("git rev-list HEAD").read() + if len(info) == 0: + return False + self.rev='%04d (Git)' % (info.count('\n')) + self.range='%04d' % (info.count('\n')) + # date/time + info=os.popen("git log -1 --date=iso").read() + info=info.split("\n") + for i in info: + r = re.match("^Date:\\W+(\\d+-\\d+-\\d+\\W+\\d+:\\d+:\\d+)", i) + if r != None: + self.date = r.groups()[0].replace('-','/') + self.time = self.date + break + #self.time = time.strftime("%Y/%m/%d %H:%M:%S") + self.url = "Unknown" + info=os.popen("git remote -v").read() + info=info.split("\n") + for i in info: + r = re.match("origin\\W+(\\S+)",i) + if r != None: + self.url = r.groups()[0] + break + return True def printInfo(self): print "git"